<?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>192991</bug_id>
          
          <creation_ts>2018-12-21 12:42:56 -0800</creation_ts>
          <short_desc>[WHLSL] Implement parser AST nodes</short_desc>
          <delta_ts>2019-01-11 16:39:39 -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>WebGPU</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>
          <dependson>192294</dependson>
          <blocked>192355</blocked>
    
    <blocked>192826</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>graouts</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>keith_miller</cc>
    
    <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1490439</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-21 12:42:56 -0800</bug_when>
    <thetext>[WHLSL] Implement parser AST nodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490442</commentid>
    <comment_count>1</comment_count>
      <attachid>357967</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-21 12:46:44 -0800</bug_when>
    <thetext>Created attachment 357967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490451</commentid>
    <comment_count>2</comment_count>
      <attachid>357972</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-21 13:10:03 -0800</bug_when>
    <thetext>Created attachment 357972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490456</commentid>
    <comment_count>3</comment_count>
      <attachid>357974</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-21 13:27:55 -0800</bug_when>
    <thetext>Created attachment 357974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491427</commentid>
    <comment_count>4</comment_count>
      <attachid>357974</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-03 08:34:15 -0800</bug_when>
    <thetext>Comment on attachment 357974
Patch

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

r=me with suggestions

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:62
&gt; +}

These could probably use comments
} // namespace AST

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:65
&gt; +    std::unique_ptr&lt;Expression&gt; m_increment; // nullable
&gt; +    std::unique_ptr&lt;Statement&gt; m_body;

You might consider using UniqueRef for the non-nullable ones.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFunctionAttribute.h:40
&gt; +typedef Variant&lt;NumThreadsFunctionAttribute&gt; FunctionAttribute;

using FunctionAttribute = Variant&lt;NumThreadsFunctionAttribute&gt;.
Also, a Variant of only one type?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:46
&gt; +    enum class EntryPointType {

Declaring storage types for enum classes used as member variables can save memory.  Here you only need uint8_t

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:55
&gt; +    Vector&lt;VariableDeclaration&gt;&amp;&amp; m_variableDeclarations;

Did you mean to have an r-value reference as a member variable?

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLParser.cpp:37
&gt; +namespace WHLSL {
&gt; +
&gt; +}

This file doesn&apos;t seem useful right now.  I&apos;m assuming it will be soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492800</commentid>
    <comment_count>5</comment_count>
      <attachid>357974</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-08 16:24:47 -0800</bug_when>
    <thetext>Comment on attachment 357974
Patch

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

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLFunctionAttribute.h:40
&gt;&gt; +typedef Variant&lt;NumThreadsFunctionAttribute&gt; FunctionAttribute;
&gt; 
&gt; using FunctionAttribute = Variant&lt;NumThreadsFunctionAttribute&gt;.
&gt; Also, a Variant of only one type?

Yep. We&apos;re going to add more in the future.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:55
&gt;&gt; +    Vector&lt;VariableDeclaration&gt;&amp;&amp; m_variableDeclarations;
&gt; 
&gt; Did you mean to have an r-value reference as a member variable?

Nope.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLParser.cpp:37
&gt;&gt; +}
&gt; 
&gt; This file doesn&apos;t seem useful right now.  I&apos;m assuming it will be soon.

https://bugs.webkit.org/show_bug.cgi?id=192355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493019</commentid>
    <comment_count>6</comment_count>
      <attachid>358721</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-09 12:00:13 -0800</bug_when>
    <thetext>Created attachment 358721
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493219</commentid>
    <comment_count>7</comment_count>
      <attachid>358780</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-09 22:43:02 -0800</bug_when>
    <thetext>Created attachment 358780
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493398</commentid>
    <comment_count>8</comment_count>
      <attachid>358820</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-10 12:45:30 -0800</bug_when>
    <thetext>Created attachment 358820
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493460</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-10 14:18:08 -0800</bug_when>
    <thetext>Committed r239844: &lt;https://trac.webkit.org/changeset/239844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493462</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-10 14:20:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/47190283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493571</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-10 19:54:53 -0800</bug_when>
    <thetext>Committed r239854: &lt;https://trac.webkit.org/changeset/239854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493884</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-11 16:39:39 -0800</bug_when>
    <thetext>Committed r239883: &lt;https://trac.webkit.org/changeset/239883&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357967</attachid>
            <date>2018-12-21 12:46:44 -0800</date>
            <delta_ts>2018-12-21 13:10:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192991-20181221124643.patch</filename>
            <type>text/plain</type>
            <size>210928</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3NWJlN2JmYzhkMWNi
MGQzY2QwZGU2NjNmNmRhNDExMjliYTBkOC4uMWNlMWE4ZGFmOGUwNGI0OWFiNjY2ZjZmZjc4MjUz
ODVkZDNhMWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxOC0xMi0yMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhbGwgdGhlIEFTVCBub2RlcyB3
aGljaCB3aWxsIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgcGFyc2VyLgorICAgICAgICBU
aGlzIHBhdGNoIHVzZWQgdG8gYmUgYSBwYXJ0IG9mIHRoZSAiY3JlYXRlIGEgV0hMU0wgcGFyc2Vy
IiBwYXRjaCBidXQgSSBzcGxpdCB0aGVtCisgICAgICAgIG91dCBpbiBvcmRlciB0byBhaWQgcmV2
aWV3aW5nLgorCisgICAgICAgIFRoZSBjbGFzc2VzIHdlcmUgbWVjaGFuaWNhbGx5IGNyZWF0ZWQg
dG8gbWF0Y2ggdGhlIHJlc3VsdCBvZiB0aGUgcGFyc2VyLiBUaGVyZSBhcmUKKyAgICAgICAgbm9k
ZXMgZm9yIHRoaW5ncyBsaWtlIEZvckxvb3BzLCBMb2dpY2FsTm90RXhwcmVzc2lvbnMsIERlcmVm
ZXJlbmNlRXhwcmVzc2lvbnMsCisgICAgICAgIFN0cnVjdHVyZURlZmluaXRpb25zLCBhbmQgdGhp
bmdzIGxpa2UgdGhhdC4gVGhlIGNsYXNzZXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhbnkgbG9naWMK
KyAgICAgICAgaW4gdGhlbSAtIHRoZXkgYXJlIGN1cnJlbnRseSBqdXN0IGNvbnRhaW5lcnMgdG8g
aG9sZCB0aGUgc3RydWN0dXJlIG9mIHRoZSBwYXJzZWQKKyAgICAgICAgcHJvZ3JhbS4gU29tZSBv
ZiB0aGVzZSBub2RlcyAobGlrZSBjb25zdGV4cHJzKSBhcmUganVzdCBWYXJpYW50cyBvZiB0aGUg
dmFyaW91cyB0aGluZ3MKKyAgICAgICAgdGhleSBjYW4gaW4gdGhlIGZvcm0gb2YuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlIHBhcnNlciBkb2Vzbid0IGV4aXN0IHRvIGNyZWF0
ZSB0aGUgbmV3IEFTVCBub2RlcyB5ZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbjo6QW5v
bnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJy
YXlSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBcnJheVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJh
eVR5cGU6OkFycmF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5
cGU6Om51bUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpBc3NpZ25tZW50RXhwcmVzc2lvbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0
cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0
aW9uQXR0cmlidXRlOjpCYXNlRnVuY3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkJhc2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpCbG9jayk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFuTGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJyZWFrOjpCcmVhayk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2Vt
YW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2
YXJpYWJsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
YWxsRXhwcmVzc2lvbjo6Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OkNvbnN0YW50RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVt
ZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bnRpbnVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29udGludWU6
OkNvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJl
ZmVyZW5jZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OkRlcmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6RG9XaGlsZUxvb3ApOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RF
eHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXI6OkVu
dW1lcmF0aW9uTWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHBy
ZXNzaW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZhbGx0aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RmFsbHRocm91Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OkZ1bmN0
aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbjo6dGFrZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uOjp0YWtlQXR0cmlidXRlQmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6dGFrZUVudHJ5UG9pbnRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnRha2VU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246
OnRha2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb246OnRha2VQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb246OnRha2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpGdW5jdGlvbkRlZmluaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpy
ZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpJbmRleEV4cHJlc3Npb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OkludGVnZXJMaXRlcmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4
cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6TG9naWNhbEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TG9naWNhbEV4cHJlc3Npb246OnR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246OkxvZ2ljYWxO
b3RFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpNYWtlUG9pbnRlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246OnJlc3RyaWN0ZWQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGU6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU6OndpZHRo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6ZGVwdGggY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlBhcmFtZXRlcjo6UGFyYW1ldGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBvaW50ZXJUeXBlOjpQb2ludGVyVHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbjo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXROZXdWYWx1ZUV4cHJlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbjo6c2V0UmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdW
YXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OlJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVmZXJlbmNlVHlwZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50aWM6
OlJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYzo6bW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZXNvdXJjZVNlbWFudGljOjppbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZXNvdXJjZVNlbWFudGljOjpzcGFjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6UmV0dXJuOjpSZXR1cm4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYzo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OlN0YWdlSW5PdXRT
ZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50
aWM6OmluZGV4IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0cnVjdHVyZURlZmluaXRpb246OlN0cnVjdHVyZURlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1
Y3R1cmVFbGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hDYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNo
Q2FzZTo6U3dpdGNoQ2FzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3dpdGNoU3RhdGVtZW50OjpTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OlRlcm5hcnlFeHByZXNz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlvbjo6VHlw
ZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
UmVmZXJlbmNlOjpUeXBlUmVmZXJlbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYWx1
ZTo6VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uOjpWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb246Om9yaWdpbiBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U6OlZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlOjp3cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xXaGlsZUxvb3AuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpXaGlsZUxvb3A6OldoaWxlTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTItMjAgIEp1c3RpbiBG
YW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBDb252ZXJ0IFdl
YkdQVUJpbmRHcm91cHMgaW50byBNVExBcmd1bWVudEVuY29kZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2MWVkMTI2
MTkxMDcwMTAzZjhlODdjODBlMzEwYzQxNGQzNDliNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFub255bW91c1ZhcmlhYmxl
RGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Bbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbihjb25zdCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAg
QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbihBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9u
JiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tlbiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYmQxYjM2NWYxOGM1NTRkZGJjNGYzZDE2ZDNjYjAxZWI2ZjE0MmI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIDogcHVibGlj
IFJlZmVyZW5jZVR5cGUgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlVHlwZShMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5
cGU+JiYgZWxlbWVudFR5cGUpCisgICAgICAgIDogUmVmZXJlbmNlVHlwZShXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoYWRkcmVzc1NwYWNlKSwgV1RGTW92ZShlbGVtZW50VHlwZSkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKKwor
ICAgIEFycmF5UmVmZXJlbmNlVHlwZShjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmKSA9IGRlbGV0
ZTsKKyAgICBBcnJheVJlZmVyZW5jZVR5cGUoQXJyYXlSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGU+
KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRU
eXBlKCktPmNsb25lKCkpOworICAgIH0KKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBcnJheVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGRhMjg0OGFmNGMwZGI5MGJlNTky
Mjc0NDQ5YWU2MzdhMTMwODVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlUeXBl
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5
cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAg
ICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5VHlwZShjb25zdCBBcnJh
eVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBBcnJheVR5cGUoQXJyYXlUeXBlJiYpID0gZGVmYXVsdDsK
KworICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50
czsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZT4oTGV4ZXI6
OlRva2VuKG1fb3JpZ2luKSwgbV9lbGVtZW50VHlwZS0+Y2xvbmUoKSwgbV9udW1FbGVtZW50cyk7
CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZT4gbV9lbGVtZW50VHlwZTsKKyAgICB1bnNpZ25lZCBtX251bUVsZW1l
bnRzOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTYzNGNjYTdiZmZhZjI1NTYyNThiMzJhYWU4NWYx
MmExNWFhNzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdo
dCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworCisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IG1fbGVmdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9y
aWdodDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzI0NGNhODJhOTExZGM1NjFlYTRiYmE4OTA0
ZThkMTg0ZWRmNjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAg
IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDog
bV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5C
YXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7CisKKyAgICBCYXNlRnVuY3Rpb25BdHRy
aWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7CisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NzMzNzJmMTM3MDE4MDA0
ZTNjNGQ1ZjIzMzM0NDE0NzQ0OTNiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBCYXNlU2VtYW50aWMgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgQmFzZVNl
bWFudGljKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0g
ZGVmYXVsdDsKKworICAgIEJhc2VTZW1hbnRpYyhjb25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0
ZTsKKyAgICBCYXNlU2VtYW50aWMoQmFzZVNlbWFudGljJiYpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMTcyNmEzMWEwNDgxNzVjMjkwNDllODIyZWM5MDIyYzdm
OTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCbG9jay5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFT
VCB7CisKK2NsYXNzIEJsb2NrIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgQmxv
Y2soTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVu
dD4+JiYgc3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKworICAgIEJsb2NrKGNvbnN0IEJs
b2NrJikgPSBkZWxldGU7CisgICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOwor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZTkwODgxYmQ3NzgzMjIwNWE2NGQ5MjU1MDgwYmNhMWQzODNkNjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Qm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBCb29s
ZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBCb29sZWFu
TGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsK
K307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MjUyMWFl
NTgzZjhhNDFmZGNjNjIzNTk1MWNmZTM2ODM1MDA5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIEJy
ZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShv
cmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsK
KworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7CisgICAgQnJlYWsoQnJlYWsmJikg
PSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJ1aWx0SW5TZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNDZkZjMyY2ZhYTJlNmJmZTQzZGZi
ZGIzMzA3OWMxYzRlOGIwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYyA6
IHB1YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVmFyaWFibGUg
eworICAgICAgICBTVkluc3RhbmNlSUQsCisgICAgICAgIFNWVmVydGV4SUQsCisgICAgICAgIFBT
aXplLAorICAgICAgICBTVlBvc2l0aW9uLAorICAgICAgICBTVklzRnJvbnRGYWNlLAorICAgICAg
ICBTVlNhbXBsZUluZGV4LAorICAgICAgICBTVklubmVyQ292ZXJhZ2UsCisgICAgICAgIFNWVGFy
Z2V0LAorICAgICAgICBTVkRlcHRoLAorICAgICAgICBTVkNvdmVyYWdlLAorICAgICAgICBTVkRp
c3BhdGNoVGhyZWFkSUQsCisgICAgICAgIFNWR3JvdXBJRCwKKyAgICAgICAgU1ZHcm91cEluZGV4
LAorICAgICAgICBTVkdyb3VwVGhyZWFkSUQKKyAgICB9OworCisgICAgQnVpbHRJblNlbWFudGlj
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVmFyaWFibGUgdmFyaWFibGUsIE9wdGlvbmFsPHVuc2ln
bmVkPiYmIHRhcmdldEluZGV4ID0gV1RGOjpudWxsb3B0KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKKyAgICAg
ICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5CdWlsdEluU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBCdWlsdElu
U2VtYW50aWMoY29uc3QgQnVpbHRJblNlbWFudGljJikgPSBkZWxldGU7CisgICAgQnVpbHRJblNl
bWFudGljKEJ1aWx0SW5TZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJsZSB2YXJp
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KKworcHJpdmF0ZToKKyAgICBWYXJp
YWJsZSBtX3ZhcmlhYmxlOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3RhcmdldEluZGV4Owor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMWJhODU2M2I0MWM0NGIzZTIzNmYwMjBhNGI2MTE2NzIxY2YzMDUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBDYWxsRXhwcmVzc2lvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDYWxsRXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4+JiYgYXJndW1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmln
aW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fYXJndW1l
bnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q2Fs
bEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxs
RXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
N2RjNzBiYTIwMTNlNmU0ZTU1YWM3OTIwYTA5NjFiY2I4YTMzMjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJl
c3Npb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
Q29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENvbW1h
RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgQ29tbWFFeHByZXNz
aW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENvbW1hRXhwcmVzc2lv
bihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fbGlzdDsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2E4
YjM2OWQ2YTkyYmY1OTk4MzNkYzQ1YzAwNDc4ZTIyNWI5ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCisj
aW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xJbnRl
Z2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCisvLyBGSVhNRTogbWFjT1MgU2llcnJhIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHB1
dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAorLy8gc28gdGhpcyBpcyBhIHdyYXBwZXIg
Y2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uIEFzIHNvb24gYXMgd2UgZG9u
J3QKKy8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2FuIGJlIG1pZ3JhdGVkIHRvIGEg
VmFyaWFudCBwcm9wZXIuCitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gOiBwdWJsaWMgVmFyaWFu
dDwKKyAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAg
IEZsb2F0TGl0ZXJhbCwKKyAgICBOdWxsTGl0ZXJhbCwKKyAgICBCb29sZWFuTGl0ZXJhbCwKKyAg
ICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgID4gewor
cHVibGljOgorICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJM
aXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAg
ICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAg
ICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3Zl
KGludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9u
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQorICAgICAg
ICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFs
LAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRM
aXRlcmFsJiYgZmxvYXRMaXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVn
ZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9h
dExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwK
KyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAg
ICAgICAgPihXVEZNb3ZlKGZsb2F0TGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0
YW50RXhwcmVzc2lvbihOdWxsTGl0ZXJhbCYmIG51bGxMaXRlcmFsKQorICAgICAgICA6IFZhcmlh
bnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAg
ICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKG51bGxMaXRlcmFsKSkKKyAgICB7Cisg
ICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9uKEJvb2xlYW5MaXRlcmFsJiYgYm9vbGVhbkxp
dGVyYWwpCisgICAgICAgIDogVmFyaWFudDwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAg
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAg
ICAgTnVsbExpdGVyYWwsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgICAgICA+KFdURk1vdmUo
Ym9vbGVhbkxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24o
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJiBjb25zdGFudEV4
cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkKKyAgICAgICAgOiBWYXJpYW50PAor
ICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwK
KyAgICAgICAgRmxvYXRMaXRlcmFsLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgQm9v
bGVhbkxpdGVyYWwsCisgICAgICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlCisgICAgICAgID4oV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkpCisgICAgeworICAgIH0KKworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzI0YTk4YjJj
YWJiMGY5ZWE4NWMwYmExZTA5MGE2NjA4ZGU4MjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSA6IHB1YmxpYyBOb2Rl
IHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xlZnQo
V1RGTW92ZShsZWZ0KSkKKyAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgPSBkZWZhdWx0OworICAgIENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9u
TWVtYmVyUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9r
ZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fbGVmdDsKKyAgICBTdHJpbmcgbV9yaWdodDsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI5NWE1
YTc3ODcyYWFkYjVlNGJhMjA3M2YzYmJhOTI3ZWQ2ZTM5MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGlj
OgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1l
bnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db250aW51
ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7
CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MjQzM2JhMjU5N2M1YmU1NjE1NTE3YjI3ZTM4N2E1YTY2ZWJhNTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBE
ZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5jZUV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiBtX3BvaW50ZXI7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxl
TG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwMjNkOGRjN2FmZjkyZTRlMjZmMjg0MDRkYjQ5NDkzMDM2MTJl
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1l
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBEb1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29u
ZGl0aW9uYWwpCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAg
LCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUo
Y29uZGl0aW9uYWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgp
ID0gZGVmYXVsdDsKKworICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxl
dGU7CisgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fYm9keTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRG90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0M2M2OWVlNTQxMTg5OWVj
MzE1ZmQ1MmVjMWNmYzY0NGFhZTc1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBEb3RFeHByZXNzaW9uIDogcHVibGljIFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgRG90RXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cmlu
ZyYmIGZpZWxkTmFtZSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1fZmllbGROYW1lKFdURk1vdmUo
ZmllbGROYW1lKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RG90RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKworICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1lOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjRkMDc1MTJjMzhjNzc3MDgyYmIyOTUwOGU1NTkxYmQyNDdjMGVlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJl
c3Npb24pCisgICAgICAgIDogU3RhdGVtZW50KExleGVyOjpUb2tlbihlZmZlY3RmdWxFeHByZXNz
aW9uLT5vcmlnaW4oKSkpCisgICAgICAgICwgbV9lZmZlY3RmdWxFeHByZXNzaW9uKFdURk1vdmUo
ZWZmZWN0ZnVsRXhwcmVzc2lvbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRl
bGV0ZTsKKyAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWE2NzBjZWJlYTBjZmU5NWU3ZGE4YjEyOTE0NTUxNTE5NDQ4MjQxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9u
TWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIFR5cGUgewor
cHVibGljOgorICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiYmIHR5cGUsIFZlY3RvcjxFbnVt
ZXJhdGlvbk1lbWJlcj4gbWVtYmVycykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUodHlwZSkpCisgICAgICAgICwgbV9tZW1iZXJzKFdURk1vdmUobWVtYmVycykpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRp
b24mKSA9IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZp
bml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tl
biBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
PiBtX3R5cGU7CisgICAgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBtX21lbWJlcnM7Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4MzQzYWI0YWRiMzhlMWFhNWQ1YjY5NDRjMGE5ODgzNGI0YWY1NjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5v
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7
CitwdWJsaWM6CisgICAgRW51bWVyYXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBT
dHJpbmcmJiBuYW1lLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6
Om51bGxvcHQpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZh
dWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9
IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworfTsK
KworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUz
MTRjZjIwODI5ODdlNTBmZTcwMDRkYjE2MWRiOWM4YjhiYjhkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24u
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFs
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRXhwcmVzc2lvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6
CisgICAgRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmln
aW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNz
aW9uJikgPSBkZWZhdWx0OworICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CisKKyAgICBMZXhlcjo6VG9rZW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0K
KworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzc0ZDhmOGQ5ZTA0
YTJjZDYwYzU1ODNmMjExM2E2ZjIzMjExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworY2xhc3MgRmFsbHRocm91Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoK
KyAgICBGYWxsdGhyb3VnaChMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogU3RhdGVt
ZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RmFsbHRo
cm91Z2goKSA9IGRlZmF1bHQ7CisKKyAgICBGYWxsdGhyb3VnaChjb25zdCBGYWxsdGhyb3VnaCYp
ID0gZGVsZXRlOworICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYmYxZGZiMDc2YzFhNzA1NjBjMmMyMWQ4ZWZiMDIwM2MxZjYxMDRkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRmxvYXRMaXRlcmFs
IDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIEZsb2F0TGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IEZsb2F0
TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlZmF1bHQ7CisgICAgRmxvYXRMaXRlcmFs
KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFiZGU5YzU4ZTBh
NTE0MTJlZTcwMmY3YmYwMDk5Yzg2MTUwOWQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBGb3JMb29wIDogcHVibGljIFN0YXRlbWVudCB7
CitwdWJsaWM6CisgICAgRm9yTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZhcmlhbnQ8VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4m
JiBpbml0aWFsaXphdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9u
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBpbmNyZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4p
KQorICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24oV1RGTW92ZShpbml0aWFsaXphdGlvbikpCisg
ICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShjb25kaXRpb24pKQorICAgICAgICAsIG1faW5j
cmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5
KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Rm9yTG9vcCgpCisgICAgeworICAgIH0K
KworICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOworICAgIEZvckxvb3AoRm9y
TG9vcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgVmFyaWFudDxWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2luaXRpYWxp
emF0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbjsgLy8g
bnVsbGFibGUKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmNyZW1lbnQ7IC8v
IG51bGxhYmxlCisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5OworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYmQ3MmQ0YTkwYzUxZGY3YTJiMGZmY2MxODMzMjg0MzZlMmI2NzBmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RnVuY3Rpb25BdHRyaWJ1dGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZT4gRnVuY3Rpb25BdHRyaWJ1dGU7Cit0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbkF0
dHJpYnV0ZT4gQXR0cmlidXRlQmxvY2s7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MDYwYWFhODQwYTc1OTBj
Mjg1MWZkYWZhMzhiYjc4ZGE4YTk4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJh
bWV0ZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0
aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBF
bnRyeVBvaW50VHlwZSB7CisgICAgICAgIFZlcnRleCwKKyAgICAgICAgRnJhZ21lbnQsCisgICAg
ICAgIENvbXB1dGUKKyAgICB9OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIE9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4m
JiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8
QVNUOjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2Nr
KSkKKyAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQorICAgICAgICAs
IG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQorICAgICAgICAsIG1f
c2VtYW50aWMoV1RGTW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBGdW5jdGlvbkRlY2xhcmF0
aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICBGdW5jdGlvbkRl
Y2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgTGV4ZXI6
OlRva2VuJiYgdGFrZU9yaWdpbigpIHsgcmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CisgICAg
QXR0cmlidXRlQmxvY2smJiB0YWtlQXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBXVEZNb3ZlKG1f
YXR0cmlidXRlQmxvY2spOyB9CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiYgdGFrZUVu
dHJ5UG9pbnRUeXBlKCkgeyByZXR1cm4gV1RGTW92ZShtX2VudHJ5UG9pbnRUeXBlKTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+JiYgdGFrZVR5cGUoKSB7IHJldHVybiBXVEZNb3Zl
KG1fdHlwZSk7IH0KKyAgICBTdHJpbmcmJiB0YWtlTmFtZSgpIHsgcmV0dXJuIFdURk1vdmUobV9u
YW1lKTsgfQorICAgIFBhcmFtZXRlcnMmJiB0YWtlUGFyYW1ldGVycygpIHsgcmV0dXJuIFdURk1v
dmUobV9wYXJhbWV0ZXJzKTsgfQorICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgdGFrZVNl
bWFudGljKCkgeyByZXR1cm4gV1RGTW92ZShtX3NlbWFudGljKTsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJs
b2NrOworICAgIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+IG1fdHlwZTsKKyAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+
IG1fc2VtYW50aWM7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVmMGIxZjA4MWEyMDUzMDVmNzY4ZDhhZmZj
NWFhNTY2YjFlZDNjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRl
Y2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2ssIGJvb2wgcmVzdHJp
Y3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNs
YXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKKyAgICAgICAgLCBt
X3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RnVu
Y3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWZpbml0aW9uKGNv
bnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCByZXN0cmljdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGVkOyB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sg
bV9ibG9jazsKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTElmU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRiMDhiMWEyYWY4NjAxODY0NmRh
OWU3Mzc1YTczOGQ3MmVmYzJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBJZlN0YXRlbWVudCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIElmU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0ZDo6dW5p
cXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBl
bHNlQm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCisgICAgICAgICwgbV9ib2R5KFdU
Rk1vdmUoYm9keSkpCisgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIElmU3RhdGVt
ZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Rh
dGVtZW50PiBtX2JvZHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9lbHNlQm9k
eTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YmI2YTBmMGRhYjE0ZDg4NjZlYzdmYjIyZmI4NmIwYzdlM2ZkMmRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW5kZXhFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitj
bGFzcyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsK
K3B1YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBiYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4mJiBpbmRleCkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKKworICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKKyAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmRleDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWNkMjUzNDZjNDMyOWY1NDY3MzRiNWNhMzdhZTFhY2I5MGM1MjhiYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2lu
Y2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgSW50ZWdlckxpdGVyYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgSW50ZWdlckxpdGVyYWwoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBpbnQgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBJbnRlZ2VyTGl0
ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBJbnRlZ2VyTGl0ZXJh
bChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fdmFsdWU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJmYjA0NzVkN2IyN2VhOWY1MDNmZjdhYWYyNzVjOWRkMjk1MmRiNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIExvZ2ljYWxFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIEFuZCwKKyAgICAgICAgT3IKKyAgICB9OworCisgICAgTG9naWNhbEV4cHJlc3Np
b24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBUeXBlIHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHJpZ2h0KQorICAg
ICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RG
TW92ZShyaWdodCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbV9sZWZ0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3Jp
Z2h0OworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5v
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTMzNDRmM2IwZDgwZjkzYzFlMjQ2YWZmMmYxMzU1
NGM0YTcxYzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIG9wZXJhbmQpCisgICAgICAgIDogRXhwcmVzc2lvbihX
VEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3BlcmFuZCkpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OworCisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+IG1fb3BlcmFuZDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
OWFjMjRkMjQ5YmQ0N2Y4ZDc0MmViZDk0MzNiOGY4MGVlMzI3MmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE0NmZlMjAzYmJiY2RiNmIxN2U0ODEyNmIwM2U1YTEzY2U2NDIzY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBN
YWtlUG9pbnRlckV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
TWFrZVBvaW50ZXJFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisg
ICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2ludGVyRXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtlUG9pbnRlckV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBtX2xWYWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGU2ZWJhNzAwZmIw
M2M0MzMxNDJkMDlkODIzYWM2MjRlN2NiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIEZ1bmN0aW9u
RGVjbGFyYXRpb24geworcHVibGljOgorICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBPcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OlR5cGU+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9w
dGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgcmVzdHJpY3RlZCkKKyAgICAg
ICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShhdHRyaWJ1
dGVCbG9jayksIFdURk1vdmUoZW50cnlQb2ludFR5cGUpLCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAg
LCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRl
OworICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHJlc3RyaWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YWRmZTJmZmJiN2Y4ZWUxM2NkMWMzYjFmMGI1YzFlZjk2ZTJkODlh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVB
cmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgTmF0
aXZlVHlwZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwg
VHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1f
dHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBOYXRp
dmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7
CisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YzRmMDA2MGMwNGQ3
NzIyZmU2NGIyYzMxNzI3YjU0YjJiMmUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgTm9kZSB7CitwdWJsaWM6CisgICAgTm9kZSgpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgfk5vZGUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBOb2RlKGNvbnN0IE5vZGUm
KSA9IGRlZmF1bHQ7CisgICAgTm9kZShOb2RlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTA1ZjJiM2ZiN2NkNzI4NzVhYmFhY2VmODgyMWVkZDJhMGI3YzZhOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRl
cmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTnVsbExpdGVyYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgTnVsbExpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IE51bGxM
aXRlcmFsKGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIE51bGxMaXRlcmFsKE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MzdlODY2OGUyY2ExOGY1N2U0YTJhNzVhNTM5ZTU2YThiNDMwODY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgeworcHVibGlj
OgorICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGRlcHRoKQorICAgICAg
ICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV93
aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9kZXB0
aChkZXB0aCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KGNvbnN0IE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOworICAgIE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBk
ZWZhdWx0OworCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1
bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGg7IH0KKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBtX3dpZHRoOworICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgIHVuc2lnbmVk
IG1fZGVwdGg7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUGFyYW1ldGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWFkNzE2N2IxY2JiZjEyMDQzZGEzMGQ1MGU2NTBkMDFlYmMwYjg1MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFBhcmFtZXRlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
UGFyYW1ldGVyIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBQYXJhbWV0ZXIoTGV4ZXI6
OlRva2VuJiYgb3JpZ2luLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgc3RkOjp1bmlxdWVfcHRy
PEFTVDo6VHlwZT4mJiB0eXBlLCBPcHRpb25hbDxTdHJpbmc+JiYgbmFtZSwgT3B0aW9uYWw8QVNU
OjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAg
ICwgbV90eXBlKFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkp
CisgICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+UGFyYW1ldGVyKCkgPSBkZWZhdWx0OworCisgICAgUGFyYW1ldGVyKGNv
bnN0IFBhcmFtZXRlciYpID0gZGVsZXRlOworICAgIFBhcmFtZXRlcihQYXJhbWV0ZXImJikgPSBk
ZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFs
aWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5
cGU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBtX25hbWU7CisgICAgT3B0aW9uYWw8QVNUOjpTZW1h
bnRpYz4gbV9zZW1hbnRpYzsKK307CisKK3R5cGVkZWYgVmVjdG9yPFBhcmFtZXRlcj4gUGFyYW1l
dGVyczsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZjVmY2JhYjgzYjAwNTZmNGEyOWJlZWRjM2Y5YmUzMTI0MGU5YjAyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9p
bnRlclR5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMUmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBQb2ludGVyVHlwZSA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKK3B1Ymxp
YzoKKyAgICBQb2ludGVyVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJl
c3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJl
ZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGFkZHJlc3NTcGFjZSksIFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qb2ludGVyVHlw
ZSgpID0gZGVmYXVsdDsKKworICAgIFBvaW50ZXJUeXBlKGNvbnN0IFBvaW50ZXJUeXBlJikgPSBk
ZWxldGU7CisgICAgUG9pbnRlclR5cGUoUG9pbnRlclR5cGUmJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3Jp
Z2luKCkpLCBTdHJpbmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9uZSgpKTsK
KyAgICB9CisKK3ByaXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkMjU3ZTQx
ZWNlM2ZkODQ2MjJlMzY1MmE0YmU2MjAxY2E1YWFlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBiYXNlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fYmFzZShXVEZNb3ZlKGJhc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fYmFz
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMzNmMDUyMjQ0MWJjMTNhMzIxMTcwOTYxNjJiMGZkZjhmNDAyYzRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlm
aWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2VudW0gY2xhc3MgUXVhbGlmaWVyIHsKKyAgICBOb2ludGVycG9s
YXRpb24sCisgICAgTm9wZXJzcGVjdGl2ZSwKKyAgICBVbmlmb3JtLAorICAgIENlbnRyb2lkLAor
ICAgIFNhbXBsZQorfTsKKwordHlwZWRlZiBWZWN0b3I8UXVhbGlmaWVyPiBRdWFsaWZpZXJzOwor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjI3ZWUxNTY4NjQ5NjcyOWFlZGVmMjIxN2JmNjA2
MTM5NWJlMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLyoKKyAqICAxLiBFdmFsdWF0ZSBt
X2xWYWx1ZQorICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFsdWUKKyAqICAzLiBF
dmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgorICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRv
IG1fbmV3VmFsdWUKKyAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xWYWx1ZQorICogIDYu
IEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgorICogIDcuIFJldHVybiB0aGUgcmVzdWx0Cisg
Ki8KK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitwdWJsaWM6CisgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsVmFsdWUpCisgICAgICAgIDogRXhw
cmVzc2lvbihMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3Zl
KGxWYWx1ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZShMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAg
ICAgICAgLCBtX25ld1ZhbHVlKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldE5ld1ZhbHVlRXhwcmVzc2lv
bihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJlc3Npb24pCisgICAg
eworICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3VmFsdWVFeHByZXNz
aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24oc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIG1fcmVz
dWx0RXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7CisgICAgfQorCisgICAg
c3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgp
CisgICAgeworICAgICAgICAvLyBUaGUgb25seSByZWFzb24gd2UgZG9uJ3QgZ2V0IHVzZS1hZnRl
ci1mcmVlcyBpcyB0aGUgZmFjdCB0aGF0IGV2ZXJ5IGluc3RhbmNlIG9mIFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24gaXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwLgorICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAo
bV9vbGRWYWx1ZSkpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZVJlZmVy
ZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIG9ubHkg
cmVhc29uIHdlIGRvbid0IGdldCB1c2UtYWZ0ZXItZnJlZXMgaXMgdGhlIGZhY3QgdGhhdCBldmVy
eSBpbnN0YW5jZSBvZiBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVSZWZlcmVu
Y2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fbmV3VmFsdWUpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworICAgIEFub255
bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24gbV9vbGRWYWx1ZTsKKyAgICBBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uIG1fbmV3VmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
IG1fbmV3VmFsdWVFeHByZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X3Jlc3VsdEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2I4ODU3YWRmOWQ4YWVlNDFmNWUzNWJlNmUzYTJm
ZjYxMWZhMDUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgUmVmZXJlbmNlVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5cGUpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYWRkcmVzc1Nw
YWNlKFdURk1vdmUoYWRkcmVzc1NwYWNlKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWZlcmVuY2VU
eXBlKCkgPSBkZWZhdWx0OworCisgICAgUmVmZXJlbmNlVHlwZShjb25zdCBSZWZlcmVuY2VUeXBl
JikgPSBkZWxldGU7CisgICAgUmVmZXJlbmNlVHlwZShSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworcHJvdGVjdGVkOgorICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBTdHJpbmcmIGFkZHJlc3NTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFR5cGU+JiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KKwor
cHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fYWRkcmVz
c1NwYWNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBtX2VsZW1lbnRUeXBlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWIzYjQzMGY0NDI3Y2Q5YWU0ODY1M2U5NGI4Zjk4Y2YyNWZjOWM2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlc291cmNlU2VtYW50
aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE1vZGUg
eworICAgICAgICBVbm9yZGVyZWRBY2Nlc3NWaWV3LAorICAgICAgICBUZXh0dXJlLAorICAgICAg
ICBCdWZmZXIsCisgICAgICAgIFNhbXBsZXIKKyAgICB9OworCisgICAgUmVzb3VyY2VTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIHNwYWNlKQorICAgICAgICA6IEJhc2VTZW1hbnRpYyhXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICAgICAgLCBt
X3NwYWNlKHNwYWNlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZVNlbWFu
dGljKCkgPSBkZWZhdWx0OworCisgICAgUmVzb3VyY2VTZW1hbnRpYyhjb25zdCBSZXNvdXJjZVNl
bWFudGljJikgPSBkZWxldGU7CisgICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNvdXJjZVNlbWFudGlj
JiYpID0gZGVmYXVsdDsKKworICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHVu
c2lnbmVkIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQorCitwcml2YXRlOgorICAg
IE1vZGUgbV9tb2RlOworICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9zcGFj
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDU0
OGVkYjYwZmVkNjgyN2IyYzU2YWFjMGY1YzU5MDhkYTE4NmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZXR1cm4g
OiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBSZXR1cm4oTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2YWx1ZSkKKyAgICAgICAgOiBT
dGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1
ZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflJldHVybigpID0gZGVmYXVsdDsKKwor
ICAgIFJldHVybihjb25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKKyAgICBSZXR1cm4oUmV0dXJuJiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
bV92YWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjA1MmI5MmVhMjY0NmZhMDBlNGFiZjgxMDk5YWI3YjU2YjMxMjY2NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNl
bWFudGljLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCisj
aW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3R5cGVkZWYgVmFyaWFu
dDxCdWlsdEluU2VtYW50aWMsIFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYywgU3RhZ2VJbk91dFNlbWFudGljPiBTZW1hbnRpYzsKKworfQorCit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2M1M2ZkNGI2MTM1ODgyYWYzMTcwZjAzODRhYmUxYWJm
ZTNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBC
YXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogQmFzZVNlbWFudGljKFdURk1vdmUo
b3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOTky
NzgxZTNhNDNmNGE1NjI1NWUxODhiYzRlZDA2NmExYzk2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6IHB1
YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAg
U3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2VtYW50aWMmJikgPSBkZWZhdWx0Owor
CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjk3ODZlNTFhNDQ5Mjg1MzA1Y2U3MTE2NmE3Yjdj
ODcxZDJlMjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YXRlbWVu
dCA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RhdGVtZW50KExleGVyOjpUb2tlbiYm
IG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVu
dChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZjY1N2Q1YjA5MjYxMWE2MWQwODE5MWU5ZGQ1ZmE4ZjdjMjYyNGEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHVibGljIFR5
cGUgeworcHVibGljOgorICAgIFN0cnVjdHVyZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRz
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUo
V1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUoc3Ry
dWN0dXJlRWxlbWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVE
ZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBT
dHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihT
dHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0cnVjdHVy
ZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVudHM7Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0cnVjdHVyZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODkzZDU5YmMxNzQx
MDA0M2JjMjI5NzY3ZDEyMDFiNmZmN2JmODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgi
CisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0cnVjdHVyZUVsZW1lbnQg
OiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlRWxlbWVudChMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VHlw
ZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRpYz4gc2VtYW50aWMpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fcXVhbGlmaWVy
cyhXVEZNb3ZlKHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQor
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2VtYW50aWMoV1RG
TW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN0cnVjdHVyZUVs
ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVy
ZUVsZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1l
bnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsK
KyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4g
bV90eXBlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2Vt
YW50aWM7Cit9OworCit0eXBlZGVmIFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PiBTdHJ1Y3R1cmVF
bGVtZW50czsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTNjZWZjNzJlMDBhZDFkMDNiYTBiZTMwZDIyN2U5OWMwZGVhMzA2MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIFN3aXRjaENhc2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBT
d2l0Y2hDYXNlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKKyAgICAgICAgLCBt
X2Jsb2NrKFdURk1vdmUoYmxvY2spKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2l0
Y2hDYXNlKCkgPSBkZWZhdWx0OworCisgICAgU3dpdGNoQ2FzZShjb25zdCBTd2l0Y2hDYXNlJikg
PSBkZWxldGU7CisgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7CisgICAgQmxv
Y2sgbV9ibG9jazsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hT
dGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjE0ZDc4YzVkNmJkODE5NTAzZDYyY2Y1OGYwODAxM2Mz
ZjcwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBTd2l0Y2hTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBTd2l0
Y2hTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCisgICAgICAg
IDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKQorICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN3aXRjaFN0YXRlbWVudCgpID0gZGVmYXVsdDsK
KworICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsK
KyAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92YWx1ZTsKKyAgICBWZWN0
b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKK307CisKK30KKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVmY2Y2MjJlOGVh
NTI1ZmViOTk2N2NiYjllZjc2Yjc2MGExMmQxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgVGVybmFyeUV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUsIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCisgICAgICAg
ICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKKyAgICAgICAgLCBt
X2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFRlcm5h
cnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgVGVy
bmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHJhcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZDAwOWI5MzYyZDE3MGRkNTkzYzQwODYxOTM4ODBm
MDk5Y2Q3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUcmFwIDogcHVi
bGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVHJhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4p
CisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VHJhcCgpID0gZGVmYXVsdDsKKworICAgIFRyYXAoY29uc3QgVHJhcCYpID0g
ZGVsZXRlOworICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjEzNWU2YTczNGE2Njg4NzFi
YzczOTJhZTEwMWYzOGJlMGRhMzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRl
ICJXSExTTE5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOb2RlIHsKK3B1Ymxp
YzoKKyAgICBUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVs
dDsKKworICAgIFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAgIFR5cGUoVHlwZSYmKSA9
IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNv
bnN0ID0gMDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFy
Z3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlQXJndW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTkxYWU5NzcyZmZhMGQ2NjdmMTZmYmU3NDljM2Vm
YjA2ZWNmNWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PENvbnN0YW50RXhw
cmVzc2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7Cit0eXBlZGVmIFZlY3RvcjxUeXBlQXJndW1l
bnQ+IFR5cGVBcmd1bWVudHM7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVE
ZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE0OGIwMjk0NjIyMjUwYWQ0ODUxOGNkNGU5ZGNhNmUy
NDRiYTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZURl
ZmluaXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgVHlwZURlZmluaXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpU
eXBlPiYmIHR5cGUpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUp
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7
CisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmluZyBtX25h
bWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4gbV90eXBlOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0ODRk
ZjdjYThhYjQwODE1NjBjOTIwNDllY2M2NjgzMDcyYTJmNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2Uu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgVHlwZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQorICAgICAgICA6IG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAg
ICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIFR5
cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOworICAgIFR5cGVSZWZl
cmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2luKSwgU3RyaW5n
KG1fbmFtZSksIFR5cGVBcmd1bWVudHMobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOworfTsKKworfQorCit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODliMzAwM2U4YzY3MDU0MzM4YjViYzJhODllMWYxMDYyMDMxYTNjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBVbnNpZ25lZEludGVnZXJM
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAg
OiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBk
ZWZhdWx0OworCisgICAgZXhwbGljaXQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNp
Z25lZEludGVnZXJMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25lZCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX3ZhbHVlOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTBlYTkxZmMxZDAxMTg2OWY5MGQ4OTgwNjdmMjdhMDUxZGU4MmY5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhbHVl
IDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIFZhbHVlKCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBWYWx1ZShjb25z
dCBWYWx1ZSYpID0gZGVmYXVsdDsKKyAgICBWYWx1ZShWYWx1ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWY4OGM3MmM5NWQwMWVmMzg3ZGE4NGJjZmRkNzky
OWU1ZWRmOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
VmFyaWFibGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgVmFyaWFi
bGVEZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZp
ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiYmIHR5cGUsIFN0cmluZyYmIG5hbWUsIE9w
dGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBpbml0aWFsaXplcikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAgICwgbV90eXBl
KFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAg
ICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAgLCBtX2luaXRpYWxpemVy
KFdURk1vdmUoaW5pdGlhbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WYXJp
YWJsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbihj
b25zdCBWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgVmFyaWFibGVEZWNsYXJh
dGlvbihWYXJpYWJsZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tl
biBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExl
eGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAg
ICBPcHRpb25hbDxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gbV9pbml0aWFsaXplcjsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDE4YmZjOTljY2IzZWVlZmUxNDBiMzU1ZTVkZDlhZTZkNGJhNDFhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVmFy
aWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYmIHZhcmlhYmxlRGVjbGFyYXRpb25z
KQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJp
YWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb25zKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CisKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0gZGVsZXRlOworICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mJiBtX3ZhcmlhYmxl
RGVjbGFyYXRpb25zOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjMxYTQwM2FmMDQzNjhhZjY2ODc3MjE3YTY4
NDk0NWIwNTliZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAg
ICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZh
cmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVSZWZlcmVuY2UoY29u
c3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShW
YXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgVmFyaWFibGVSZWZl
cmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQorICAg
IHsKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UgcmVzdWx0KExleGVyOjpUb2tlbih2YXJpYWJs
ZURlY2xhcmF0aW9uLm9yaWdpbigpKSk7CisgICAgICAgIHJlc3VsdC5tX3ZhcmlhYmxlID0geyAm
dmFyaWFibGVEZWNsYXJhdGlvbiB9OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHN0YXRpYyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKEFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24mIGFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBWYXJp
YWJsZVJlZmVyZW5jZSByZXN1bHQoTGV4ZXI6OlRva2VuKGFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24ub3JpZ2luKCkpKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFyaWFibGUgPSB7ICZhbm9ueW1v
dXNWYXJpYWJsZURlY2xhcmF0aW9uIH07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZhcmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBPcHRpb25hbDxWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRp
b24qLCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uKj4+IG1fdmFyaWFibGU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk1ZGZkZDZi
N2YxMDE3MzU0NTc2YTA5YTBlMWY4YzE1MzUwZjcyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgV2hpbGVMb29w
IDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgV2hpbGVMb29wKExleGVyOjpUb2tl
biYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0
ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RG
TW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25h
bCkpCisgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKworICAgIFdoaWxlTG9vcChjb25zdCBX
aGlsZUxvb3AmKSA9IGRlbGV0ZTsKKyAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVs
dDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRp
b25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiBtX2JvZHk7Cit9OworCit9CisK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTZjNjkyZTJkODc5ZTU5MmQwN2Zh
ODIxZTQxYTA3MjkyMmQ0OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFkZjQzNGFhNzNjNGMyMTUyNGRjMzZlMzY4NzZkNmVmOTZm
MTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFub255bW91c1Zh
cmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
IgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisj
aW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQnJlYWsuaCIK
KyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMQ2FsbEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJl
c3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQ29udGlu
dWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJX
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25N
ZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZh
bGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtl
UG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1
ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRl
ICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMUGFy
YW1ldGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgorI2luY2x1ZGUgIldITFNM
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIK
KyNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIK
KyNpbmNsdWRlICJXSExTTFJldHVybi5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNp
bmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgorI2luY2x1ZGUg
IldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIK
KyNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFN0
cnVjdHVyZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKKyNpbmNsdWRl
ICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTFRyYXAuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNp
bmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRp
b24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVk
ZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFBhcnNlciB7CisKK307CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggYThjNDczNzI4YWE4ODc4NjNmNjc0NGM3NjFjZDBmZmE5OGJk
ZGE2NC4uNTQzOGY0ZGVhYjM5YWM1NTM4Mzg0MDg0NDRjZTUxNmNmYjMxMWVmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTMwMiw2ICszMDIsNyBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiAKIE1vZHVsZXMvd2ViZ3B1L0RPTVdpbmRvd1dlYkdQ
VS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCitNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3Jv
dXBMYXlvdXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMWRmOGQ3ZTEzMDFkN2EwMGMxNjkwMzlkMzIyOGU2N2IwYjJkMTA5
Yi4uMjZhNmNmN2ZiNWY0NDAwNmViZjYwNmVhYjYzMTYwOTIzYzVkODlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyMTEs
NiArMTMyMTEsNzYgQEAKIAkJQzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMEU5MTEyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyMTBFOTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMTGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY2QTYyMUNEODI4RTAwMjI3OTc5IC8qIFdITFNMVHJhcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFRyYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QTcyMUNE
ODI4RjAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNkE4MjFDRDgyOTAwMDIyNzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQ29udGludWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2
QTkyMUNEODI5MDAwMjI3OTc5IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xCb29sZWFuTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjZBQTIxQ0Q4MjkxMDAyMjc5NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xJbmRleEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY2QUIyMUNEODI5MjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjZBQzIxQ0Q4MjkzMDAyMjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNkFEMjFDRDgyOTQwMDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEJhc2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjZBRTIxQ0Q4Mjk1MDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTERvV2hpbGVMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNkFGMjFDRDgyOTYwMDIyNzk3OSAvKiBXSExTTFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QjAy
MUNEODI5NzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY2QjEyMUNEODI5ODAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QjIyMUNEODI5QTAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZCMzIxQ0Q4MjlCMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3Vn
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNkI0MjFDRDgyOUMwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNl
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZCNTIxQ0Q4MjlEMDAyMjc5Nzkg
LyogV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkI2MjFDRDgyOUUw
MDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJldHVybi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZCNzIxQ0Q4MjlGMDAyMjc5NzkgLyog
V0hMU0xXaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xXaGlsZUxvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QjgyMUNEODJBMDAwMjI3OTc5IC8qIFdITFNM
RnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkF0dHJpYnV0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZCOTIxQ0Q4MkExMDAyMjc5
NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb21tYUV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QkEyMUNEODJB
MjAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdWxs
TGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZCQjIxQ0Q4MkEz
MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UmVzb3VyY2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZC
QzIxQ0Q4MkE0MDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QkQyMUNE
ODJBNjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNkJFMjFDRDgyQTgwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFF1YWxpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZCRjIxQ0Q4MkE5MDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjZDMDIxQ0Q4MkFBMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZDMTIxQ0Q4MkFCMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QzIyMUNEODJBQzAwMjI3OTc5IC8qIFdITFNMQW5vbnltb3Vz
VmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFub255bW91c1Zhcmlh
YmxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2QzMy
MUNEODJBRDAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY2QzQyMUNEODJBRjAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVHlwZUFyZ3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNkM1MjFDRDgyQjAwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZDNjIxQ0Q4MkIxMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNkM3MjFDRDgyQjIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2Qzgy
MUNEODJCMzAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjZDOTIxQ0Q4MkI0MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTENhbGxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNkNBMjFDRDgyQjUwMDIyNzk3OSAvKiBXSExTTFBhcmFtZXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFBhcmFtZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjZDQjIxQ0Q4MkI2MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMRG90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjZDQzIxQ0Q4MkI3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMU3dpdGNoQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjZDRDIxQ0Q4MkI4MDAyMjc5NzkgLyogV0hMU0xCcmVhay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEJyZWFrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NkNFMjFDRDgyQjkwMDIyNzk3OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkNGMjFDRDgyQkEwMDIyNzk3OSAvKiBXSExTTFRl
cm5hcnlFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVGVybmFyeUV4cHJlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RDAyMUNEODJCQzAwMjI3OTc5
IC8qIFdITFNMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RDEyMUNEODJCRDAwMjI3OTc5IC8qIFdITFNMQmxvY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjZEMjIxQ0Q4MkJFMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVHlwZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjZEMzIxQ0Q4MkJGMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRlZmlu
aXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RDQyMUNEODJDMDAwMjI3OTc5IC8qIFdI
TFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNkQ1MjFDRDgyQzEwMDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjZENjIxQ0Q4MkMyMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZENzIxQ0Q4MkMzMDAyMjc5
NzkgLyogV0hMU0xOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZEODIxQ0Q4MkM0MDAyMjc5NzkgLyogV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RDkyMUNEODJDNTAwMjI3OTc5
IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJh
dGlvbk1lbWJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZEQTIxQ0Q4
MkM2MDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZEQjIxQ0Q4MkM3MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZEQzIxQ0Q4MkM4MDAyMjc5
NzkgLyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVEZWZp
bml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkREMjFDRDgyQzkw
MDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZERTIxQ0Q4MkNCMDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZERjIxQ0Q4MkNDMDAyMjc5NzkgLyogV0hMU0xN
YWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xNYWtlUG9pbnRlckV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RTAyMUNEODJD
RDAwMjI3OTc5IC8qIFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RTEyMUNEODJDRTAwMjI3OTc5IC8qIFdITFNMUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkUyMjFDRDgy
Q0YwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUG9p
bnRlclR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RTMyMUNEODJE
MDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZFNDIxQ0Q4MkQyMDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY2RTUyMUNEODJEMzAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Np
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZFNjIxQ0Q4MkQ0MDAyMjc5NzkgLyogV0hMU0xDb25z
dGFudEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb25zdGFudEV4cHJlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RTcyMUNEODJENTAwMjI3OTc5
IC8qIFdITFNMRm9yTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZvckxvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RTgyMUNEODJENzAwMjI3OTc5IC8qIFdITFNM
RmxvYXRMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkU5MjFDRDgyRDgwMDIyNzk3OSAvKiBXSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjZFQTIxQ0Q4MzEzMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZFQjIxQ0Q4MzE0MDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcx
RDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NT
Rm9udFZhcmlhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U0ZvbnRWYXJpYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQ1
OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9udENhY2hlQ29yZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1
MjI5LDEyICsyNTI5OSw5MCBAQAogCQlDMjEwRTkwRDIxQjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyMUJGNkE0
MjFDRDgyNkUwMDIyNzk3OSAvKiBBU1QgKi8sCiAJCQkJQzIxMEU5MTEyMUI0QkQxMDAwQjdGODNE
IC8qIFdITFNMTGV4ZXIuY3BwICovLAogCQkJCUMyMTBFOTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBX
SExTTExleGVyLmggKi8sCisJCQkJQzIxQkY2RUEyMUNEODMxMzAwMjI3OTc5IC8qIFdITFNMUGFy
c2VyLmNwcCAqLywKKwkJCQlDMjFCRjZFQjIxQ0Q4MzE0MDAyMjc5NzkgLyogV0hMU0xQYXJzZXIu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQlDMjFCRjZBNDIxQ0Q4MjZFMDAyMjc5NzkgLyogQVNUICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjFCRjZDMjIxQ0Q4MkFDMDAyMjc5
NzkgLyogV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY2
RDgyMUNEODJDNDAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCisJCQkJ
QzIxQkY2QkMyMUNEODJBNDAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCisJCQkJQzIx
QkY2RTMyMUNEODJEMDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywK
KwkJCQlDMjFCRjZCRDIxQ0Q4MkE2MDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1
dGUuaCAqLywKKwkJCQlDMjFCRjZBRDIxQ0Q4Mjk0MDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50
aWMuaCAqLywKKwkJCQlDMjFCRjZEMTIxQ0Q4MkJEMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICov
LAorCQkJCUMyMUJGNkE5MjFDRDgyOTAwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmgg
Ki8sCisJCQkJQzIxQkY2Q0QyMUNEODJCODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKKwkJ
CQlDMjFCRjZENTIxQ0Q4MkMxMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLywK
KwkJCQlDMjFCRjZDOTIxQ0Q4MkI0MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICov
LAorCQkJCUMyMUJGNkI5MjFDRDgyQTEwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5o
ICovLAorCQkJCUMyMUJGNkU2MjFDRDgyRDQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVz
c2lvbi5oICovLAorCQkJCUMyMUJGNkI1MjFDRDgyOUQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2QTgy
MUNEODI5MDAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLywKKwkJCQlDMjFCRjZCNDIxQ0Q4
MjlDMDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFC
RjZDQjIxQ0Q4MkI2MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIx
QkY2QUUyMUNEODI5NTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFC
RjZEQjIxQ0Q4MkM3MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
LmggKi8sCisJCQkJQzIxQkY2RDMyMUNEODJCRjAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25E
ZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RDkyMUNEODJDNTAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25NZW1iZXIuaCAqLywKKwkJCQlDMjFCRjZCRjIxQ0Q4MkE5MDAyMjc5NzkgLyogV0hM
U0xFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2QjMyMUNEODI5QjAwMjI3OTc5IC8qIFdITFNM
RmFsbHRocm91Z2guaCAqLywKKwkJCQlDMjFCRjZFODIxQ0Q4MkQ3MDAyMjc5NzkgLyogV0hMU0xG
bG9hdExpdGVyYWwuaCAqLywKKwkJCQlDMjFCRjZFNzIxQ0Q4MkQ1MDAyMjc5NzkgLyogV0hMU0xG
b3JMb29wLmggKi8sCisJCQkJQzIxQkY2QjgyMUNEODJBMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rp
b25BdHRyaWJ1dGUuaCAqLywKKwkJCQlDMjFCRjZCMDIxQ0Q4Mjk3MDAyMjc5NzkgLyogV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY2QTcyMUNEODI4RjAwMjI3OTc5IC8q
IFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2QjIyMUNEODI5QTAwMjI3
OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZBQTIxQ0Q4MjkxMDAyMjc5
NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZBQjIxQ0Q4MjkyMDAy
Mjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNkU1MjFDRDgyRDMw
MDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2QzgyMUNE
ODJCMzAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFC
RjZFMDIxQ0Q4MkNEMDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY2REYyMUNEODJDQzAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJF
eHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RDYyMUNEODJDMjAwMjI3OTc5IC8qIFdITFNMTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkREMjFDRDgyQzkwMDIyNzk3
OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkQ3MjFDRDgy
QzMwMDIyNzk3OSAvKiBXSExTTE5vZGUuaCAqLywKKwkJCQlDMjFCRjZCQTIxQ0Q4MkEyMDAyMjc5
NzkgLyogV0hMU0xOdWxsTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNkQ0MjFDRDgyQzAwMDIyNzk3
OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNkNB
MjFDRDgyQjUwMDIyNzk3OSAvKiBXSExTTFBhcmFtZXRlci5oICovLAorCQkJCUMyMUJGNkUyMjFD
RDgyQ0YwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCisJCQkJQzIxQkY2RTEyMUNE
ODJDRTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggKi8sCisJCQkJ
QzIxQkY2QkUyMUNEODJBODAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8sCisJCQkJQzIx
QkY2Q0UyMUNEODJCOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5o
ICovLAorCQkJCUMyMUJGNkMwMjFDRDgyQUEwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUu
aCAqLywKKwkJCQlDMjFCRjZCQjIxQ0Q4MkEzMDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmggKi8sCisJCQkJQzIxQkY2QjYyMUNEODI5RTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmgg
Ki8sCisJCQkJQzIxQkY2QUMyMUNEODI5MzAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywK
KwkJCQlDMjFCRjZFOTIxQ0Q4MkQ4MDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjZDMTIxQ0Q4MkFCMDAyMjc5NzkgLyogV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjZDNTIxQ0Q4MkIwMDAyMjc5NzkgLyog
V0hMU0xTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZEQTIxQ0Q4MkM2MDAyMjc5NzkgLyogV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2QjEyMUNEODI5ODAwMjI3OTc5
IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNkNDMjFDRDgyQjcwMDIy
Nzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjZFNDIxQ0Q4MkQyMDAyMjc5
NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZDRjIxQ0Q4MkJBMDAy
Mjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkE2MjFDRDgy
OEUwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjZEMDIxQ0Q4MkJDMDAyMjc5
NzkgLyogV0hMU0xUeXBlLmggKi8sCisJCQkJQzIxQkY2QzQyMUNEODJBRjAwMjI3OTc5IC8qIFdI
TFNMVHlwZUFyZ3VtZW50LmggKi8sCisJCQkJQzIxQkY2REMyMUNEODJDODAwMjI3OTc5IC8qIFdI
TFNMVHlwZURlZmluaXRpb24uaCAqLywKKwkJCQlDMjFCRjZEMjIxQ0Q4MkJFMDAyMjc5NzkgLyog
V0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2REUyMUNEODJDQjAwMjI3OTc5IC8q
IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNkFGMjFDRDgyOTYw
MDIyNzk3OSAvKiBXSExTTFZhbHVlLmggKi8sCisJCQkJQzIxQkY2QzMyMUNEODJBRDAwMjI3OTc5
IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkM3MjFDRDgyQjIw
MDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCisJCQkJ
QzIxQkY2QzYyMUNEODJCMTAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywK
KwkJCQlDMjFCRjZCNzIxQ0Q4MjlGMDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gQVNUOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
Qzk2RjVFQkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357972</attachid>
            <date>2018-12-21 13:10:03 -0800</date>
            <delta_ts>2018-12-21 13:27:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192991-20181221131002.patch</filename>
            <type>text/plain</type>
            <size>214618</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3NWJlN2JmYzhkMWNi
MGQzY2QwZGU2NjNmNmRhNDExMjliYTBkOC4uMWNlMWE4ZGFmOGUwNGI0OWFiNjY2ZjZmZjc4MjUz
ODVkZDNhMWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxOC0xMi0yMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhbGwgdGhlIEFTVCBub2RlcyB3
aGljaCB3aWxsIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgcGFyc2VyLgorICAgICAgICBU
aGlzIHBhdGNoIHVzZWQgdG8gYmUgYSBwYXJ0IG9mIHRoZSAiY3JlYXRlIGEgV0hMU0wgcGFyc2Vy
IiBwYXRjaCBidXQgSSBzcGxpdCB0aGVtCisgICAgICAgIG91dCBpbiBvcmRlciB0byBhaWQgcmV2
aWV3aW5nLgorCisgICAgICAgIFRoZSBjbGFzc2VzIHdlcmUgbWVjaGFuaWNhbGx5IGNyZWF0ZWQg
dG8gbWF0Y2ggdGhlIHJlc3VsdCBvZiB0aGUgcGFyc2VyLiBUaGVyZSBhcmUKKyAgICAgICAgbm9k
ZXMgZm9yIHRoaW5ncyBsaWtlIEZvckxvb3BzLCBMb2dpY2FsTm90RXhwcmVzc2lvbnMsIERlcmVm
ZXJlbmNlRXhwcmVzc2lvbnMsCisgICAgICAgIFN0cnVjdHVyZURlZmluaXRpb25zLCBhbmQgdGhp
bmdzIGxpa2UgdGhhdC4gVGhlIGNsYXNzZXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhbnkgbG9naWMK
KyAgICAgICAgaW4gdGhlbSAtIHRoZXkgYXJlIGN1cnJlbnRseSBqdXN0IGNvbnRhaW5lcnMgdG8g
aG9sZCB0aGUgc3RydWN0dXJlIG9mIHRoZSBwYXJzZWQKKyAgICAgICAgcHJvZ3JhbS4gU29tZSBv
ZiB0aGVzZSBub2RlcyAobGlrZSBjb25zdGV4cHJzKSBhcmUganVzdCBWYXJpYW50cyBvZiB0aGUg
dmFyaW91cyB0aGluZ3MKKyAgICAgICAgdGhleSBjYW4gaW4gdGhlIGZvcm0gb2YuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlIHBhcnNlciBkb2Vzbid0IGV4aXN0IHRvIGNyZWF0
ZSB0aGUgbmV3IEFTVCBub2RlcyB5ZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbjo6QW5v
bnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJy
YXlSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBcnJheVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJh
eVR5cGU6OkFycmF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5
cGU6Om51bUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpBc3NpZ25tZW50RXhwcmVzc2lvbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0
cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0
aW9uQXR0cmlidXRlOjpCYXNlRnVuY3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkJhc2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpCbG9jayk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFuTGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJyZWFrOjpCcmVhayk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2Vt
YW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2
YXJpYWJsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
YWxsRXhwcmVzc2lvbjo6Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OkNvbnN0YW50RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVt
ZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bnRpbnVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29udGludWU6
OkNvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJl
ZmVyZW5jZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OkRlcmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6RG9XaGlsZUxvb3ApOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RF
eHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXI6OkVu
dW1lcmF0aW9uTWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHBy
ZXNzaW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZhbGx0aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RmFsbHRocm91Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OkZ1bmN0
aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbjo6dGFrZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uOjp0YWtlQXR0cmlidXRlQmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6dGFrZUVudHJ5UG9pbnRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnRha2VU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246
OnRha2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb246OnRha2VQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb246OnRha2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpGdW5jdGlvbkRlZmluaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpy
ZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpJbmRleEV4cHJlc3Npb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OkludGVnZXJMaXRlcmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4
cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6TG9naWNhbEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TG9naWNhbEV4cHJlc3Npb246OnR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246OkxvZ2ljYWxO
b3RFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpNYWtlUG9pbnRlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246OnJlc3RyaWN0ZWQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGU6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU6OndpZHRo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6ZGVwdGggY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlBhcmFtZXRlcjo6UGFyYW1ldGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBvaW50ZXJUeXBlOjpQb2ludGVyVHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbjo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXROZXdWYWx1ZUV4cHJlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbjo6c2V0UmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdW
YXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OlJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVmZXJlbmNlVHlwZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50aWM6
OlJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYzo6bW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZXNvdXJjZVNlbWFudGljOjppbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZXNvdXJjZVNlbWFudGljOjpzcGFjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6UmV0dXJuOjpSZXR1cm4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYzo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OlN0YWdlSW5PdXRT
ZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50
aWM6OmluZGV4IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0cnVjdHVyZURlZmluaXRpb246OlN0cnVjdHVyZURlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1
Y3R1cmVFbGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hDYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNo
Q2FzZTo6U3dpdGNoQ2FzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3dpdGNoU3RhdGVtZW50OjpTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OlRlcm5hcnlFeHByZXNz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlvbjo6VHlw
ZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
UmVmZXJlbmNlOjpUeXBlUmVmZXJlbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYWx1
ZTo6VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uOjpWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb246Om9yaWdpbiBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U6OlZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlOjp3cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xXaGlsZUxvb3AuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpXaGlsZUxvb3A6OldoaWxlTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTItMjAgIEp1c3RpbiBG
YW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBDb252ZXJ0IFdl
YkdQVUJpbmRHcm91cHMgaW50byBNVExBcmd1bWVudEVuY29kZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2MWVkMTI2
MTkxMDcwMTAzZjhlODdjODBlMzEwYzQxNGQzNDliNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFub255bW91c1ZhcmlhYmxl
RGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Bbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbihjb25zdCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAg
QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbihBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9u
JiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tlbiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYmQxYjM2NWYxOGM1NTRkZGJjNGYzZDE2ZDNjYjAxZWI2ZjE0MmI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIDogcHVibGlj
IFJlZmVyZW5jZVR5cGUgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlVHlwZShMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5
cGU+JiYgZWxlbWVudFR5cGUpCisgICAgICAgIDogUmVmZXJlbmNlVHlwZShXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoYWRkcmVzc1NwYWNlKSwgV1RGTW92ZShlbGVtZW50VHlwZSkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKKwor
ICAgIEFycmF5UmVmZXJlbmNlVHlwZShjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmKSA9IGRlbGV0
ZTsKKyAgICBBcnJheVJlZmVyZW5jZVR5cGUoQXJyYXlSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGU+
KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRU
eXBlKCktPmNsb25lKCkpOworICAgIH0KKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBcnJheVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGRhMjg0OGFmNGMwZGI5MGJlNTky
Mjc0NDQ5YWU2MzdhMTMwODVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlUeXBl
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5
cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAg
ICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5VHlwZShjb25zdCBBcnJh
eVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBBcnJheVR5cGUoQXJyYXlUeXBlJiYpID0gZGVmYXVsdDsK
KworICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50
czsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZT4oTGV4ZXI6
OlRva2VuKG1fb3JpZ2luKSwgbV9lbGVtZW50VHlwZS0+Y2xvbmUoKSwgbV9udW1FbGVtZW50cyk7
CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZT4gbV9lbGVtZW50VHlwZTsKKyAgICB1bnNpZ25lZCBtX251bUVsZW1l
bnRzOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTYzNGNjYTdiZmZhZjI1NTYyNThiMzJhYWU4NWYx
MmExNWFhNzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdo
dCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworCisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IG1fbGVmdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9y
aWdodDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzI0NGNhODJhOTExZGM1NjFlYTRiYmE4OTA0
ZThkMTg0ZWRmNjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAg
IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDog
bV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5C
YXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7CisKKyAgICBCYXNlRnVuY3Rpb25BdHRy
aWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7CisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NzMzNzJmMTM3MDE4MDA0
ZTNjNGQ1ZjIzMzM0NDE0NzQ0OTNiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBCYXNlU2VtYW50aWMgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgQmFzZVNl
bWFudGljKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0g
ZGVmYXVsdDsKKworICAgIEJhc2VTZW1hbnRpYyhjb25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0
ZTsKKyAgICBCYXNlU2VtYW50aWMoQmFzZVNlbWFudGljJiYpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMTcyNmEzMWEwNDgxNzVjMjkwNDllODIyZWM5MDIyYzdm
OTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCbG9jay5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFT
VCB7CisKK2NsYXNzIEJsb2NrIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgQmxv
Y2soTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVu
dD4+JiYgc3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKworICAgIEJsb2NrKGNvbnN0IEJs
b2NrJikgPSBkZWxldGU7CisgICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOwor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZTkwODgxYmQ3NzgzMjIwNWE2NGQ5MjU1MDgwYmNhMWQzODNkNjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Qm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBCb29s
ZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBCb29sZWFu
TGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsK
K307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MjUyMWFl
NTgzZjhhNDFmZGNjNjIzNTk1MWNmZTM2ODM1MDA5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIEJy
ZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShv
cmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsK
KworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7CisgICAgQnJlYWsoQnJlYWsmJikg
PSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJ1aWx0SW5TZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNDZkZjMyY2ZhYTJlNmJmZTQzZGZi
ZGIzMzA3OWMxYzRlOGIwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYyA6
IHB1YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVmFyaWFibGUg
eworICAgICAgICBTVkluc3RhbmNlSUQsCisgICAgICAgIFNWVmVydGV4SUQsCisgICAgICAgIFBT
aXplLAorICAgICAgICBTVlBvc2l0aW9uLAorICAgICAgICBTVklzRnJvbnRGYWNlLAorICAgICAg
ICBTVlNhbXBsZUluZGV4LAorICAgICAgICBTVklubmVyQ292ZXJhZ2UsCisgICAgICAgIFNWVGFy
Z2V0LAorICAgICAgICBTVkRlcHRoLAorICAgICAgICBTVkNvdmVyYWdlLAorICAgICAgICBTVkRp
c3BhdGNoVGhyZWFkSUQsCisgICAgICAgIFNWR3JvdXBJRCwKKyAgICAgICAgU1ZHcm91cEluZGV4
LAorICAgICAgICBTVkdyb3VwVGhyZWFkSUQKKyAgICB9OworCisgICAgQnVpbHRJblNlbWFudGlj
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVmFyaWFibGUgdmFyaWFibGUsIE9wdGlvbmFsPHVuc2ln
bmVkPiYmIHRhcmdldEluZGV4ID0gV1RGOjpudWxsb3B0KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKKyAgICAg
ICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5CdWlsdEluU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBCdWlsdElu
U2VtYW50aWMoY29uc3QgQnVpbHRJblNlbWFudGljJikgPSBkZWxldGU7CisgICAgQnVpbHRJblNl
bWFudGljKEJ1aWx0SW5TZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJsZSB2YXJp
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KKworcHJpdmF0ZToKKyAgICBWYXJp
YWJsZSBtX3ZhcmlhYmxlOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3RhcmdldEluZGV4Owor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMWJhODU2M2I0MWM0NGIzZTIzNmYwMjBhNGI2MTE2NzIxY2YzMDUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBDYWxsRXhwcmVzc2lvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDYWxsRXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4+JiYgYXJndW1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmln
aW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fYXJndW1l
bnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q2Fs
bEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxs
RXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
N2RjNzBiYTIwMTNlNmU0ZTU1YWM3OTIwYTA5NjFiY2I4YTMzMjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJl
c3Npb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
Q29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENvbW1h
RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgQ29tbWFFeHByZXNz
aW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENvbW1hRXhwcmVzc2lv
bihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fbGlzdDsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2E4
YjM2OWQ2YTkyYmY1OTk4MzNkYzQ1YzAwNDc4ZTIyNWI5ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCisj
aW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xJbnRl
Z2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCisvLyBGSVhNRTogbWFjT1MgU2llcnJhIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHB1
dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAorLy8gc28gdGhpcyBpcyBhIHdyYXBwZXIg
Y2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uIEFzIHNvb24gYXMgd2UgZG9u
J3QKKy8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2FuIGJlIG1pZ3JhdGVkIHRvIGEg
VmFyaWFudCBwcm9wZXIuCitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gOiBwdWJsaWMgVmFyaWFu
dDwKKyAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAg
IEZsb2F0TGl0ZXJhbCwKKyAgICBOdWxsTGl0ZXJhbCwKKyAgICBCb29sZWFuTGl0ZXJhbCwKKyAg
ICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgID4gewor
cHVibGljOgorICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJM
aXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAg
ICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAg
ICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3Zl
KGludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9u
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQorICAgICAg
ICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFs
LAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRM
aXRlcmFsJiYgZmxvYXRMaXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVn
ZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9h
dExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwK
KyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAg
ICAgICAgPihXVEZNb3ZlKGZsb2F0TGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0
YW50RXhwcmVzc2lvbihOdWxsTGl0ZXJhbCYmIG51bGxMaXRlcmFsKQorICAgICAgICA6IFZhcmlh
bnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAg
ICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKG51bGxMaXRlcmFsKSkKKyAgICB7Cisg
ICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9uKEJvb2xlYW5MaXRlcmFsJiYgYm9vbGVhbkxp
dGVyYWwpCisgICAgICAgIDogVmFyaWFudDwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAg
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAg
ICAgTnVsbExpdGVyYWwsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgICAgICA+KFdURk1vdmUo
Ym9vbGVhbkxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24o
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJiBjb25zdGFudEV4
cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkKKyAgICAgICAgOiBWYXJpYW50PAor
ICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwK
KyAgICAgICAgRmxvYXRMaXRlcmFsLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgQm9v
bGVhbkxpdGVyYWwsCisgICAgICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlCisgICAgICAgID4oV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkpCisgICAgeworICAgIH0KKworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzI0YTk4YjJj
YWJiMGY5ZWE4NWMwYmExZTA5MGE2NjA4ZGU4MjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSA6IHB1YmxpYyBOb2Rl
IHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xlZnQo
V1RGTW92ZShsZWZ0KSkKKyAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgPSBkZWZhdWx0OworICAgIENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9u
TWVtYmVyUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9r
ZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fbGVmdDsKKyAgICBTdHJpbmcgbV9yaWdodDsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI5NWE1
YTc3ODcyYWFkYjVlNGJhMjA3M2YzYmJhOTI3ZWQ2ZTM5MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGlj
OgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1l
bnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db250aW51
ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7
CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MjQzM2JhMjU5N2M1YmU1NjE1NTE3YjI3ZTM4N2E1YTY2ZWJhNTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBE
ZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5jZUV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiBtX3BvaW50ZXI7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxl
TG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwMjNkOGRjN2FmZjkyZTRlMjZmMjg0MDRkYjQ5NDkzMDM2MTJl
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1l
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBEb1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29u
ZGl0aW9uYWwpCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAg
LCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUo
Y29uZGl0aW9uYWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgp
ID0gZGVmYXVsdDsKKworICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxl
dGU7CisgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fYm9keTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRG90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0M2M2OWVlNTQxMTg5OWVj
MzE1ZmQ1MmVjMWNmYzY0NGFhZTc1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBEb3RFeHByZXNzaW9uIDogcHVibGljIFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgRG90RXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cmlu
ZyYmIGZpZWxkTmFtZSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1fZmllbGROYW1lKFdURk1vdmUo
ZmllbGROYW1lKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RG90RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKworICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1lOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjRkMDc1MTJjMzhjNzc3MDgyYmIyOTUwOGU1NTkxYmQyNDdjMGVlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJl
c3Npb24pCisgICAgICAgIDogU3RhdGVtZW50KExleGVyOjpUb2tlbihlZmZlY3RmdWxFeHByZXNz
aW9uLT5vcmlnaW4oKSkpCisgICAgICAgICwgbV9lZmZlY3RmdWxFeHByZXNzaW9uKFdURk1vdmUo
ZWZmZWN0ZnVsRXhwcmVzc2lvbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRl
bGV0ZTsKKyAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWE2NzBjZWJlYTBjZmU5NWU3ZGE4YjEyOTE0NTUxNTE5NDQ4MjQxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9u
TWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIFR5cGUgewor
cHVibGljOgorICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiYmIHR5cGUsIFZlY3RvcjxFbnVt
ZXJhdGlvbk1lbWJlcj4gbWVtYmVycykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUodHlwZSkpCisgICAgICAgICwgbV9tZW1iZXJzKFdURk1vdmUobWVtYmVycykpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRp
b24mKSA9IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZp
bml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tl
biBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
PiBtX3R5cGU7CisgICAgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBtX21lbWJlcnM7Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4MzQzYWI0YWRiMzhlMWFhNWQ1YjY5NDRjMGE5ODgzNGI0YWY1NjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5v
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7
CitwdWJsaWM6CisgICAgRW51bWVyYXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBT
dHJpbmcmJiBuYW1lLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6
Om51bGxvcHQpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZh
dWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9
IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworfTsK
KworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUz
MTRjZjIwODI5ODdlNTBmZTcwMDRkYjE2MWRiOWM4YjhiYjhkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24u
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFs
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRXhwcmVzc2lvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6
CisgICAgRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmln
aW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNz
aW9uJikgPSBkZWZhdWx0OworICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CisKKyAgICBMZXhlcjo6VG9rZW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0K
KworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzc0ZDhmOGQ5ZTA0
YTJjZDYwYzU1ODNmMjExM2E2ZjIzMjExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworY2xhc3MgRmFsbHRocm91Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoK
KyAgICBGYWxsdGhyb3VnaChMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogU3RhdGVt
ZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RmFsbHRo
cm91Z2goKSA9IGRlZmF1bHQ7CisKKyAgICBGYWxsdGhyb3VnaChjb25zdCBGYWxsdGhyb3VnaCYp
ID0gZGVsZXRlOworICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYmYxZGZiMDc2YzFhNzA1NjBjMmMyMWQ4ZWZiMDIwM2MxZjYxMDRkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRmxvYXRMaXRlcmFs
IDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIEZsb2F0TGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IEZsb2F0
TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlZmF1bHQ7CisgICAgRmxvYXRMaXRlcmFs
KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFiZGU5YzU4ZTBh
NTE0MTJlZTcwMmY3YmYwMDk5Yzg2MTUwOWQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBGb3JMb29wIDogcHVibGljIFN0YXRlbWVudCB7
CitwdWJsaWM6CisgICAgRm9yTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZhcmlhbnQ8VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4m
JiBpbml0aWFsaXphdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9u
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBpbmNyZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4p
KQorICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24oV1RGTW92ZShpbml0aWFsaXphdGlvbikpCisg
ICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShjb25kaXRpb24pKQorICAgICAgICAsIG1faW5j
cmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5
KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Rm9yTG9vcCgpCisgICAgeworICAgIH0K
KworICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOworICAgIEZvckxvb3AoRm9y
TG9vcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgVmFyaWFudDxWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2luaXRpYWxp
emF0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbjsgLy8g
bnVsbGFibGUKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmNyZW1lbnQ7IC8v
IG51bGxhYmxlCisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5OworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYmQ3MmQ0YTkwYzUxZGY3YTJiMGZmY2MxODMzMjg0MzZlMmI2NzBmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RnVuY3Rpb25BdHRyaWJ1dGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZT4gRnVuY3Rpb25BdHRyaWJ1dGU7Cit0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbkF0
dHJpYnV0ZT4gQXR0cmlidXRlQmxvY2s7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MDYwYWFhODQwYTc1OTBj
Mjg1MWZkYWZhMzhiYjc4ZGE4YTk4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJh
bWV0ZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0
aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBF
bnRyeVBvaW50VHlwZSB7CisgICAgICAgIFZlcnRleCwKKyAgICAgICAgRnJhZ21lbnQsCisgICAg
ICAgIENvbXB1dGUKKyAgICB9OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIE9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4m
JiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8
QVNUOjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2Nr
KSkKKyAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQorICAgICAgICAs
IG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQorICAgICAgICAsIG1f
c2VtYW50aWMoV1RGTW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBGdW5jdGlvbkRlY2xhcmF0
aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICBGdW5jdGlvbkRl
Y2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgTGV4ZXI6
OlRva2VuJiYgdGFrZU9yaWdpbigpIHsgcmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CisgICAg
QXR0cmlidXRlQmxvY2smJiB0YWtlQXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBXVEZNb3ZlKG1f
YXR0cmlidXRlQmxvY2spOyB9CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiYgdGFrZUVu
dHJ5UG9pbnRUeXBlKCkgeyByZXR1cm4gV1RGTW92ZShtX2VudHJ5UG9pbnRUeXBlKTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+JiYgdGFrZVR5cGUoKSB7IHJldHVybiBXVEZNb3Zl
KG1fdHlwZSk7IH0KKyAgICBTdHJpbmcmJiB0YWtlTmFtZSgpIHsgcmV0dXJuIFdURk1vdmUobV9u
YW1lKTsgfQorICAgIFBhcmFtZXRlcnMmJiB0YWtlUGFyYW1ldGVycygpIHsgcmV0dXJuIFdURk1v
dmUobV9wYXJhbWV0ZXJzKTsgfQorICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgdGFrZVNl
bWFudGljKCkgeyByZXR1cm4gV1RGTW92ZShtX3NlbWFudGljKTsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJs
b2NrOworICAgIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+IG1fdHlwZTsKKyAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+
IG1fc2VtYW50aWM7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVmMGIxZjA4MWEyMDUzMDVmNzY4ZDhhZmZj
NWFhNTY2YjFlZDNjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRl
Y2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2ssIGJvb2wgcmVzdHJp
Y3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNs
YXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKKyAgICAgICAgLCBt
X3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RnVu
Y3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWZpbml0aW9uKGNv
bnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCByZXN0cmljdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGVkOyB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sg
bV9ibG9jazsKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTElmU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRiMDhiMWEyYWY4NjAxODY0NmRh
OWU3Mzc1YTczOGQ3MmVmYzJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBJZlN0YXRlbWVudCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIElmU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0ZDo6dW5p
cXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBl
bHNlQm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCisgICAgICAgICwgbV9ib2R5KFdU
Rk1vdmUoYm9keSkpCisgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIElmU3RhdGVt
ZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Rh
dGVtZW50PiBtX2JvZHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9lbHNlQm9k
eTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YmI2YTBmMGRhYjE0ZDg4NjZlYzdmYjIyZmI4NmIwYzdlM2ZkMmRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW5kZXhFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitj
bGFzcyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsK
K3B1YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBiYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4mJiBpbmRleCkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKKworICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKKyAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmRleDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWNkMjUzNDZjNDMyOWY1NDY3MzRiNWNhMzdhZTFhY2I5MGM1MjhiYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2lu
Y2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgSW50ZWdlckxpdGVyYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgSW50ZWdlckxpdGVyYWwoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBpbnQgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBJbnRlZ2VyTGl0
ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBJbnRlZ2VyTGl0ZXJh
bChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fdmFsdWU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJmYjA0NzVkN2IyN2VhOWY1MDNmZjdhYWYyNzVjOWRkMjk1MmRiNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIExvZ2ljYWxFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIEFuZCwKKyAgICAgICAgT3IKKyAgICB9OworCisgICAgTG9naWNhbEV4cHJlc3Np
b24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBUeXBlIHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHJpZ2h0KQorICAg
ICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RG
TW92ZShyaWdodCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbV9sZWZ0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3Jp
Z2h0OworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5v
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTMzNDRmM2IwZDgwZjkzYzFlMjQ2YWZmMmYxMzU1
NGM0YTcxYzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIG9wZXJhbmQpCisgICAgICAgIDogRXhwcmVzc2lvbihX
VEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3BlcmFuZCkpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OworCisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+IG1fb3BlcmFuZDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
OWFjMjRkMjQ5YmQ0N2Y4ZDc0MmViZDk0MzNiOGY4MGVlMzI3MmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE0NmZlMjAzYmJiY2RiNmIxN2U0ODEyNmIwM2U1YTEzY2U2NDIzY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBN
YWtlUG9pbnRlckV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
TWFrZVBvaW50ZXJFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisg
ICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2ludGVyRXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtlUG9pbnRlckV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBtX2xWYWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGU2ZWJhNzAwZmIw
M2M0MzMxNDJkMDlkODIzYWM2MjRlN2NiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIEZ1bmN0aW9u
RGVjbGFyYXRpb24geworcHVibGljOgorICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBPcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OlR5cGU+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9w
dGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgcmVzdHJpY3RlZCkKKyAgICAg
ICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShhdHRyaWJ1
dGVCbG9jayksIFdURk1vdmUoZW50cnlQb2ludFR5cGUpLCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAg
LCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRl
OworICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHJlc3RyaWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YWRmZTJmZmJiN2Y4ZWUxM2NkMWMzYjFmMGI1YzFlZjk2ZTJkODlh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVB
cmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgTmF0
aXZlVHlwZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwg
VHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1f
dHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBOYXRp
dmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7
CisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YzRmMDA2MGMwNGQ3
NzIyZmU2NGIyYzMxNzI3YjU0YjJiMmUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgTm9kZSB7CitwdWJsaWM6CisgICAgTm9kZSgpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgfk5vZGUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBOb2RlKGNvbnN0IE5vZGUm
KSA9IGRlZmF1bHQ7CisgICAgTm9kZShOb2RlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTA1ZjJiM2ZiN2NkNzI4NzVhYmFhY2VmODgyMWVkZDJhMGI3YzZhOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRl
cmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTnVsbExpdGVyYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgTnVsbExpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IE51bGxM
aXRlcmFsKGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIE51bGxMaXRlcmFsKE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MzdlODY2OGUyY2ExOGY1N2U0YTJhNzVhNTM5ZTU2YThiNDMwODY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgeworcHVibGlj
OgorICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGRlcHRoKQorICAgICAg
ICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV93
aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9kZXB0
aChkZXB0aCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KGNvbnN0IE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOworICAgIE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBk
ZWZhdWx0OworCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1
bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGg7IH0KKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBtX3dpZHRoOworICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgIHVuc2lnbmVk
IG1fZGVwdGg7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUGFyYW1ldGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWFkNzE2N2IxY2JiZjEyMDQzZGEzMGQ1MGU2NTBkMDFlYmMwYjg1MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFBhcmFtZXRlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
UGFyYW1ldGVyIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBQYXJhbWV0ZXIoTGV4ZXI6
OlRva2VuJiYgb3JpZ2luLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgc3RkOjp1bmlxdWVfcHRy
PEFTVDo6VHlwZT4mJiB0eXBlLCBPcHRpb25hbDxTdHJpbmc+JiYgbmFtZSwgT3B0aW9uYWw8QVNU
OjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAg
ICwgbV90eXBlKFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkp
CisgICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+UGFyYW1ldGVyKCkgPSBkZWZhdWx0OworCisgICAgUGFyYW1ldGVyKGNv
bnN0IFBhcmFtZXRlciYpID0gZGVsZXRlOworICAgIFBhcmFtZXRlcihQYXJhbWV0ZXImJikgPSBk
ZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFs
aWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5
cGU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBtX25hbWU7CisgICAgT3B0aW9uYWw8QVNUOjpTZW1h
bnRpYz4gbV9zZW1hbnRpYzsKK307CisKK3R5cGVkZWYgVmVjdG9yPFBhcmFtZXRlcj4gUGFyYW1l
dGVyczsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZjVmY2JhYjgzYjAwNTZmNGEyOWJlZWRjM2Y5YmUzMTI0MGU5YjAyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9p
bnRlclR5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMUmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBQb2ludGVyVHlwZSA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKK3B1Ymxp
YzoKKyAgICBQb2ludGVyVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJl
c3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJl
ZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGFkZHJlc3NTcGFjZSksIFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qb2ludGVyVHlw
ZSgpID0gZGVmYXVsdDsKKworICAgIFBvaW50ZXJUeXBlKGNvbnN0IFBvaW50ZXJUeXBlJikgPSBk
ZWxldGU7CisgICAgUG9pbnRlclR5cGUoUG9pbnRlclR5cGUmJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3Jp
Z2luKCkpLCBTdHJpbmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9uZSgpKTsK
KyAgICB9CisKK3ByaXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkMjU3ZTQx
ZWNlM2ZkODQ2MjJlMzY1MmE0YmU2MjAxY2E1YWFlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBiYXNlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fYmFzZShXVEZNb3ZlKGJhc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fYmFz
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMzNmMDUyMjQ0MWJjMTNhMzIxMTcwOTYxNjJiMGZkZjhmNDAyYzRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlm
aWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2VudW0gY2xhc3MgUXVhbGlmaWVyIHsKKyAgICBOb2ludGVycG9s
YXRpb24sCisgICAgTm9wZXJzcGVjdGl2ZSwKKyAgICBVbmlmb3JtLAorICAgIENlbnRyb2lkLAor
ICAgIFNhbXBsZQorfTsKKwordHlwZWRlZiBWZWN0b3I8UXVhbGlmaWVyPiBRdWFsaWZpZXJzOwor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjI3ZWUxNTY4NjQ5NjcyOWFlZGVmMjIxN2JmNjA2
MTM5NWJlMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLyoKKyAqICAxLiBFdmFsdWF0ZSBt
X2xWYWx1ZQorICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFsdWUKKyAqICAzLiBF
dmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgorICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRv
IG1fbmV3VmFsdWUKKyAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xWYWx1ZQorICogIDYu
IEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgorICogIDcuIFJldHVybiB0aGUgcmVzdWx0Cisg
Ki8KK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitwdWJsaWM6CisgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsVmFsdWUpCisgICAgICAgIDogRXhw
cmVzc2lvbihMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3Zl
KGxWYWx1ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZShMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAg
ICAgICAgLCBtX25ld1ZhbHVlKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldE5ld1ZhbHVlRXhwcmVzc2lv
bihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJlc3Npb24pCisgICAg
eworICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3VmFsdWVFeHByZXNz
aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24oc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIG1fcmVz
dWx0RXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7CisgICAgfQorCisgICAg
c3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgp
CisgICAgeworICAgICAgICAvLyBUaGUgb25seSByZWFzb24gd2UgZG9uJ3QgZ2V0IHVzZS1hZnRl
ci1mcmVlcyBpcyB0aGUgZmFjdCB0aGF0IGV2ZXJ5IGluc3RhbmNlIG9mIFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24gaXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwLgorICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAo
bV9vbGRWYWx1ZSkpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZVJlZmVy
ZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIG9ubHkg
cmVhc29uIHdlIGRvbid0IGdldCB1c2UtYWZ0ZXItZnJlZXMgaXMgdGhlIGZhY3QgdGhhdCBldmVy
eSBpbnN0YW5jZSBvZiBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVSZWZlcmVu
Y2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fbmV3VmFsdWUpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworICAgIEFub255
bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24gbV9vbGRWYWx1ZTsKKyAgICBBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uIG1fbmV3VmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
IG1fbmV3VmFsdWVFeHByZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X3Jlc3VsdEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2I4ODU3YWRmOWQ4YWVlNDFmNWUzNWJlNmUzYTJm
ZjYxMWZhMDUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgUmVmZXJlbmNlVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5cGUpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYWRkcmVzc1Nw
YWNlKFdURk1vdmUoYWRkcmVzc1NwYWNlKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWZlcmVuY2VU
eXBlKCkgPSBkZWZhdWx0OworCisgICAgUmVmZXJlbmNlVHlwZShjb25zdCBSZWZlcmVuY2VUeXBl
JikgPSBkZWxldGU7CisgICAgUmVmZXJlbmNlVHlwZShSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworcHJvdGVjdGVkOgorICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBTdHJpbmcmIGFkZHJlc3NTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFR5cGU+JiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KKwor
cHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fYWRkcmVz
c1NwYWNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBtX2VsZW1lbnRUeXBlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWIzYjQzMGY0NDI3Y2Q5YWU0ODY1M2U5NGI4Zjk4Y2YyNWZjOWM2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlc291cmNlU2VtYW50
aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE1vZGUg
eworICAgICAgICBVbm9yZGVyZWRBY2Nlc3NWaWV3LAorICAgICAgICBUZXh0dXJlLAorICAgICAg
ICBCdWZmZXIsCisgICAgICAgIFNhbXBsZXIKKyAgICB9OworCisgICAgUmVzb3VyY2VTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIHNwYWNlKQorICAgICAgICA6IEJhc2VTZW1hbnRpYyhXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICAgICAgLCBt
X3NwYWNlKHNwYWNlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZVNlbWFu
dGljKCkgPSBkZWZhdWx0OworCisgICAgUmVzb3VyY2VTZW1hbnRpYyhjb25zdCBSZXNvdXJjZVNl
bWFudGljJikgPSBkZWxldGU7CisgICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNvdXJjZVNlbWFudGlj
JiYpID0gZGVmYXVsdDsKKworICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHVu
c2lnbmVkIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQorCitwcml2YXRlOgorICAg
IE1vZGUgbV9tb2RlOworICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9zcGFj
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDU0
OGVkYjYwZmVkNjgyN2IyYzU2YWFjMGY1YzU5MDhkYTE4NmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZXR1cm4g
OiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBSZXR1cm4oTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2YWx1ZSkKKyAgICAgICAgOiBT
dGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1
ZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflJldHVybigpID0gZGVmYXVsdDsKKwor
ICAgIFJldHVybihjb25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKKyAgICBSZXR1cm4oUmV0dXJuJiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
bV92YWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjA1MmI5MmVhMjY0NmZhMDBlNGFiZjgxMDk5YWI3YjU2YjMxMjY2NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNl
bWFudGljLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCisj
aW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3R5cGVkZWYgVmFyaWFu
dDxCdWlsdEluU2VtYW50aWMsIFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYywgU3RhZ2VJbk91dFNlbWFudGljPiBTZW1hbnRpYzsKKworfQorCit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2M1M2ZkNGI2MTM1ODgyYWYzMTcwZjAzODRhYmUxYWJm
ZTNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBC
YXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogQmFzZVNlbWFudGljKFdURk1vdmUo
b3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOTky
NzgxZTNhNDNmNGE1NjI1NWUxODhiYzRlZDA2NmExYzk2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6IHB1
YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAg
U3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2VtYW50aWMmJikgPSBkZWZhdWx0Owor
CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjk3ODZlNTFhNDQ5Mjg1MzA1Y2U3MTE2NmE3Yjdj
ODcxZDJlMjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YXRlbWVu
dCA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RhdGVtZW50KExleGVyOjpUb2tlbiYm
IG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVu
dChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZjY1N2Q1YjA5MjYxMWE2MWQwODE5MWU5ZGQ1ZmE4ZjdjMjYyNGEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHVibGljIFR5
cGUgeworcHVibGljOgorICAgIFN0cnVjdHVyZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRz
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUo
V1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUoc3Ry
dWN0dXJlRWxlbWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVE
ZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBT
dHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihT
dHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0cnVjdHVy
ZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVudHM7Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0cnVjdHVyZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODkzZDU5YmMxNzQx
MDA0M2JjMjI5NzY3ZDEyMDFiNmZmN2JmODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgi
CisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0cnVjdHVyZUVsZW1lbnQg
OiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlRWxlbWVudChMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VHlw
ZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRpYz4gc2VtYW50aWMpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fcXVhbGlmaWVy
cyhXVEZNb3ZlKHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQor
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2VtYW50aWMoV1RG
TW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN0cnVjdHVyZUVs
ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVy
ZUVsZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1l
bnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsK
KyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4g
bV90eXBlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2Vt
YW50aWM7Cit9OworCit0eXBlZGVmIFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PiBTdHJ1Y3R1cmVF
bGVtZW50czsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTNjZWZjNzJlMDBhZDFkMDNiYTBiZTMwZDIyN2U5OWMwZGVhMzA2MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIFN3aXRjaENhc2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBT
d2l0Y2hDYXNlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKKyAgICAgICAgLCBt
X2Jsb2NrKFdURk1vdmUoYmxvY2spKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2l0
Y2hDYXNlKCkgPSBkZWZhdWx0OworCisgICAgU3dpdGNoQ2FzZShjb25zdCBTd2l0Y2hDYXNlJikg
PSBkZWxldGU7CisgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7CisgICAgQmxv
Y2sgbV9ibG9jazsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hT
dGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjE0ZDc4YzVkNmJkODE5NTAzZDYyY2Y1OGYwODAxM2Mz
ZjcwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBTd2l0Y2hTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBTd2l0
Y2hTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCisgICAgICAg
IDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKQorICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN3aXRjaFN0YXRlbWVudCgpID0gZGVmYXVsdDsK
KworICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsK
KyAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92YWx1ZTsKKyAgICBWZWN0
b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKK307CisKK30KKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVmY2Y2MjJlOGVh
NTI1ZmViOTk2N2NiYjllZjc2Yjc2MGExMmQxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgVGVybmFyeUV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUsIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCisgICAgICAg
ICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKKyAgICAgICAgLCBt
X2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFRlcm5h
cnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgVGVy
bmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHJhcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZDAwOWI5MzYyZDE3MGRkNTkzYzQwODYxOTM4ODBm
MDk5Y2Q3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUcmFwIDogcHVi
bGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVHJhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4p
CisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VHJhcCgpID0gZGVmYXVsdDsKKworICAgIFRyYXAoY29uc3QgVHJhcCYpID0g
ZGVsZXRlOworICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjEzNWU2YTczNGE2Njg4NzFi
YzczOTJhZTEwMWYzOGJlMGRhMzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRl
ICJXSExTTE5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOb2RlIHsKK3B1Ymxp
YzoKKyAgICBUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVs
dDsKKworICAgIFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAgIFR5cGUoVHlwZSYmKSA9
IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNv
bnN0ID0gMDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFy
Z3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlQXJndW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTkxYWU5NzcyZmZhMGQ2NjdmMTZmYmU3NDljM2Vm
YjA2ZWNmNWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PENvbnN0YW50RXhw
cmVzc2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7Cit0eXBlZGVmIFZlY3RvcjxUeXBlQXJndW1l
bnQ+IFR5cGVBcmd1bWVudHM7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVE
ZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE0OGIwMjk0NjIyMjUwYWQ0ODUxOGNkNGU5ZGNhNmUy
NDRiYTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZURl
ZmluaXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgVHlwZURlZmluaXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpU
eXBlPiYmIHR5cGUpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUp
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7
CisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmluZyBtX25h
bWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4gbV90eXBlOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0ODRk
ZjdjYThhYjQwODE1NjBjOTIwNDllY2M2NjgzMDcyYTJmNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2Uu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgVHlwZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQorICAgICAgICA6IG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAg
ICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIFR5
cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOworICAgIFR5cGVSZWZl
cmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2luKSwgU3RyaW5n
KG1fbmFtZSksIFR5cGVBcmd1bWVudHMobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOworfTsKKworfQorCit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODliMzAwM2U4YzY3MDU0MzM4YjViYzJhODllMWYxMDYyMDMxYTNjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBVbnNpZ25lZEludGVnZXJM
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAg
OiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBk
ZWZhdWx0OworCisgICAgZXhwbGljaXQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNp
Z25lZEludGVnZXJMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25lZCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX3ZhbHVlOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTBlYTkxZmMxZDAxMTg2OWY5MGQ4OTgwNjdmMjdhMDUxZGU4MmY5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhbHVl
IDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIFZhbHVlKCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBWYWx1ZShjb25z
dCBWYWx1ZSYpID0gZGVmYXVsdDsKKyAgICBWYWx1ZShWYWx1ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWY4OGM3MmM5NWQwMWVmMzg3ZGE4NGJjZmRkNzky
OWU1ZWRmOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
VmFyaWFibGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgVmFyaWFi
bGVEZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZp
ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiYmIHR5cGUsIFN0cmluZyYmIG5hbWUsIE9w
dGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBpbml0aWFsaXplcikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAgICwgbV90eXBl
KFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAg
ICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAgLCBtX2luaXRpYWxpemVy
KFdURk1vdmUoaW5pdGlhbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WYXJp
YWJsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbihj
b25zdCBWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgVmFyaWFibGVEZWNsYXJh
dGlvbihWYXJpYWJsZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tl
biBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExl
eGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAg
ICBPcHRpb25hbDxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gbV9pbml0aWFsaXplcjsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDE4YmZjOTljY2IzZWVlZmUxNDBiMzU1ZTVkZDlhZTZkNGJhNDFhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVmFy
aWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYmIHZhcmlhYmxlRGVjbGFyYXRpb25z
KQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJp
YWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb25zKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CisKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0gZGVsZXRlOworICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mJiBtX3ZhcmlhYmxl
RGVjbGFyYXRpb25zOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjMxYTQwM2FmMDQzNjhhZjY2ODc3MjE3YTY4
NDk0NWIwNTliZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAg
ICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZh
cmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVSZWZlcmVuY2UoY29u
c3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShW
YXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgVmFyaWFibGVSZWZl
cmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQorICAg
IHsKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UgcmVzdWx0KExleGVyOjpUb2tlbih2YXJpYWJs
ZURlY2xhcmF0aW9uLm9yaWdpbigpKSk7CisgICAgICAgIHJlc3VsdC5tX3ZhcmlhYmxlID0geyAm
dmFyaWFibGVEZWNsYXJhdGlvbiB9OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHN0YXRpYyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKEFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24mIGFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBWYXJp
YWJsZVJlZmVyZW5jZSByZXN1bHQoTGV4ZXI6OlRva2VuKGFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24ub3JpZ2luKCkpKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFyaWFibGUgPSB7ICZhbm9ueW1v
dXNWYXJpYWJsZURlY2xhcmF0aW9uIH07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZhcmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBPcHRpb25hbDxWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRp
b24qLCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uKj4+IG1fdmFyaWFibGU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk1ZGZkZDZi
N2YxMDE3MzU0NTc2YTA5YTBlMWY4YzE1MzUwZjcyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgV2hpbGVMb29w
IDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgV2hpbGVMb29wKExleGVyOjpUb2tl
biYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0
ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RG
TW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25h
bCkpCisgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKworICAgIFdoaWxlTG9vcChjb25zdCBX
aGlsZUxvb3AmKSA9IGRlbGV0ZTsKKyAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVs
dDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRp
b25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiBtX2JvZHk7Cit9OworCit9CisK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTZjNjkyZTJkODc5ZTU5MmQwN2Zh
ODIxZTQxYTA3MjkyMmQ0OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFkZjQzNGFhNzNjNGMyMTUyNGRjMzZlMzY4NzZkNmVmOTZm
MTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFub255bW91c1Zh
cmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
IgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisj
aW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQnJlYWsuaCIK
KyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMQ2FsbEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJl
c3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQ29udGlu
dWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJX
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25N
ZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZh
bGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtl
UG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1
ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRl
ICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMUGFy
YW1ldGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgorI2luY2x1ZGUgIldITFNM
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIK
KyNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIK
KyNpbmNsdWRlICJXSExTTFJldHVybi5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNp
bmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgorI2luY2x1ZGUg
IldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIK
KyNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFN0
cnVjdHVyZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKKyNpbmNsdWRl
ICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTFRyYXAuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNp
bmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRp
b24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVk
ZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFBhcnNlciB7CisKK307CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9n
cmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjVlNjEzYTlmYjM1NDI3N2I3OGIzNTVlNjY4ZGY2M2E0ZmMzMzE3
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJvZ3JhbS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNURnVuY3Rpb25EZWZpbml0aW9uLmgiCisj
aW5jbHVkZSAiV0hMU0xBU1ROYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xBU1ROYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVFN0cnVj
dHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVFR5cGVEZWZpbml0aW9uLmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK2NsYXNzIFByb2dyYW0geworcHVibGljOgorICAgIFByb2dyYW0oKSA9IGRl
ZmF1bHQ7CisgICAgUHJvZ3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKKworICAgIHZvaWQgYXBw
ZW5kKEFTVDo6VHlwZURlZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKKyAgICB7CisgICAgICAg
IG1fdHlwZURlZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKHR5cGVEZWZpbml0aW9uKSk7CisgICAg
fQorICAgIHZvaWQgYXBwZW5kKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYmIHN0cnVjdHVyZURl
ZmluaXRpb24pCisgICAgeworICAgICAgICBtX3N0cnVjdHVyZURlZmluaXRpb25zLmFwcGVuZChX
VEZNb3ZlKHN0cnVjdHVyZURlZmluaXRpb24pKTsKKyAgICB9CisgICAgdm9pZCBhcHBlbmQoQVNU
OjpFbnVtZXJhdGlvbkRlZmluaXRpb24mJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCisgICAgewor
ICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKFdURk1vdmUoZW51bWVyYXRp
b25EZWZpbml0aW9uKSk7CisgICAgfQorICAgIHZvaWQgYXBwZW5kKEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgbV9mdW5jdGlvbkRl
ZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpOworICAgIH0KKyAg
ICB2b2lkIGFwcGVuZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucy5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7CisgICAgfQor
ICAgIHZvaWQgYXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmFwcGVu
ZChXVEZNb3ZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4gbV90eXBlRGVmaW5pdGlvbnM7CisgICAgVmVj
dG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsKKyAg
ICBWZWN0b3I8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+IG1fZW51bWVyYXRpb25EZWZpbml0
aW9uczsKKyAgICBWZWN0b3I8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+IG1fZnVuY3Rpb25EZWZp
bml0aW9uczsKKyAgICBWZWN0b3I8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiBtX25h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOworICAgIFZlY3RvcjxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOworfTsKKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBhOGM0NzM3MjhhYTg4Nzg2M2Y2NzQ0Yzc2MWNkMGZmYTk4YmRk
YTY0Li41NDM4ZjRkZWFiMzlhYzU1MzgzODQwODQ0NGNlNTE2Y2ZiMzExZWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMzAyLDYgKzMwMiw3IEBAIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKIAogTW9kdWxlcy93ZWJncHUvRE9NV2luZG93V2ViR1BV
LmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKK01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cExheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxZGY4ZDdlMTMwMWQ3YTAwYzE2OTAzOWQzMjI4ZTY3YjBiMmQxMDli
Li42ODIxZGIwNTUzMGZlZDZmNjUyYWUyZmVmMTMwYjUzNDI1NTFjNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzIxMSw2
ICsxMzIxMSw3NyBAQAogCQlDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRC
dWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMVHJhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGNDIxQ0Q4
OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xDb250aW51ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZG
NjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTEJvb2xlYW5MaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEluZGV4RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMQmFzZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRG9XaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY2RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGRDIx
Q0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMU3RydWN0dXJlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VF
eHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAv
KiBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZl
cmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDMyMUNEODlDNTAw
MjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmV0dXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBX
SExTTFdoaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFdoaWxlTG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xG
dW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uQXR0cmlidXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3
OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbW1hRXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwNzIxQ0Q4OUM4
MDAyMjc5NzkgLyogV0hMU0xOdWxsTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE51bGxM
aXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA4MjFDRDg5Qzkw
MDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA5
MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwQTIxQ0Q4
OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjcwRjIxQ0Q4OUNGMDAyMjc5NzkgLyogV0hMU0xBbm9ueW1vdXNW
YXJpYWJsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQW5vbnltb3VzVmFyaWFi
bGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxMDIx
Q0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxNTIx
Q0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MTcyMUNEODlENjAwMjI3OTc5IC8qIFdITFNMUGFyYW1ldGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUGFyYW1ldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3
MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVy
bmFyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5Nzkg
LyogV0hMU0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hM
U0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI0MjFDRDg5RTEwMDIyNzk3
OSAvKiBXSExTTE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0
aW9uTWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI3MjFDRDg5
RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3
OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZURlZmlu
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkEyMUNEODlFNzAw
MjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1h
a2VQb2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQb2ludGVyRXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyRDIxQ0Q4OUU5
MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkYyMUNEODlF
QzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQb2lu
dGVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczMDIxQ0Q4OUVE
MDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5Nzkg
LyogV0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xG
bG9hdExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczQTIx
Q0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJv
Z3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFNzFEOUU0RTk5MDBG
NUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0
aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4RTYxMUZFODk3
OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2Fj
aGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUyMjksMTIgKzI1
MzAwLDkxIEBACiAJCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAvKiBXSExTTCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxQkY2RjEyMUNEODk4RDAw
MjI3OTc5IC8qIEFTVCAqLywKIAkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xM
ZXhlci5jcHAgKi8sCiAJCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIu
aCAqLywKKwkJCQlDMjFCRjczNzIxQ0Q4QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICov
LAorCQkJCUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovLAorCQkJ
CUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDMjFC
RjZGMTIxQ0Q4OThEMDAyMjc5NzkgLyogQVNUICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDMjFCRjcwRjIxQ0Q4OUNGMDAyMjc5NzkgLyogV0hMU0xBbm9u
eW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3
OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCisJCQkJQzIxQkY3MDkyMUNEODlD
QTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCisJCQkJQzIxQkY3MzAyMUNEODlFRDAw
MjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwQTIx
Q0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKKwkJCQlD
MjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLywKKwkJCQlD
MjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovLAorCQkJCUMyMUJGNkY2
MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8sCisJCQkJQzIxQkY3
MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKKwkJCQlDMjFCRjcyMjIxQ0Q4
OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxNjIx
Q0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzA2
MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJG
NzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovLAorCQkJ
CUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5
IC8qIFdITFNMQ29udGludWUuaCAqLywKKwkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyog
V0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAy
Mjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RkIyMUNEODlCRTAw
MjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAy
Mjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8sCisJCQkJQzIx
QkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8s
CisJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIu
aCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmgg
Ki8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAq
LywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAq
LywKKwkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCisJ
CQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LywKKwkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0
aW9uLmggKi8sCisJCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25E
ZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZT
dGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRl
eEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJ
bnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExT
TExvZ2ljYWxFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8q
IFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAy
Mjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCisJCQkJQzIx
QkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8s
CisJCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzI0MjFDRDg5RTEwMDIyNzk3OSAvKiBX
SExTTE5vZGUuaCAqLywKKwkJCQlDMjFCRjcwNzIxQ0Q4OUM4MDAyMjc5NzkgLyogV0hMU0xOdWxs
TGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNzE3MjFDRDg5RDYwMDIyNzk3
OSAvKiBXSExTTFBhcmFtZXRlci5oICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAv
KiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8q
IFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEIyMUNEODlD
QzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIyMUNEODlEOTAw
MjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJG
NzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKKwkJCQlDMjFC
RjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCisJCQkJ
QzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCisJCQkJQzIxQkY2
RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjczNjIx
Q0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAq
LywKKwkJCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuaCAqLywKKwkJCQlDMjFCRjcxMjIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xTdGF0ZW1lbnQu
aCAqLywKKwkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0
dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3
aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjczMTIxQ0Q4OUVFMDAyMjc5NzkgLyogV0hMU0xTd2l0
Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxQzIxQ0Q4OURBMDAyMjc5NzkgLyogV0hMU0xU
ZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkYzMjFDRDg5QUQwMDIyNzk3OSAvKiBX
SExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBl
LmggKi8sCisJCQkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50
LmggKi8sCisJCQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRp
b24uaCAqLywKKwkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJl
bmNlLmggKi8sCisJCQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNkZDMjFDRDg5QkYwMDIyNzk3OSAvKiBXSExT
TFZhbHVlLmggKi8sCisJCQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3MTMyMUNEODlE
MjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKKwkJCQlDMjFCRjcwNDIx
Q0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
QVNUOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzk2RjVFQkYxQjU4NzIy
NjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357974</attachid>
            <date>2018-12-21 13:27:55 -0800</date>
            <delta_ts>2019-01-03 08:34:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192991-20181221132754.patch</filename>
            <type>text/plain</type>
            <size>214627</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3NWJlN2JmYzhkMWNi
MGQzY2QwZGU2NjNmNmRhNDExMjliYTBkOC4uMWNlMWE4ZGFmOGUwNGI0OWFiNjY2ZjZmZjc4MjUz
ODVkZDNhMWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxOC0xMi0yMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhbGwgdGhlIEFTVCBub2RlcyB3
aGljaCB3aWxsIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgcGFyc2VyLgorICAgICAgICBU
aGlzIHBhdGNoIHVzZWQgdG8gYmUgYSBwYXJ0IG9mIHRoZSAiY3JlYXRlIGEgV0hMU0wgcGFyc2Vy
IiBwYXRjaCBidXQgSSBzcGxpdCB0aGVtCisgICAgICAgIG91dCBpbiBvcmRlciB0byBhaWQgcmV2
aWV3aW5nLgorCisgICAgICAgIFRoZSBjbGFzc2VzIHdlcmUgbWVjaGFuaWNhbGx5IGNyZWF0ZWQg
dG8gbWF0Y2ggdGhlIHJlc3VsdCBvZiB0aGUgcGFyc2VyLiBUaGVyZSBhcmUKKyAgICAgICAgbm9k
ZXMgZm9yIHRoaW5ncyBsaWtlIEZvckxvb3BzLCBMb2dpY2FsTm90RXhwcmVzc2lvbnMsIERlcmVm
ZXJlbmNlRXhwcmVzc2lvbnMsCisgICAgICAgIFN0cnVjdHVyZURlZmluaXRpb25zLCBhbmQgdGhp
bmdzIGxpa2UgdGhhdC4gVGhlIGNsYXNzZXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhbnkgbG9naWMK
KyAgICAgICAgaW4gdGhlbSAtIHRoZXkgYXJlIGN1cnJlbnRseSBqdXN0IGNvbnRhaW5lcnMgdG8g
aG9sZCB0aGUgc3RydWN0dXJlIG9mIHRoZSBwYXJzZWQKKyAgICAgICAgcHJvZ3JhbS4gU29tZSBv
ZiB0aGVzZSBub2RlcyAobGlrZSBjb25zdGV4cHJzKSBhcmUganVzdCBWYXJpYW50cyBvZiB0aGUg
dmFyaW91cyB0aGluZ3MKKyAgICAgICAgdGhleSBjYW4gaW4gdGhlIGZvcm0gb2YuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlIHBhcnNlciBkb2Vzbid0IGV4aXN0IHRvIGNyZWF0
ZSB0aGUgbmV3IEFTVCBub2RlcyB5ZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbjo6QW5v
bnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJy
YXlSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBcnJheVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJh
eVR5cGU6OkFycmF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5
cGU6Om51bUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpBc3NpZ25tZW50RXhwcmVzc2lvbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0
cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0
aW9uQXR0cmlidXRlOjpCYXNlRnVuY3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkJhc2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpCbG9jayk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFuTGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJyZWFrOjpCcmVhayk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2Vt
YW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2
YXJpYWJsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
YWxsRXhwcmVzc2lvbjo6Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OkNvbnN0YW50RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVt
ZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bnRpbnVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29udGludWU6
OkNvbnRpbnVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJl
ZmVyZW5jZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpEZXJlZmVyZW5jZUV4cHJlc3Npb246OkRlcmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6RG9XaGlsZUxvb3ApOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RF
eHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDo6RWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXI6OkVu
dW1lcmF0aW9uTWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHBy
ZXNzaW9uOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZhbGx0aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RmFsbHRocm91Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OkZ1bmN0
aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbjo6dGFrZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uOjp0YWtlQXR0cmlidXRlQmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6dGFrZUVudHJ5UG9pbnRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnRha2VU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246
OnRha2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb246OnRha2VQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb246OnRha2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpGdW5jdGlvbkRlZmluaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9uOjpy
ZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW5kZXhFeHByZXNzaW9uOjpJbmRleEV4cHJlc3Npb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OkludGVnZXJMaXRlcmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4
cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6TG9naWNhbEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TG9naWNhbEV4cHJlc3Npb246OnR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246OkxvZ2ljYWxO
b3RFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uOjpNYWtlUG9pbnRlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246OnJlc3RyaWN0ZWQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGU6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU6OndpZHRo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6ZGVwdGggY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlBhcmFtZXRlcjo6UGFyYW1ldGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBvaW50ZXJUeXBlOjpQb2ludGVyVHlwZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbjo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpzZXROZXdWYWx1ZUV4cHJlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbjo6c2V0UmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpvbGRWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpuZXdW
YXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OlJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVmZXJlbmNlVHlwZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50aWM6
OlJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3Vy
Y2VTZW1hbnRpYzo6bW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpS
ZXNvdXJjZVNlbWFudGljOjppbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZXNvdXJjZVNlbWFudGljOjpzcGFjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6UmV0dXJuOjpSZXR1cm4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYzo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OlN0YWdlSW5PdXRT
ZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50
aWM6OmluZGV4IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OlN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0cnVjdHVyZURlZmluaXRpb246OlN0cnVjdHVyZURlZmluaXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1
Y3R1cmVFbGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hDYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNo
Q2FzZTo6U3dpdGNoQ2FzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3dpdGNoU3RhdGVtZW50OjpTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OlRlcm5hcnlFeHByZXNz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlvbjo6VHlw
ZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBl
UmVmZXJlbmNlOjpUeXBlUmVmZXJlbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYWx1
ZTo6VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uOjpWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb246Om9yaWdpbiBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVSZWZlcmVu
Y2U6OlZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlOjp3cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xXaGlsZUxvb3AuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpXaGlsZUxvb3A6OldoaWxlTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTItMjAgIEp1c3RpbiBG
YW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBDb252ZXJ0IFdl
YkdQVUJpbmRHcm91cHMgaW50byBNVExBcmd1bWVudEVuY29kZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2MWVkMTI2
MTkxMDcwMTAzZjhlODdjODBlMzEwYzQxNGQzNDliNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFub255bW91c1ZhcmlhYmxl
RGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Bbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJh
dGlvbihjb25zdCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAg
QW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbihBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9u
JiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tlbiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYmQxYjM2NWYxOGM1NTRkZGJjNGYzZDE2ZDNjYjAxZWI2ZjE0MmI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQXJyYXlSZWZlcmVuY2VUeXBlIDogcHVibGlj
IFJlZmVyZW5jZVR5cGUgeworcHVibGljOgorICAgIEFycmF5UmVmZXJlbmNlVHlwZShMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5
cGU+JiYgZWxlbWVudFR5cGUpCisgICAgICAgIDogUmVmZXJlbmNlVHlwZShXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoYWRkcmVzc1NwYWNlKSwgV1RGTW92ZShlbGVtZW50VHlwZSkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFycmF5UmVmZXJlbmNlVHlwZSgpID0gZGVmYXVsdDsKKwor
ICAgIEFycmF5UmVmZXJlbmNlVHlwZShjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmKSA9IGRlbGV0
ZTsKKyAgICBBcnJheVJlZmVyZW5jZVR5cGUoQXJyYXlSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGU+
KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRU
eXBlKCktPmNsb25lKCkpOworICAgIH0KKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBcnJheVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGRhMjg0OGFmNGMwZGI5MGJlNTky
Mjc0NDQ5YWU2MzdhMTMwODVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlUeXBl
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5
cGUsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAg
ICAgICAsIG1fbnVtRWxlbWVudHMobnVtRWxlbWVudHMpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgfkFycmF5VHlwZSgpID0gZGVmYXVsdDsKKworICAgIEFycmF5VHlwZShjb25zdCBBcnJh
eVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBBcnJheVR5cGUoQXJyYXlUeXBlJiYpID0gZGVmYXVsdDsK
KworICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50
czsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZT4oTGV4ZXI6
OlRva2VuKG1fb3JpZ2luKSwgbV9lbGVtZW50VHlwZS0+Y2xvbmUoKSwgbV9udW1FbGVtZW50cyk7
CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZT4gbV9lbGVtZW50VHlwZTsKKyAgICB1bnNpZ25lZCBtX251bUVsZW1l
bnRzOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTYzNGNjYTdiZmZhZjI1NTYyNThiMzJhYWU4NWYx
MmExNWFhNzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdo
dCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworCisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IG1fbGVmdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9y
aWdodDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzI0NGNhODJhOTExZGM1NjFlYTRiYmE4OTA0
ZThkMTg0ZWRmNjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAg
IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDog
bV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5C
YXNlRnVuY3Rpb25BdHRyaWJ1dGUoKSA9IGRlZmF1bHQ7CisKKyAgICBCYXNlRnVuY3Rpb25BdHRy
aWJ1dGUoY29uc3QgQmFzZUZ1bmN0aW9uQXR0cmlidXRlJikgPSBkZWxldGU7CisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NzMzNzJmMTM3MDE4MDA0
ZTNjNGQ1ZjIzMzM0NDE0NzQ0OTNiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBCYXNlU2VtYW50aWMgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgQmFzZVNl
bWFudGljKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkJhc2VTZW1hbnRpYygpID0g
ZGVmYXVsdDsKKworICAgIEJhc2VTZW1hbnRpYyhjb25zdCBCYXNlU2VtYW50aWMmKSA9IGRlbGV0
ZTsKKyAgICBCYXNlU2VtYW50aWMoQmFzZVNlbWFudGljJiYpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMTcyNmEzMWEwNDgxNzVjMjkwNDllODIyZWM5MDIyYzdm
OTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCbG9jay5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFT
VCB7CisKK2NsYXNzIEJsb2NrIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgQmxv
Y2soTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVu
dD4+JiYgc3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRlbWVudHMpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5CbG9jaygpID0gZGVmYXVsdDsKKworICAgIEJsb2NrKGNvbnN0IEJs
b2NrJikgPSBkZWxldGU7CisgICAgQmxvY2soQmxvY2smJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOwor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZTkwODgxYmQ3NzgzMjIwNWE2NGQ5MjU1MDgwYmNhMWQzODNkNjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Qm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBCb29s
ZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBCb29sZWFu
TGl0ZXJhbChCb29sZWFuTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsK
K307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MjUyMWFl
NTgzZjhhNDFmZGNjNjIzNTk1MWNmZTM2ODM1MDA5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIEJy
ZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShv
cmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5CcmVhaygpID0gZGVmYXVsdDsK
KworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7CisgICAgQnJlYWsoQnJlYWsmJikg
PSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJ1aWx0SW5TZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNDZkZjMyY2ZhYTJlNmJmZTQzZGZi
ZGIzMzA3OWMxYzRlOGIwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYyA6
IHB1YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVmFyaWFibGUg
eworICAgICAgICBTVkluc3RhbmNlSUQsCisgICAgICAgIFNWVmVydGV4SUQsCisgICAgICAgIFBT
aXplLAorICAgICAgICBTVlBvc2l0aW9uLAorICAgICAgICBTVklzRnJvbnRGYWNlLAorICAgICAg
ICBTVlNhbXBsZUluZGV4LAorICAgICAgICBTVklubmVyQ292ZXJhZ2UsCisgICAgICAgIFNWVGFy
Z2V0LAorICAgICAgICBTVkRlcHRoLAorICAgICAgICBTVkNvdmVyYWdlLAorICAgICAgICBTVkRp
c3BhdGNoVGhyZWFkSUQsCisgICAgICAgIFNWR3JvdXBJRCwKKyAgICAgICAgU1ZHcm91cEluZGV4
LAorICAgICAgICBTVkdyb3VwVGhyZWFkSUQKKyAgICB9OworCisgICAgQnVpbHRJblNlbWFudGlj
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVmFyaWFibGUgdmFyaWFibGUsIE9wdGlvbmFsPHVuc2ln
bmVkPiYmIHRhcmdldEluZGV4ID0gV1RGOjpudWxsb3B0KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKKyAgICAg
ICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5CdWlsdEluU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBCdWlsdElu
U2VtYW50aWMoY29uc3QgQnVpbHRJblNlbWFudGljJikgPSBkZWxldGU7CisgICAgQnVpbHRJblNl
bWFudGljKEJ1aWx0SW5TZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJsZSB2YXJp
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KKworcHJpdmF0ZToKKyAgICBWYXJp
YWJsZSBtX3ZhcmlhYmxlOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3RhcmdldEluZGV4Owor
fTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMWJhODU2M2I0MWM0NGIzZTIzNmYwMjBhNGI2MTE2NzIxY2YzMDUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBDYWxsRXhwcmVzc2lvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDYWxsRXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4+JiYgYXJndW1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmln
aW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fYXJndW1l
bnRzKFdURk1vdmUoYXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q2Fs
bEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDYWxsRXhwcmVzc2lvbihjb25zdCBDYWxs
RXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENhbGxFeHByZXNzaW9uKENhbGxFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
N2RjNzBiYTIwMTNlNmU0ZTU1YWM3OTIwYTA5NjFiY2I4YTMzMjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJl
c3Npb24uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
Q29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENvbW1h
RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgQ29tbWFFeHByZXNz
aW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIENvbW1hRXhwcmVzc2lv
bihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fbGlzdDsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2E4
YjM2OWQ2YTkyYmY1OTk4MzNkYzQ1YzAwNDc4ZTIyNWI5ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCisj
aW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xJbnRl
Z2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCisvLyBGSVhNRTogbWFjT1MgU2llcnJhIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHB1
dHRpbmcgVmFyaWFudHMgaW5zaWRlIFZhcmlhbnRzLAorLy8gc28gdGhpcyBpcyBhIHdyYXBwZXIg
Y2xhc3MgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uIEFzIHNvb24gYXMgd2UgZG9u
J3QKKy8vIGhhdmUgdG8gc3VwcG9ydCBTaWVycmEsIHRoaXMgY2FuIGJlIG1pZ3JhdGVkIHRvIGEg
VmFyaWFudCBwcm9wZXIuCitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gOiBwdWJsaWMgVmFyaWFu
dDwKKyAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAg
IEZsb2F0TGl0ZXJhbCwKKyAgICBOdWxsTGl0ZXJhbCwKKyAgICBCb29sZWFuTGl0ZXJhbCwKKyAg
ICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgID4gewor
cHVibGljOgorICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJM
aXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAg
ICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAg
ICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3Zl
KGludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9u
KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQorICAgICAg
ICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFs
LAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKHVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24oRmxvYXRM
aXRlcmFsJiYgZmxvYXRMaXRlcmFsKQorICAgICAgICA6IFZhcmlhbnQ8CisgICAgICAgIEludGVn
ZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9h
dExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwK
KyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAg
ICAgICAgPihXVEZNb3ZlKGZsb2F0TGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0
YW50RXhwcmVzc2lvbihOdWxsTGl0ZXJhbCYmIG51bGxMaXRlcmFsKQorICAgICAgICA6IFZhcmlh
bnQ8CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAg
ICBCb29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgPihXVEZNb3ZlKG51bGxMaXRlcmFsKSkKKyAgICB7Cisg
ICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNzaW9uKEJvb2xlYW5MaXRlcmFsJiYgYm9vbGVhbkxp
dGVyYWwpCisgICAgICAgIDogVmFyaWFudDwKKyAgICAgICAgSW50ZWdlckxpdGVyYWwsCisgICAg
ICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsCisgICAgICAgIEZsb2F0TGl0ZXJhbCwKKyAgICAg
ICAgTnVsbExpdGVyYWwsCisgICAgICAgIEJvb2xlYW5MaXRlcmFsLAorICAgICAgICBDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZQorICAgICAgICA+KFdURk1vdmUo
Ym9vbGVhbkxpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24o
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJiBjb25zdGFudEV4
cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkKKyAgICAgICAgOiBWYXJpYW50PAor
ICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwK
KyAgICAgICAgRmxvYXRMaXRlcmFsLAorICAgICAgICBOdWxsTGl0ZXJhbCwKKyAgICAgICAgQm9v
bGVhbkxpdGVyYWwsCisgICAgICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlCisgICAgICAgID4oV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkpCisgICAgeworICAgIH0KKworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzI0YTk4YjJj
YWJiMGY5ZWE4NWMwYmExZTA5MGE2NjA4ZGU4MjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSA6IHB1YmxpYyBOb2Rl
IHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xlZnQo
V1RGTW92ZShsZWZ0KSkKKyAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgPSBkZWZhdWx0OworICAgIENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9u
TWVtYmVyUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9r
ZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fbGVmdDsKKyAgICBTdHJpbmcgbV9yaWdodDsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI5NWE1
YTc3ODcyYWFkYjVlNGJhMjA3M2YzYmJhOTI3ZWQ2ZTM5MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGlj
OgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0ZW1l
bnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db250aW51
ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxldGU7
CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MjQzM2JhMjU5N2M1YmU1NjE1NTE3YjI3ZTM4N2E1YTY2ZWJhNTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBE
ZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5jZUV4cHJlc3Np
b24mJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiBtX3BvaW50ZXI7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxl
TG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwMjNkOGRjN2FmZjkyZTRlMjZmMjg0MDRkYjQ5NDkzMDM2MTJl
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1l
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBEb1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29u
ZGl0aW9uYWwpCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAg
LCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUo
Y29uZGl0aW9uYWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgp
ID0gZGVmYXVsdDsKKworICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxl
dGU7CisgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fYm9keTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRG90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0M2M2OWVlNTQxMTg5OWVj
MzE1ZmQ1MmVjMWNmYzY0NGFhZTc1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb3RFeHByZXNzaW9uLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBEb3RFeHByZXNzaW9uIDogcHVibGljIFByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgRG90RXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGJhc2UsIFN0cmlu
ZyYmIGZpZWxkTmFtZSkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1fZmllbGROYW1lKFdURk1vdmUo
ZmllbGROYW1lKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RG90RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKworICAgIERvdEV4cHJlc3Npb24oY29uc3QgRG90RXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIERvdEV4cHJlc3Npb24oRG90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1lOworfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjRkMDc1MTJjMzhjNzc3MDgyYmIyOTUwOGU1NTkxYmQyNDdjMGVlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMU3RhdGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0
ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGVmZmVjdGZ1bEV4cHJl
c3Npb24pCisgICAgICAgIDogU3RhdGVtZW50KExleGVyOjpUb2tlbihlZmZlY3RmdWxFeHByZXNz
aW9uLT5vcmlnaW4oKSkpCisgICAgICAgICwgbV9lZmZlY3RmdWxFeHByZXNzaW9uKFdURk1vdmUo
ZWZmZWN0ZnVsRXhwcmVzc2lvbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRl
bGV0ZTsKKyAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWE2NzBjZWJlYTBjZmU5NWU3ZGE4YjEyOTE0NTUxNTE5NDQ4MjQxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9u
TWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIFR5cGUgewor
cHVibGljOgorICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiYmIHR5cGUsIFZlY3RvcjxFbnVt
ZXJhdGlvbk1lbWJlcj4gbWVtYmVycykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUodHlwZSkpCisgICAgICAgICwgbV9tZW1iZXJzKFdURk1vdmUobWVtYmVycykpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihjb25zdCBFbnVtZXJhdGlvbkRlZmluaXRp
b24mKSA9IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oRW51bWVyYXRpb25EZWZp
bml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tl
biBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
PiBtX3R5cGU7CisgICAgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBtX21lbWJlcnM7Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4MzQzYWI0YWRiMzhlMWFhNWQ1YjY5NDRjMGE5ODgzNGI0YWY1NjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5v
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7
CitwdWJsaWM6CisgICAgRW51bWVyYXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBT
dHJpbmcmJiBuYW1lLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6
Om51bGxvcHQpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZh
dWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9
IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworfTsK
KworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUz
MTRjZjIwODI5ODdlNTBmZTcwMDRkYjE2MWRiOWM4YjhiYjhkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24u
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFs
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgRXhwcmVzc2lvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6
CisgICAgRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmln
aW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNz
aW9uJikgPSBkZWZhdWx0OworICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CisKKyAgICBMZXhlcjo6VG9rZW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0K
KworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit9CisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzc0ZDhmOGQ5ZTA0
YTJjZDYwYzU1ODNmMjExM2E2ZjIzMjExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworY2xhc3MgRmFsbHRocm91Z2ggOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoK
KyAgICBGYWxsdGhyb3VnaChMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogU3RhdGVt
ZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RmFsbHRo
cm91Z2goKSA9IGRlZmF1bHQ7CisKKyAgICBGYWxsdGhyb3VnaChjb25zdCBGYWxsdGhyb3VnaCYp
ID0gZGVsZXRlOworICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYmYxZGZiMDc2YzFhNzA1NjBjMmMyMWQ4ZWZiMDIwM2MxZjYxMDRkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmxvYXRMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRmxvYXRMaXRlcmFs
IDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIEZsb2F0TGl0ZXJhbChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfkZsb2F0TGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IEZsb2F0
TGl0ZXJhbChjb25zdCBGbG9hdExpdGVyYWwmKSA9IGRlZmF1bHQ7CisgICAgRmxvYXRMaXRlcmFs
KEZsb2F0TGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFiZGU5YzU4ZTBh
NTE0MTJlZTcwMmY3YmYwMDk5Yzg2MTUwOWQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBGb3JMb29wIDogcHVibGljIFN0YXRlbWVudCB7
CitwdWJsaWM6CisgICAgRm9yTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZhcmlhbnQ8VmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4m
JiBpbml0aWFsaXphdGlvbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9u
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBpbmNyZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4p
KQorICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24oV1RGTW92ZShpbml0aWFsaXphdGlvbikpCisg
ICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShjb25kaXRpb24pKQorICAgICAgICAsIG1faW5j
cmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5
KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Rm9yTG9vcCgpCisgICAgeworICAgIH0K
KworICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOworICAgIEZvckxvb3AoRm9y
TG9vcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgVmFyaWFudDxWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2luaXRpYWxp
emF0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbjsgLy8g
bnVsbGFibGUKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmNyZW1lbnQ7IC8v
IG51bGxhYmxlCisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5OworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYmQ3MmQ0YTkwYzUxZGY3YTJiMGZmY2MxODMzMjg0MzZlMmI2NzBmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RnVuY3Rpb25BdHRyaWJ1dGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZT4gRnVuY3Rpb25BdHRyaWJ1dGU7Cit0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbkF0
dHJpYnV0ZT4gQXR0cmlidXRlQmxvY2s7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MDYwYWFhODQwYTc1OTBj
Mjg1MWZkYWZhMzhiYjc4ZGE4YTk4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJh
bWV0ZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0
aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBF
bnRyeVBvaW50VHlwZSB7CisgICAgICAgIFZlcnRleCwKKyAgICAgICAgRnJhZ21lbnQsCisgICAg
ICAgIENvbXB1dGUKKyAgICB9OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIE9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4m
JiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8
QVNUOjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2Nr
KSkKKyAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQorICAgICAgICAs
IG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQorICAgICAgICAsIG1f
c2VtYW50aWMoV1RGTW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkZ1bmN0aW9uRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBGdW5jdGlvbkRlY2xhcmF0
aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICBGdW5jdGlvbkRl
Y2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgTGV4ZXI6
OlRva2VuJiYgdGFrZU9yaWdpbigpIHsgcmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CisgICAg
QXR0cmlidXRlQmxvY2smJiB0YWtlQXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBXVEZNb3ZlKG1f
YXR0cmlidXRlQmxvY2spOyB9CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiYgdGFrZUVu
dHJ5UG9pbnRUeXBlKCkgeyByZXR1cm4gV1RGTW92ZShtX2VudHJ5UG9pbnRUeXBlKTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+JiYgdGFrZVR5cGUoKSB7IHJldHVybiBXVEZNb3Zl
KG1fdHlwZSk7IH0KKyAgICBTdHJpbmcmJiB0YWtlTmFtZSgpIHsgcmV0dXJuIFdURk1vdmUobV9u
YW1lKTsgfQorICAgIFBhcmFtZXRlcnMmJiB0YWtlUGFyYW1ldGVycygpIHsgcmV0dXJuIFdURk1v
dmUobV9wYXJhbWV0ZXJzKTsgfQorICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgdGFrZVNl
bWFudGljKCkgeyByZXR1cm4gV1RGTW92ZShtX3NlbWFudGljKTsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJs
b2NrOworICAgIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlR5cGU+IG1fdHlwZTsKKyAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE9wdGlvbmFsPEFTVDo6U2VtYW50aWM+
IG1fc2VtYW50aWM7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVmMGIxZjA4MWEyMDUzMDVmNzY4ZDhhZmZj
NWFhNTY2YjFlZDNjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRl
Y2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2ssIGJvb2wgcmVzdHJp
Y3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNs
YXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKKyAgICAgICAgLCBt
X3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RnVu
Y3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWZpbml0aW9uKGNv
bnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCByZXN0cmljdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGVkOyB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sg
bV9ibG9jazsKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTElmU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRiMDhiMWEyYWY4NjAxODY0NmRh
OWU3Mzc1YTczOGQ3MmVmYzJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBJZlN0YXRlbWVudCA6IHB1Ymxp
YyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIElmU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0ZDo6dW5p
cXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSwgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4mJiBl
bHNlQm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCisgICAgICAgICwgbV9ib2R5KFdU
Rk1vdmUoYm9keSkpCisgICAgICAgICwgbV9lbHNlQm9keShXVEZNb3ZlKGVsc2VCb2R5KSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+SWZTdGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIElmU3RhdGVt
ZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Rh
dGVtZW50PiBtX2JvZHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9lbHNlQm9k
eTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YmI2YTBmMGRhYjE0ZDg4NjZlYzdmYjIyZmI4NmIwYzdlM2ZkMmRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW5kZXhFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitj
bGFzcyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsK
K3B1YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBiYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4mJiBpbmRleCkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVs
dDsKKworICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKKyAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9pbmRleDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWNkMjUzNDZjNDMyOWY1NDY3MzRiNWNhMzdhZTFhY2I5MGM1MjhiYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVn
ZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2lu
Y2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgSW50ZWdlckxpdGVyYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgSW50ZWdlckxpdGVyYWwoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBpbnQgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBJbnRlZ2VyTGl0
ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJhbCYpID0gZGVmYXVsdDsKKyAgICBJbnRlZ2VyTGl0ZXJh
bChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fdmFsdWU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJmYjA0NzVkN2IyN2VhOWY1MDNmZjdhYWYyNzVjOWRkMjk1MmRiNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xM
b2dpY2FsRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIExvZ2ljYWxFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIEFuZCwKKyAgICAgICAgT3IKKyAgICB9OworCisgICAgTG9naWNhbEV4cHJlc3Np
b24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBUeXBlIHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPiYmIGxlZnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIHJpZ2h0KQorICAg
ICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RG
TW92ZShyaWdodCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxFeHByZXNz
aW9uKCkgPSBkZWZhdWx0OworCisgICAgTG9naWNhbEV4cHJlc3Npb24oY29uc3QgTG9naWNhbEV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihMb2dpY2FsRXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbV9sZWZ0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3Jp
Z2h0OworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5v
dEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTMzNDRmM2IwZDgwZjkzYzFlMjQ2YWZmMmYxMzU1
NGM0YTcxYzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIG9wZXJhbmQpCisgICAgICAgIDogRXhwcmVzc2lvbihX
VEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3BlcmFuZCkpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OworCisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+IG1fb3BlcmFuZDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
OWFjMjRkMjQ5YmQ0N2Y4ZDc0MmViZDk0MzNiOGY4MGVlMzI3MmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE0NmZlMjAzYmJiY2RiNmIxN2U0ODEyNmIwM2U1YTEzY2U2NDIzY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBN
YWtlUG9pbnRlckV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
TWFrZVBvaW50ZXJFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+TWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisg
ICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0IE1ha2VQb2ludGVyRXhwcmVzc2lvbiYpID0g
ZGVsZXRlOworICAgIE1ha2VQb2ludGVyRXhwcmVzc2lvbihNYWtlUG9pbnRlckV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PiBtX2xWYWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGU2ZWJhNzAwZmIw
M2M0MzMxNDJkMDlkODIzYWM2MjRlN2NiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIEZ1bmN0aW9u
RGVjbGFyYXRpb24geworcHVibGljOgorICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBPcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OlR5cGU+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9w
dGlvbmFsPEFTVDo6U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgcmVzdHJpY3RlZCkKKyAgICAg
ICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShhdHRyaWJ1
dGVCbG9jayksIFdURk1vdmUoZW50cnlQb2ludFR5cGUpLCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAg
LCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRl
OworICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHJlc3RyaWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fcmVzdHJpY3RlZDsKK307CisK
K30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YWRmZTJmZmJiN2Y4ZWUxM2NkMWMzYjFmMGI1YzFlZjk2ZTJkODlh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVB
cmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgTmF0
aXZlVHlwZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwg
VHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1f
dHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBOYXRp
dmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikgPSBkZWxldGU7
CisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YzRmMDA2MGMwNGQ3
NzIyZmU2NGIyYzMxNzI3YjU0YjJiMmUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgTm9kZSB7CitwdWJsaWM6CisgICAgTm9kZSgpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgfk5vZGUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBOb2RlKGNvbnN0IE5vZGUm
KSA9IGRlZmF1bHQ7CisgICAgTm9kZShOb2RlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTA1ZjJiM2ZiN2NkNzI4NzVhYmFhY2VmODgyMWVkZDJhMGI3YzZhOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRl
cmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTnVsbExpdGVyYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgTnVsbExpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IE51bGxM
aXRlcmFsKGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIE51bGxMaXRlcmFsKE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MzdlODY2OGUyY2ExOGY1N2U0YTJhNzVhNTM5ZTU2YThiNDMwODY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgeworcHVibGlj
OgorICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGRlcHRoKQorICAgICAg
ICA6IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV93
aWR0aCh3aWR0aCkKKyAgICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9kZXB0
aChkZXB0aCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
KGNvbnN0IE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOworICAgIE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBk
ZWZhdWx0OworCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1
bnNpZ25lZCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGg7IH0KKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBtX3dpZHRoOworICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgIHVuc2lnbmVk
IG1fZGVwdGg7Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUGFyYW1ldGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWFkNzE2N2IxY2JiZjEyMDQzZGEzMGQ1MGU2NTBkMDFlYmMwYjg1MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFBhcmFtZXRlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
UGFyYW1ldGVyIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBQYXJhbWV0ZXIoTGV4ZXI6
OlRva2VuJiYgb3JpZ2luLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgc3RkOjp1bmlxdWVfcHRy
PEFTVDo6VHlwZT4mJiB0eXBlLCBPcHRpb25hbDxTdHJpbmc+JiYgbmFtZSwgT3B0aW9uYWw8QVNU
OjpTZW1hbnRpYz4mJiBzZW1hbnRpYykKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAg
ICwgbV90eXBlKFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkp
CisgICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+UGFyYW1ldGVyKCkgPSBkZWZhdWx0OworCisgICAgUGFyYW1ldGVyKGNv
bnN0IFBhcmFtZXRlciYpID0gZGVsZXRlOworICAgIFBhcmFtZXRlcihQYXJhbWV0ZXImJikgPSBk
ZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFs
aWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5
cGU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBtX25hbWU7CisgICAgT3B0aW9uYWw8QVNUOjpTZW1h
bnRpYz4gbV9zZW1hbnRpYzsKK307CisKK3R5cGVkZWYgVmVjdG9yPFBhcmFtZXRlcj4gUGFyYW1l
dGVyczsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZjVmY2JhYjgzYjAwNTZmNGEyOWJlZWRjM2Y5YmUzMTI0MGU5YjAyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9p
bnRlclR5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMUmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBQb2ludGVyVHlwZSA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKK3B1Ymxp
YzoKKyAgICBQb2ludGVyVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGFkZHJl
c3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJl
ZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGFkZHJlc3NTcGFjZSksIFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qb2ludGVyVHlw
ZSgpID0gZGVmYXVsdDsKKworICAgIFBvaW50ZXJUeXBlKGNvbnN0IFBvaW50ZXJUeXBlJikgPSBk
ZWxldGU7CisgICAgUG9pbnRlclR5cGUoUG9pbnRlclR5cGUmJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3Jp
Z2luKCkpLCBTdHJpbmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9uZSgpKTsK
KyAgICB9CisKK3ByaXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkMjU3ZTQx
ZWNlM2ZkODQ2MjJlMzY1MmE0YmU2MjAxY2E1YWFlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBiYXNlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fYmFzZShXVEZNb3ZlKGJhc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24oY29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAg
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fYmFz
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMzNmMDUyMjQ0MWJjMTNhMzIxMTcwOTYxNjJiMGZkZjhmNDAyYzRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlm
aWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2VudW0gY2xhc3MgUXVhbGlmaWVyIHsKKyAgICBOb2ludGVycG9s
YXRpb24sCisgICAgTm9wZXJzcGVjdGl2ZSwKKyAgICBVbmlmb3JtLAorICAgIENlbnRyb2lkLAor
ICAgIFNhbXBsZQorfTsKKwordHlwZWRlZiBWZWN0b3I8UXVhbGlmaWVyPiBRdWFsaWZpZXJzOwor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjI3ZWUxNTY4NjQ5NjcyOWFlZGVmMjIxN2JmNjA2
MTM5NWJlMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLyoKKyAqICAxLiBFdmFsdWF0ZSBt
X2xWYWx1ZQorICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFsdWUKKyAqICAzLiBF
dmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgorICogIDQuIEFzc2lnbiB0aGUgcmVzdWx0IHRv
IG1fbmV3VmFsdWUKKyAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xWYWx1ZQorICogIDYu
IEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgorICogIDcuIFJldHVybiB0aGUgcmVzdWx0Cisg
Ki8KK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitwdWJsaWM6CisgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsVmFsdWUpCisgICAgICAgIDogRXhw
cmVzc2lvbihMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3Zl
KGxWYWx1ZSkpCisgICAgICAgICwgbV9vbGRWYWx1ZShMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAg
ICAgICAgLCBtX25ld1ZhbHVlKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oY29uc3QgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldE5ld1ZhbHVlRXhwcmVzc2lv
bihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBuZXdWYWx1ZUV4cHJlc3Npb24pCisgICAg
eworICAgICAgICBtX25ld1ZhbHVlRXhwcmVzc2lvbiA9IFdURk1vdmUobmV3VmFsdWVFeHByZXNz
aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdEV4cHJlc3Npb24oc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+JiYgcmVzdWx0RXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIG1fcmVz
dWx0RXhwcmVzc2lvbiA9IFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbik7CisgICAgfQorCisgICAg
c3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlUmVmZXJlbmNlPiBvbGRWYXJpYWJsZVJlZmVyZW5jZSgp
CisgICAgeworICAgICAgICAvLyBUaGUgb25seSByZWFzb24gd2UgZG9uJ3QgZ2V0IHVzZS1hZnRl
ci1mcmVlcyBpcyB0aGUgZmFjdCB0aGF0IGV2ZXJ5IGluc3RhbmNlIG9mIFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24gaXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwLgorICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWYXJpYWJsZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAo
bV9vbGRWYWx1ZSkpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZVJlZmVy
ZW5jZT4gbmV3VmFyaWFibGVSZWZlcmVuY2UoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIG9ubHkg
cmVhc29uIHdlIGRvbid0IGdldCB1c2UtYWZ0ZXItZnJlZXMgaXMgdGhlIGZhY3QgdGhhdCBldmVy
eSBpbnN0YW5jZSBvZiBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVSZWZlcmVu
Y2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fbmV3VmFsdWUpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOworICAgIEFub255
bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24gbV9vbGRWYWx1ZTsKKyAgICBBbm9ueW1vdXNWYXJpYWJs
ZURlY2xhcmF0aW9uIG1fbmV3VmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
IG1fbmV3VmFsdWVFeHByZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X3Jlc3VsdEV4cHJlc3Npb247Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5j
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2I4ODU3YWRmOWQ4YWVlNDFmNWUzNWJlNmUzYTJm
ZjYxMWZhMDUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgUmVmZXJlbmNlVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIGFkZHJlc3NTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYgZWxlbWVudFR5cGUpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYWRkcmVzc1Nw
YWNlKFdURk1vdmUoYWRkcmVzc1NwYWNlKSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1v
dmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWZlcmVuY2VU
eXBlKCkgPSBkZWZhdWx0OworCisgICAgUmVmZXJlbmNlVHlwZShjb25zdCBSZWZlcmVuY2VUeXBl
JikgPSBkZWxldGU7CisgICAgUmVmZXJlbmNlVHlwZShSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKworcHJvdGVjdGVkOgorICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBTdHJpbmcmIGFkZHJlc3NTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFR5cGU+JiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KKwor
cHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fYWRkcmVz
c1NwYWNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBtX2VsZW1lbnRUeXBlOworfTsKKwor
fQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWIzYjQzMGY0NDI3Y2Q5YWU0ODY1M2U5NGI4Zjk4Y2YyNWZjOWM2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlc291cmNlU2VtYW50
aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE1vZGUg
eworICAgICAgICBVbm9yZGVyZWRBY2Nlc3NWaWV3LAorICAgICAgICBUZXh0dXJlLAorICAgICAg
ICBCdWZmZXIsCisgICAgICAgIFNhbXBsZXIKKyAgICB9OworCisgICAgUmVzb3VyY2VTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE1vZGUgbW9kZSwgdW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIHNwYWNlKQorICAgICAgICA6IEJhc2VTZW1hbnRpYyhXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICAgICAgLCBt
X3NwYWNlKHNwYWNlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZVNlbWFu
dGljKCkgPSBkZWZhdWx0OworCisgICAgUmVzb3VyY2VTZW1hbnRpYyhjb25zdCBSZXNvdXJjZVNl
bWFudGljJikgPSBkZWxldGU7CisgICAgUmVzb3VyY2VTZW1hbnRpYyhSZXNvdXJjZVNlbWFudGlj
JiYpID0gZGVmYXVsdDsKKworICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHVu
c2lnbmVkIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQorCitwcml2YXRlOgorICAg
IE1vZGUgbV9tb2RlOworICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9zcGFj
ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDU0
OGVkYjYwZmVkNjgyN2IyYzU2YWFjMGY1YzU5MDhkYTE4NmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZXR1cm4g
OiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBSZXR1cm4oTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiB2YWx1ZSkKKyAgICAgICAgOiBT
dGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1
ZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflJldHVybigpID0gZGVmYXVsdDsKKwor
ICAgIFJldHVybihjb25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKKyAgICBSZXR1cm4oUmV0dXJuJiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
bV92YWx1ZTsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjA1MmI5MmVhMjY0NmZhMDBlNGFiZjgxMDk5YWI3YjU2YjMxMjY2NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNl
bWFudGljLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCisj
aW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3R5cGVkZWYgVmFyaWFu
dDxCdWlsdEluU2VtYW50aWMsIFJlc291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYywgU3RhZ2VJbk91dFNlbWFudGljPiBTZW1hbnRpYzsKKworfQorCit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2M1M2ZkNGI2MTM1ODgyYWYzMTcwZjAzODRhYmUxYWJm
ZTNhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyA6IHB1YmxpYyBC
YXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
YyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogQmFzZVNlbWFudGljKFdURk1vdmUo
b3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorfTsKKworfQorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOTky
NzgxZTNhNDNmNGE1NjI1NWUxODhiYzRlZDA2NmExYzk2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2Vt
YW50aWMuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6IHB1
YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgorICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IEJhc2VTZW1hbnRp
YyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+U3RhZ2VJbk91dFNlbWFudGljKCkgPSBkZWZhdWx0OworCisgICAg
U3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYpID0gZGVsZXRlOwor
ICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUluT3V0U2VtYW50aWMmJikgPSBkZWZhdWx0Owor
CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjk3ODZlNTFhNDQ5Mjg1MzA1Y2U3MTE2NmE3Yjdj
ODcxZDJlMjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YXRlbWVu
dCA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RhdGVtZW50KExleGVyOjpUb2tlbiYm
IG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVu
dChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47Cit9Owor
Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZjY1N2Q1YjA5MjYxMWE2MWQwODE5MWU5ZGQ1ZmE4ZjdjMjYyNGEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHVibGljIFR5
cGUgeworcHVibGljOgorICAgIFN0cnVjdHVyZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBTdHJpbmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRz
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUo
V1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdURk1vdmUoc3Ry
dWN0dXJlRWxlbWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVE
ZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihjb25zdCBT
dHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlRGVmaW5pdGlvbihT
dHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0cnVjdHVy
ZUVsZW1lbnRzIG1fc3RydWN0dXJlRWxlbWVudHM7Cit9OworCit9CisKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0cnVjdHVyZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODkzZDU5YmMxNzQx
MDA0M2JjMjI5NzY3ZDEyMDFiNmZmN2JmODZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgi
CisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0cnVjdHVyZUVsZW1lbnQg
OiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlRWxlbWVudChMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VHlw
ZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRpYz4gc2VtYW50aWMpCisg
ICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fcXVhbGlmaWVy
cyhXVEZNb3ZlKHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQor
ICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2VtYW50aWMoV1RG
TW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN0cnVjdHVyZUVs
ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVy
ZUVsZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1l
bnQmJikgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsK
KyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4g
bV90eXBlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2Vt
YW50aWM7Cit9OworCit0eXBlZGVmIFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PiBTdHJ1Y3R1cmVF
bGVtZW50czsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTNjZWZjNzJlMDBhZDFkMDNiYTBiZTMwZDIyN2U5OWMwZGVhMzA2MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIFN3aXRjaENhc2UgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBT
d2l0Y2hDYXNlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKKyAgICAgICAgLCBt
X2Jsb2NrKFdURk1vdmUoYmxvY2spKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2l0
Y2hDYXNlKCkgPSBkZWZhdWx0OworCisgICAgU3dpdGNoQ2FzZShjb25zdCBTd2l0Y2hDYXNlJikg
PSBkZWxldGU7CisgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7CisgICAgQmxv
Y2sgbV9ibG9jazsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hT
dGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjE0ZDc4YzVkNmJkODE5NTAzZDYyY2Y1OGYwODAxM2Mz
ZjcwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBTd2l0Y2hTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBTd2l0
Y2hTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiB2YWx1ZSwgVmVjdG9yPFN3aXRjaENhc2U+JiYgc3dpdGNoQ2FzZXMpCisgICAgICAg
IDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKQorICAgICAgICAsIG1fc3dpdGNoQ2FzZXMoV1RGTW92ZShzd2l0Y2hDYXNlcykpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN3aXRjaFN0YXRlbWVudCgpID0gZGVmYXVsdDsK
KworICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsK
KyAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKworcHJp
dmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92YWx1ZTsKKyAgICBWZWN0
b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKK307CisKK30KKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVmY2Y2MjJlOGVh
NTI1ZmViOTk2N2NiYjllZjc2Yjc2MGExMmQxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVGVybmFyeUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgVGVybmFyeUV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4mJiBwcmVkaWNhdGUsIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPiYmIGJvZHlFeHByZXNzaW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4mJiBlbHNlRXhwcmVzc2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX3ByZWRpY2F0ZShXVEZNb3ZlKHByZWRpY2F0ZSkpCisgICAgICAg
ICwgbV9ib2R5RXhwcmVzc2lvbihXVEZNb3ZlKGJvZHlFeHByZXNzaW9uKSkKKyAgICAgICAgLCBt
X2Vsc2VFeHByZXNzaW9uKFdURk1vdmUoZWxzZUV4cHJlc3Npb24pKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5UZXJuYXJ5RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIFRlcm5h
cnlFeHByZXNzaW9uKGNvbnN0IFRlcm5hcnlFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgVGVy
bmFyeUV4cHJlc3Npb24oVGVybmFyeUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKK307CisKK30KKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHJhcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZDAwOWI5MzYyZDE3MGRkNTkzYzQwODYxOTM4ODBm
MDk5Y2Q3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUcmFwIDogcHVi
bGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVHJhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4p
CisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VHJhcCgpID0gZGVmYXVsdDsKKworICAgIFRyYXAoY29uc3QgVHJhcCYpID0g
ZGVsZXRlOworICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjEzNWU2YTczNGE2Njg4NzFi
YzczOTJhZTEwMWYzOGJlMGRhMzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRl
ICJXSExTTE5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOb2RlIHsKK3B1Ymxp
YzoKKyAgICBUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVs
dDsKKworICAgIFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAgIFR5cGUoVHlwZSYmKSA9
IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNv
bnN0ID0gMDsKKworcHJpdmF0ZToKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFy
Z3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlQXJndW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTkxYWU5NzcyZmZhMGQ2NjdmMTZmYmU3NDljM2Vm
YjA2ZWNmNWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordHlwZWRlZiBWYXJpYW50PENvbnN0YW50RXhw
cmVzc2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7Cit0eXBlZGVmIFZlY3RvcjxUeXBlQXJndW1l
bnQ+IFR5cGVBcmd1bWVudHM7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVE
ZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE0OGIwMjk0NjIyMjUwYWQ0ODUxOGNkNGU5ZGNhNmUy
NDRiYTg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZURl
ZmluaXRpb24gOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgVHlwZURlZmluaXRpb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpU
eXBlPiYmIHR5cGUpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUp
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVs
dDsKKworICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7
CisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmluZyBtX25h
bWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFTVDo6VHlwZT4gbV90eXBlOworfTsKKworfQorCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0ODRk
ZjdjYThhYjQwODE1NjBjOTIwNDllY2M2NjgzMDcyYTJmNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2Uu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgVHlwZSB7
CitwdWJsaWM6CisgICAgVHlwZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1lbnRzKQorICAgICAgICA6IG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAg
ICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VHlwZVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKworICAgIFR5
cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOworICAgIFR5cGVSZWZl
cmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2luKSwgU3RyaW5n
KG1fbmFtZSksIFR5cGVBcmd1bWVudHMobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOworfTsKKworfQorCit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODliMzAwM2U4YzY3MDU0MzM4YjViYzJhODllMWYxMDYyMDMxYTNjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBVbnNpZ25lZEludGVnZXJM
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAg
OiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBk
ZWZhdWx0OworCisgICAgZXhwbGljaXQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNp
Z25lZEludGVnZXJMaXRlcmFsJikgPSBkZWZhdWx0OworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwoVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25lZCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX3ZhbHVlOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTBlYTkxZmMxZDAxMTg2OWY5MGQ4OTgwNjdmMjdhMDUxZGU4MmY5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhbHVl
IDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIFZhbHVlKCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBWYWx1ZShjb25z
dCBWYWx1ZSYpID0gZGVmYXVsdDsKKyAgICBWYWx1ZShWYWx1ZSYmKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6Cit9OworCit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWY4OGM3MmM5NWQwMWVmMzg3ZGE4NGJjZmRkNzky
OWU1ZWRmOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
VmFyaWFibGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgVmFyaWFi
bGVEZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZp
ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiYmIHR5cGUsIFN0cmluZyYmIG5hbWUsIE9w
dGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4m
JiBpbml0aWFsaXplcikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9xdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVycykpCisgICAgICAgICwgbV90eXBl
KFdURk1vdmUodHlwZSkpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAg
ICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGljKSkKKyAgICAgICAgLCBtX2luaXRpYWxpemVy
KFdURk1vdmUoaW5pdGlhbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WYXJp
YWJsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbihj
b25zdCBWYXJpYWJsZURlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgVmFyaWFibGVEZWNsYXJh
dGlvbihWYXJpYWJsZURlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIExleGVyOjpUb2tl
biBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIExl
eGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAg
ICBPcHRpb25hbDxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gbV9pbml0aWFsaXplcjsKK307CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDE4YmZjOTljY2IzZWVlZmUxNDBiMzU1ZTVkZDlhZTZkNGJhNDFhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMVmFy
aWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYmIHZhcmlhYmxlRGVjbGFyYXRpb25z
KQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YXJp
YWJsZURlY2xhcmF0aW9ucyhXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb25zKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSA9IGRl
ZmF1bHQ7CisKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpID0gZGVsZXRlOworICAgIFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50KFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mJiBtX3ZhcmlhYmxl
RGVjbGFyYXRpb25zOworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjMxYTQwM2FmMDQzNjhhZjY2ODc3MjE3YTY4
NDk0NWIwNTliZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIG5hbWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAg
ICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZh
cmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVSZWZlcmVuY2UoY29u
c3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShW
YXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgVmFyaWFibGVSZWZl
cmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQorICAg
IHsKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UgcmVzdWx0KExleGVyOjpUb2tlbih2YXJpYWJs
ZURlY2xhcmF0aW9uLm9yaWdpbigpKSk7CisgICAgICAgIHJlc3VsdC5tX3ZhcmlhYmxlID0geyAm
dmFyaWFibGVEZWNsYXJhdGlvbiB9OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHN0YXRpYyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKEFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24mIGFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBWYXJp
YWJsZVJlZmVyZW5jZSByZXN1bHQoTGV4ZXI6OlRva2VuKGFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24ub3JpZ2luKCkpKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFyaWFibGUgPSB7ICZhbm9ueW1v
dXNWYXJpYWJsZURlY2xhcmF0aW9uIH07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZhcmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBPcHRpb25hbDxWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRp
b24qLCBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uKj4+IG1fdmFyaWFibGU7Cit9OworCit9
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk1ZGZkZDZi
N2YxMDE3MzU0NTc2YTA5YTBlMWY4YzE1MzUwZjcyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgV2hpbGVMb29w
IDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgV2hpbGVMb29wKExleGVyOjpUb2tl
biYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIHN0
ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RG
TW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25h
bCkpCisgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKworICAgIFdoaWxlTG9vcChjb25zdCBX
aGlsZUxvb3AmKSA9IGRlbGV0ZTsKKyAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVs
dDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRp
b25hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiBtX2JvZHk7Cit9OworCit9CisK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTZjNjkyZTJkODc5ZTU5MmQwN2Zh
ODIxZTQxYTA3MjkyMmQ0OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1N2E5OWE5ZjY0ZmZhYzc2MjFmMDQyN2EzYjY5MzZjOGQ3
YzhhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFub255bW91c1Zh
cmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5o
IgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisj
aW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQnJlYWsuaCIK
KyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMQ2FsbEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJl
c3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQ29udGlu
dWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJX
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25N
ZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZh
bGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlv
bkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtl
UG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1
ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRl
ICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMUGFy
YW1ldGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQb2ludGVyVHlwZS5oIgorI2luY2x1ZGUgIldITFNM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCisj
aW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRl
ICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFJldHVybi5oIgorI2lu
Y2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCisj
aW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmlu
aXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJX
SExTTFN3aXRjaENhc2UuaCIKKyNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgorI2lu
Y2x1ZGUgIldITFNMVGVybmFyeUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTFRyYXAuaCIK
KyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgor
I2luY2x1ZGUgIldITFNMVHlwZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZl
cmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNs
dWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgorI2luY2x1
ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5o
IgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFBhcnNl
ciB7CisKK307CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU2MGIyNzY3NDhm
YTYxYjNjNzgyYzdiM2M5YWU4MmRiZGRmMzdjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCkBAIC0wLDAgKzEsODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRl
ICJXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFByb2dyYW0geworcHVibGljOgorICAgIFByb2dy
YW0oKSA9IGRlZmF1bHQ7CisgICAgUHJvZ3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKKworICAg
IHZvaWQgYXBwZW5kKEFTVDo6VHlwZURlZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKKyAgICB7
CisgICAgICAgIG1fdHlwZURlZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKHR5cGVEZWZpbml0aW9u
KSk7CisgICAgfQorICAgIHZvaWQgYXBwZW5kKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYmIHN0
cnVjdHVyZURlZmluaXRpb24pCisgICAgeworICAgICAgICBtX3N0cnVjdHVyZURlZmluaXRpb25z
LmFwcGVuZChXVEZNb3ZlKHN0cnVjdHVyZURlZmluaXRpb24pKTsKKyAgICB9CisgICAgdm9pZCBh
cHBlbmQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mJiBlbnVtZXJhdGlvbkRlZmluaXRpb24p
CisgICAgeworICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKFdURk1vdmUo
ZW51bWVyYXRpb25EZWZpbml0aW9uKSk7CisgICAgfQorICAgIHZvaWQgYXBwZW5kKEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgbV9m
dW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpOwor
ICAgIH0KKyAgICB2b2lkIGFwcGVuZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7
CisgICAgfQorICAgIHZvaWQgYXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0
aXZlVHlwZURlY2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRp
b25zLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4gbV90eXBlRGVmaW5pdGlvbnM7
CisgICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4gbV9zdHJ1Y3R1cmVEZWZpbml0
aW9uczsKKyAgICBWZWN0b3I8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+IG1fZW51bWVyYXRp
b25EZWZpbml0aW9uczsKKyAgICBWZWN0b3I8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+IG1fZnVu
Y3Rpb25EZWZpbml0aW9uczsKKyAgICBWZWN0b3I8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uPiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOworICAgIFZlY3RvcjxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOworfTsKKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhOGM0NzM3MjhhYTg4Nzg2M2Y2NzQ0Yzc2MWNk
MGZmYTk4YmRkYTY0Li41NDM4ZjRkZWFiMzlhYzU1MzgzODQwODQ0NGNlNTE2Y2ZiMzExZWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMzAyLDYgKzMwMiw3IEBAIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKIAogTW9kdWxlcy93ZWJncHUvRE9NV2lu
ZG93V2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKK01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJpbmRHcm91cExheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZGY4ZDdlMTMwMWQ3YTAwYzE2OTAzOWQzMjI4ZTY3
YjBiMmQxMDliLi42ODIxZGIwNTUzMGZlZDZmNjUyYWUyZmVmMTMwYjUzNDI1NTFjNWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMzIxMSw2ICsxMzIxMSw3NyBAQAogCQlDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9u
dFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyog
V0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExleGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNM
TGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMVHJhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFC
RjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xDb250aW51ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEJvb2xlYW5MaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEluZGV4RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFu
dGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGlj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRG9XaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY2RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RydWN0dXJlRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJ
ZlN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZh
bGx0aHJvdWdoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVy
ZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzAyMjFDRDg5QzQw
MDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDMy
MUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmV0
dXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA0MjFDRDg5QzYwMDIy
Nzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFdoaWxlTG9vcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5Nzkg
LyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA2MjFDRDg5
QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TENvbW1hRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcw
NzIxQ0Q4OUM4MDAyMjc5NzkgLyogV0hMU0xOdWxsTGl0ZXJhbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE51bGxMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA4
MjFDRDg5QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xSZXNvdXJjZVNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFC
RjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUXVhbGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xSZWZlcmVuY2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwRjIxQ0Q4OUNGMDAyMjc5NzkgLyogV0hMU0xB
bm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQW5vbnlt
b3VzVmFyaWFibGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xUeXBlQXJndW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlQXJndW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJl
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2FsbEV4cHJlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTcyMUNEODlENjAwMjI3OTc5IC8qIFdITFNMUGFy
YW1ldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUGFyYW1ldGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJl
c3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRj
aENhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8q
IFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRDIxQ0Q4OURC
MDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hM
U0xCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVu
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5
NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGlj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI0MjFDRDg5
RTEwMDIyNzk3OSAvKiBXSExTTE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBX
SExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJl
bmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyNjIxQ0Q4OUUz
MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEVudW1lcmF0aW9uTWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJl
c3Npb25TdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI5MjFDRDg5
RTYwMDIyNzk3OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
VHlwZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkEy
MUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAv
KiBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcy
RDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hM
U0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3
MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xQb2ludGVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcz
MDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2Fs
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBX
SExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNDIxQ0Q4OUYx
MDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5Nzkg
LyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5
IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMUHJvZ3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFNzFE
OUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NG
b250VmFyaWF0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
Rm9udFZhcmlhdGlvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4
RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb250Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUy
MjksMTIgKzI1MzAwLDkxIEBACiAJCUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAvKiBXSExTTCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxQkY2RjEy
MUNEODk4RDAwMjI3OTc5IC8qIEFTVCAqLywKIAkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0Qg
LyogV0hMU0xMZXhlci5jcHAgKi8sCiAJCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdI
TFNMTGV4ZXIuaCAqLywKKwkJCQlDMjFCRjczNzIxQ0Q4QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJz
ZXIuY3BwICovLAorCQkJCUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5o
ICovLAorCQkJCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlDMjFCRjZGMTIxQ0Q4OThEMDAyMjc5NzkgLyogQVNUICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjFCRjcwRjIxQ0Q4OUNGMDAyMjc5NzkgLyog
V0hMU0xBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MjUyMUNE
ODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCisJCQkJQzIxQkY3
MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCisJCQkJQzIxQkY3MzAy
MUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywKKwkJCQlD
MjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAq
LywKKwkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50aWMuaCAq
LywKKwkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovLAorCQkJ
CUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8sCisJ
CQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKKwkJCQlDMjFC
RjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLywKKwkJCQlD
MjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovLAorCQkJ
CUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovLAor
CQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5o
ICovLAorCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVz
c2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2RjUyMUNEODlC
NTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLywKKwkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAy
Mjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxODIx
Q0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RkIy
MUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFCRjcyODIx
Q0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8s
CisJCQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0
aW9uLmggKi8sCisJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRp
b25NZW1iZXIuaCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHBy
ZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRo
cm91Z2guaCAqLywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExp
dGVyYWwuaCAqLywKKwkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29w
LmggKi8sCisJCQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRy
aWJ1dGUuaCAqLywKKwkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlv
bkRlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNM
RnVuY3Rpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8q
IFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5NzkgLyog
V0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5Nzkg
LyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3
OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MTUyMUNEODlENDAw
MjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcyRDIx
Q0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8s
CisJCQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNz
aW9uLmggKi8sCisJCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAvKiBX
SExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzI0MjFDRDg5RTEwMDIy
Nzk3OSAvKiBXSExTTE5vZGUuaCAqLywKKwkJCQlDMjFCRjcwNzIxQ0Q4OUM4MDAyMjc5NzkgLyog
V0hMU0xOdWxsTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBX
SExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNzE3MjFDRDg5
RDYwMDIyNzk3OSAvKiBXSExTTFBhcmFtZXRlci5oICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMw
MDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAw
MjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3
MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIy
MUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAor
CQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywK
KwkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmgg
Ki8sCisJCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCisJ
CQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKKwkJCQlD
MjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuaCAqLywKKwkJCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxMjIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xT
dGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdI
TFNMU3RydWN0dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAv
KiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjczMTIxQ0Q4OUVFMDAyMjc5NzkgLyog
V0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxQzIxQ0Q4OURBMDAyMjc5Nzkg
LyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkYzMjFDRDg5QUQwMDIy
Nzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyog
V0hMU0xUeXBlLmggKi8sCisJCQkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlw
ZUFyZ3VtZW50LmggKi8sCisJCQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlw
ZURlZmluaXRpb24uaCAqLywKKwkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xU
eXBlUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNkZDMjFDRDg5QkYwMDIyNzk3
OSAvKiBXSExTTFZhbHVlLmggKi8sCisJCQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdI
TFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3
OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3
MTMyMUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKKwkJCQlD
MjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gQVNUOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzk2RjVF
QkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCg==
</data>
<flag name="review"
          id="374860"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358721</attachid>
            <date>2019-01-09 12:00:13 -0800</date>
            <delta_ts>2019-01-10 12:45:54 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-192991-20190109120012.patch</filename>
            <type>text/plain</type>
            <size>334973</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgzMjcwYzBlMmM2Njdj
OTM1N2U0NDVjOTdiZjBiYjgxYzJmMTVkYy4uMGI1NGVlNTdlMjE0YzM0YWVmNTNlZjk3ZGJlYzBj
NjY1MDU3OTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1OCBAQAorMjAxOS0wMS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIGFsbCB0aGUgQVNUIG5vZGVz
IHdoaWNoIHdpbGwgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBwYXJzZXIuCisgICAgICAg
IFRoaXMgcGF0Y2ggdXNlZCB0byBiZSBhIHBhcnQgb2YgdGhlICJjcmVhdGUgYSBXSExTTCBwYXJz
ZXIiIHBhdGNoIGJ1dCBJIHNwbGl0IHRoZW0KKyAgICAgICAgb3V0IGluIG9yZGVyIHRvIGFpZCBy
ZXZpZXdpbmcuCisKKyAgICAgICAgVGhlIGNsYXNzZXMgd2VyZSBtZWNoYW5pY2FsbHkgY3JlYXRl
ZCB0byBtYXRjaCB0aGUgcmVzdWx0IG9mIHRoZSBwYXJzZXIuIFRoZXJlIGFyZQorICAgICAgICBu
b2RlcyBmb3IgdGhpbmdzIGxpa2UgRm9yTG9vcHMsIExvZ2ljYWxOb3RFeHByZXNzaW9ucywgRGVy
ZWZlcmVuY2VFeHByZXNzaW9ucywKKyAgICAgICAgU3RydWN0dXJlRGVmaW5pdGlvbnMsIGFuZCB0
aGluZ3MgbGlrZSB0aGF0LiBUaGUgY2xhc3NlcyBkb24ndCBhY3R1YWxseSBoYXZlIGFueSBsb2dp
YworICAgICAgICBpbiB0aGVtIC0gdGhleSBhcmUgY3VycmVudGx5IGp1c3QgY29udGFpbmVycyB0
byBob2xkIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHBhcnNlZAorICAgICAgICBwcm9ncmFtLiBTb21l
IG9mIHRoZXNlIG5vZGVzIChsaWtlIGNvbnN0ZXhwcnMpIGFyZSBqdXN0IFZhcmlhbnRzIG9mIHRo
ZSB2YXJpb3VzIHRoaW5ncworICAgICAgICB0aGV5IGNhbiBpbiB0aGUgZm9ybSBvZi4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGUgcGFyc2VyIGRvZXNuJ3QgZXhpc3QgdG8gY3Jl
YXRlIHRoZSBuZXcgQVNUIG5vZGVzIHlldC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJyYXlSZWZlcmVuY2VUeXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OkFycmF5VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OnR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXJyYXlUeXBlOjp0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5VHlwZTo6bnVtRWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4cHJl
c3Npb246OkFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpyaWdodCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0aW9uQXR0cmlidXRlOjpCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJh
c2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkJsb2NrOjpCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6c3Rh
dGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVh
bkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFu
TGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkJvb2xlYW5MaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpCcmVhazo6QnJlYWspOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2YXJpYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCdWlsdEluU2VtYW50aWM6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDYWxsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNhbGxFeHByZXNzaW9uOjpDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRDYXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aXNDYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aGFzT3ZlcmxvYWRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpvdmVybG9hZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OnNldE92ZXJsb2Fk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6c2V0RnVu
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhw
cmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhw
cmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpDb25zdGFudEV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjppbnRlZ2VyTGl0
ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
bjo6dmlzaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
b25zdGFudEV4cHJlc3Npb246Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OkNvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpsZWZ0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpyaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlOjplbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51
bWVyYXRpb25NZW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OnNldEVudW1lcmF0aW9u
TWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnRpbnVlOjpDb250
aW51ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvV2hpbGVMb29wOjpEb1doaWxlTG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Ym9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Y29uZGl0aW9uYWwpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvdEV4cHJlc3Npb246OmZp
ZWxkTmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudDo6ZWZmZWN0ZnVsRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6bWVtYmVyQnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6ZW51bWVyYXRpb25NZW1iZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
OjpFbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlcjo6c2V0VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246Om9yaWdpbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Fzc2lnbm1lbnRFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzQm9v
bGVhbkxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNDYWxsRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjppc0NvbW1hRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RlcmVmZXJlbmNlRXhwcmVzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RvdEV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNGbG9hdExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNJbmRleEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbnRlZ2VyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0xvZ2ljYWxFeHByZXNzaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTG9naWNhbE5v
dEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTWFrZVBvaW50ZXJFeHByZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTnVsbExp
dGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzVGVybmFyeUV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkV4cHJlc3Npb246OmlzVmFyaWFibGVSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0
aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmFsbHRocm91
Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGbG9hdExpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rmxv
YXRMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6Y29u
dmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjppbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjpjb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9y
TG9vcDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6
OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OmlzRnVuY3Rpb25E
ZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb246OmlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjphdHRyaWJ1dGVCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpl
bnRyeVBvaW50VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjppc0Nhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6cGFyYW1ldGVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
OjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb246OnNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb246OmlzT3BlcmF0b3IgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6RnVuY3Rpb25EZWZpbml0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6
YmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
OjpyZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OklmU3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpJZlN0YXRlbWVudDo6Y29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SWZTdGF0ZW1lbnQ6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZT
dGF0ZW1lbnQ6OmVsc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbmRleEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbmRleEV4cHJlc3Npb246OkluZGV4RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbmRleEV4cHJlc3Npb246OmluZGV4RXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZUZv
clNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbnRlZ2VyTGl0ZXJhbDo6SW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVn
ZXJMaXRlcmFsVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0
ZXJhbFR5cGU6OmNhblJlc29sdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWxUeXBlOjpwcmVm
ZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okxv
Z2ljYWxFeHByZXNzaW9uOjpMb2dpY2FsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6bGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6cmlnaHQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246Okxv
Z2ljYWxOb3RFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uOjpvcGVyYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsVmFsdWUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQ
b2ludGVyRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYW1lZFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYW1lZFR5cGU6Ok5hbWVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRU
eXBlOjppc1R5cGVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hbWVkVHlwZTo6aXNTdHJ1Y3R1cmVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjppc05hdGl2ZVR5
cGVEZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1l
ZFR5cGU6OnVuaWZ5Tm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YW1lZFR5cGU6OnVuaWZ5Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjo6cmVzdHJpY3RlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc0ludCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6aXNGbG9hdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OmlzVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNNYXRyaXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uOjppc1NpZ25lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rpb248Ym9vbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rp
b248aW50NjRfdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246Oml0ZXJhdGVBbGxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc0ludCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNG
bG9hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb246OnNldElzVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1NpZ25lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldENh
blJlcHJlc2VudEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXBy
ZXNlbnRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb246OnNldFN1Y2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRGb3JtYXRW
YWx1ZUZyb21VbnNpZ25lZEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJdGVyYXRlQWxsVmFsdWVzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbFR5cGU6OmNhblJlc29s
dmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWxUeXBl
Ojpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZTo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6d2lkdGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlOjpoZWln
aHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlOjpkZXB0aCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpQb2ludGVyVHlwZTo6UG9pbnRlclR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6cG9zc2libGVHZXRPdmVybG9hZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpwb3NzaWJsZVNl
dE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb246OnBvc3NpYmxlQW5kT3ZlcmxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6c2V0UG9zc2libGVHZXRPdmVybG9h
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOjpzZXRQb3NzaWJsZVNldE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OnNldFBvc3NpYmxlQW5kT3ZlcmxvYWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6
YmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVy
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb246OnNldFJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6b2xkVmFyaWFibGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6
bmV3VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om9sZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om5ld1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246
Om5ld1ZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpyZXN1bHRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZl
cmVuY2VUeXBlOjpSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNGbG9hdExp
dGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc29sdmFi
bGVUeXBlOjppc0ludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNOdWxsTGl0ZXJhbFR5cGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b2x2YWJsZVR5cGU6OnJlc29sdmVkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6cmVzb2x2ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlJlc29sdmFibGVUeXBlOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6Om1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3VyY2VT
ZW1hbnRpYzo6aW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b3VyY2VTZW1hbnRpYzo6c3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6UmVzb3VyY2VTZW1hbnRpYzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OlJldHVybik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJldHVybjo6ZnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmV0dXJuOjpzZXRGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6
OmlzQWNjZXB0YWJsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OlNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJs
ZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6U3RhZ2VJbk91dFNlbWFudGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0
YWdlSW5PdXRTZW1hbnRpYzo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQ29udGludWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0RvV2hpbGVMb29wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVu
dDo6aXNGYWxsdGhyb3VnaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
dGF0ZW1lbnQ6OmlzRm9yTG9vcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdGF0ZW1lbnQ6OmlzSWZTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RhdGVtZW50Ojppc1JldHVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoQ2FzZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoU3RhdGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNUcmFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OmlzV2hpbGVMb29wIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbjo6U3RydWN0dXJlRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpzdHJ1
Y3R1cmVFbGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQ6OlN0cnVjdHVyZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6bmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6dmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6YmxvY2spOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6U3dpdGNoU3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6dmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoU3RhdGVtZW50Ojpzd2l0Y2hDYXNl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJl
c3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhw
cmVzc2lvbjo6VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6VGVybmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VFeHByZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzTmFtZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzVW5uYW1lZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNSZXNvbHZhYmxlVHlwZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpjbG9uZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJl
bmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJlZmVyZW5j
ZTo6VHlwZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVm
ZXJlbmNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVSZWZlcmVu
Y2U6OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJl
ZmVyZW5jZTo6cmVzb2x2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGVSZWZlcmVuY2U6OnNldFJlc29sdmVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjpjbG9uZVR5cGVSZWZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OlVubmFtZWRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc1R5cGVSZWZl
cmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
OmlzUG9pbnRlclR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5u
YW1lZFR5cGU6OmlzQXJyYXlSZWZlcmVuY2VUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc0FycmF5VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6aXNSZWZlcmVuY2VUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjp1bmlmeU5vZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6b3JpZ2luIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjpjbG9uZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6Y2FuUmVzb2x2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFsdWU6OlZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6VmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6
bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbjo6c2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbjo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Ojp2YXJpYWJsZURlY2xhcmF0
aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVS
ZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZVJlZmVyZW5jZTo6VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OnZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjpzZXRWYXJpYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpXaGlsZUxvb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTGV4ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmFtZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmludHJpbnNpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OnR5cGVEZWZpbml0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6UHJvZ3JhbTo6c3RydWN0dXJlRGVmaW5pdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlByb2dyYW06OmVudW1lcmF0aW9uRGVmaW5pdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06Om5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQcm9ncmFtOjpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmF0aXZl
VHlwZURlY2xhcmF0aW9ucyk6CisKIDIwMTktMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBjdXJy
ZW50IHRleHQgc2VsZWN0aW9uIGFzIHRoZSBmaW5kIHN0cmluZyBvbiBpT1MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJl
bmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QXJyYXlSZWZlcmVuY2VUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzZGM4ODU5NGFkODZkYmU2NWQ0MzFl
ZTgzNmVkNjgzNDNhZDkyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgUmVmZXJlbmNl
VHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2VUeXBlKExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYm
IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJlZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBh
ZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVy
ZW5jZVR5cGUoY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJikgPSBkZWxldGU7CisgICAgQXJyYXlS
ZWZlcmVuY2VUeXBlKEFycmF5UmVmZXJlbmNlVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBcnJheVJlZmVyZW5jZVR5cGU+KExleGVy
OjpUb2tlbihvcmlnaW4oKSksIGFkZHJlc3NTcGFjZSgpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkp
OworICAgIH0KKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlSZWZlcmVu
Y2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODk3OTRiODA4MGFkNTFhNGNiNjY3NjU0MGFiNGVkZDQ4YjRjY2YzZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFycmF5VHlwZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUgeworcHVi
bGljOgorICAgIEFycmF5VHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxVbm5h
bWVkVHlwZT4mJiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgICAgIDog
VW5uYW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RG
TW92ZShlbGVtZW50VHlwZSkpCisgICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OworCisg
ICAgQXJyYXlUeXBlKGNvbnN0IEFycmF5VHlwZSYpID0gZGVsZXRlOworICAgIEFycmF5VHlwZShB
cnJheVR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1lZFR5cGUmPihtX2VsZW1lbnRU
eXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5u
YW1lZFR5cGUmPihtX2VsZW1lbnRUeXBlKTsgfQorICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50czsgfQorCisgICAgVW5pcXVlUmVmPFVubmFtZWRU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxBcnJheVR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIG1fZWxlbWVudFR5cGUt
PmNsb25lKCksIG1fbnVtRWxlbWVudHMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVS
ZWY8VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7CisgICAgdW5zaWduZWQgbV9udW1FbGVtZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5VHlwZSgpKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
ZWIxYWVjMjIxMGI0NzZkMzUwMWYwZTk5NWE3MDU3ODBkNDkwMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbGVmdChX
VEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbGVmdCk7IH0KKyAgICBFeHByZXNzaW9uJiBy
aWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3JpZ2h0KTsgfQorCitw
cml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7CisgICAgVW5pcXVlUmVm
PEV4cHJlc3Npb24+IG1fcmlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhw
cmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlv
bkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMWVkMTEwZjgyODgyMGM5
Y2I2NzU2MjhiOWIyZTQxOWZlMGIzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBOb2RlIHsKK3B1
YmxpYzoKKyAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+QmFzZUZ1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKGNvbnN0IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOwor
ICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTlkYTI0ZjY0ZjlkNmVkNjA2MDQ2NzRjZWI4NzU2MzRmYjBmZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK2NsYXNzIEludHJpbnNpY3M7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBG
dW5jdGlvbkRlZmluaXRpb247CitjbGFzcyBVbm5hbWVkVHlwZTsKKworY2xhc3MgQmFzZVNlbWFu
dGljIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIEJhc2VTZW1hbnRpYyhMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5CYXNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBC
YXNlU2VtYW50aWMoY29uc3QgQmFzZVNlbWFudGljJikgPSBkZWxldGU7CisgICAgQmFzZVNlbWFu
dGljKEJhc2VTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
cHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCA9
IDA7CisKKyAgICBlbnVtIGNsYXNzIFNoYWRlckl0ZW1EaXJlY3Rpb24gOiB1aW50OF90IHsKKyAg
ICAgICAgSW5wdXQsCisgICAgICAgIE91dHB1dAorICAgIH07CisgICAgdmlydHVhbCBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIExleGVy
OjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmxvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJhMTc4NjExMTM5NDRhYjVjYTNmYjE2MjgzMDU2
OTVlMzRmZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhl
ci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCisg
ICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3N0YXRlbWVu
dHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qmxv
Y2soKSA9IGRlZmF1bHQ7CisKKyAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOworICAg
IEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMo
KSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KKworICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBTdGF0ZW1lbnRzIG1fc3Rh
dGVtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjNkOTQ1ZjY0N2EyYzUwNDMx
YjZlMTZmYzRlNzYwY2ZiMGU0NDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUp
CisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9
IGRlZmF1bHQ7CisKKyAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0g
ZGVsZXRlOworICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsK
KworICAgIEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9
IGRlbGV0ZTsKKyAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisKKyAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gQm9vbGVhbkxpdGVyYWwoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgbV92YWx1ZSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5MaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTY1YzAwZmI2Yzc3MmQwOTAwYzI5NjE1YTEyYTQ5MGEzMTRiYTg5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJyZWFrLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1l
bnQgeworcHVibGljOgorICAgIEJyZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAg
OiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5CcmVhaygpID0gZGVmYXVsdDsKKworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7
CisgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0JyZWFrKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChCcmVhaywgaXNCcmVhaygpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiZDcwMmFkMjhmOTdlYmE0ZmFhY2QzM2YxODgyZmM2ZDAxNzFi
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgorCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmlu
aXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTElu
dHJpbnNpY3MuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworYm9v
bCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAoreworICAgIHN3
aXRjaCAobV92YXJpYWJsZSkgeworICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKKyAg
ICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7
CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6
UFNpemU6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZs
b2F0VHlwZSgpKTsKKyAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgorICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOworICAgIGNh
c2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFt
ZWRUeXBlLCBpbnRyaW5zaWNzLmJvb2xUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWU2Ft
cGxlSW5kZXg6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LnVpbnRUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKKyAgICAg
ICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Cisg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFt
ZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZE
ZXB0aDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxv
YXRUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6CisgICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOworICAgIGNhc2Ug
VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKKyAgICBjYXNlIFZhcmlhYmxlOjpT
Vkdyb3VwSUQ6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmZsb2F0M1R5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgorICAgICAg
ICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKKyAg
ICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQ6CisgICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7CisgICAgfQorfQorCitib29s
IEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFk
ZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJiBmdW5j
dGlvbkRlZmluaXRpb24pIGNvbnN0Cit7CisgICAgc3dpdGNoICgqZnVuY3Rpb25EZWZpbml0aW9u
LmVudHJ5UG9pbnRUeXBlKCkpIHsKKyAgICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246OkVudHJ5
UG9pbnRUeXBlOjpWZXJ0ZXg6CisgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAg
IGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1f
dmFyaWFibGUpIHsKKyAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKKyAg
ICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVmVydGV4SUQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpP
dXRwdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKKyAgICAgICAgICAgIGNh
c2UgVmFyaWFibGU6OlBTaXplOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlv
bjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Cisg
ICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6SW5wdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6CisgICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVlBvc2l0aW9uOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRl
eDoKKyAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIFNoYWRlckl0ZW1E
aXJlY3Rpb246Ok91dHB1dDoKKyAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgeworICAg
ICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6CisgICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkRlcHRoOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgY2Fz
ZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKKyAgICAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJ
bnB1dDoKKyAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgeworICAgICAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZHcm91cElEOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4Ogor
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6T3V0cHV0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNl
bWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
dWlsdEluU2VtYW50aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmRlMWQwODRmZDM3NzIxNzJhNGY3ZjUzN2Ez
MzBmMGExNjEwODUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCdWlsdEluU2VtYW50aWMgOiBwdWJs
aWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFZhcmlhYmxlIDogdWlu
dDhfdCB7CisgICAgICAgIFNWSW5zdGFuY2VJRCwKKyAgICAgICAgU1ZWZXJ0ZXhJRCwKKyAgICAg
ICAgUFNpemUsCisgICAgICAgIFNWUG9zaXRpb24sCisgICAgICAgIFNWSXNGcm9udEZhY2UsCisg
ICAgICAgIFNWU2FtcGxlSW5kZXgsCisgICAgICAgIFNWSW5uZXJDb3ZlcmFnZSwKKyAgICAgICAg
U1ZUYXJnZXQsCisgICAgICAgIFNWRGVwdGgsCisgICAgICAgIFNWQ292ZXJhZ2UsCisgICAgICAg
IFNWRGlzcGF0Y2hUaHJlYWRJRCwKKyAgICAgICAgU1ZHcm91cElELAorICAgICAgICBTVkdyb3Vw
SW5kZXgsCisgICAgICAgIFNWR3JvdXBUaHJlYWRJRAorICAgIH07CisKKyAgICBCdWlsdEluU2Vt
YW50aWMoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8
dW5zaWduZWQ+JiYgdGFyZ2V0SW5kZXggPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogQmFzZVNl
bWFudGljKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQor
ICAgICAgICAsIG1fdGFyZ2V0SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgfkJ1aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKKworICAgIEJ1
aWx0SW5TZW1hbnRpYyhjb25zdCBCdWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBCdWls
dEluU2VtYW50aWMoQnVpbHRJblNlbWFudGljJiYpID0gZGVmYXVsdDsKKworICAgIFZhcmlhYmxl
IHZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZTsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJ1aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV92YXJpYWJsZSA9PSBvdGhlci5tX3ZhcmlhYmxlICYmIG1fdGFyZ2V0SW5kZXgg
PT0gb3RoZXIubV90YXJnZXRJbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQnVpbHRJblNlbWFudGljJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rp
b24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRl
OgorICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFy
Z2V0SW5kZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENhbGxFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0NmFkYTgyNWE0NGMzOGM5MjVk
YzNhNjcxOGU4NWJjYzlmNWZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVj
bGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBOYW1lZFR5cGU7CisKK2NsYXNzIENhbGxFeHByZXNzaW9u
IDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENhbGxFeHByZXNzaW9uKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4mJiBhcmd1bWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikp
CisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV9hcmd1bWVudHMo
V1RGTW92ZShhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5DYWxsRXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHBy
ZXNzaW9uJikgPSBkZWxldGU7CisgICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFy
Z3VtZW50cygpIHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9CisKKyAgICBTdHJpbmcmIG5hbWUoKSB7
IHJldHVybiBtX25hbWU7IH0KKworICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1l
ZFR5cGUpCisgICAgeworICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0geyBuYW1lZFR5cGUgfTsK
KyAgICB9CisKKyAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1f
Y2FzdFJldHVyblR5cGUpOyB9CisgICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxO
YW1lZFR5cGU+PiYgY2FzdFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9
CisgICAgYm9vbCBoYXNPdmVybG9hZHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihtX292ZXJsb2Fkcyk7IH0KKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+JiBvdmVybG9hZHMoKSB7IHJldHVybiBtX292
ZXJsb2FkczsgfQorICAgIHZvaWQgc2V0T3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQorICAgIHsK
KyAgICAgICAgYXNzZXJ0KCFoYXNPdmVybG9hZHMoKSk7CisgICAgICAgIG1fb3ZlcmxvYWRzID0g
b3ZlcmxvYWRzOworICAgIH0KKworICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJh
dGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKKyAgICB7CisgICAgICAgIGFzc2VydCghbV9mdW5j
dGlvbik7CisgICAgICAgIG1fZnVuY3Rpb24gPSAmZnVuY3Rpb25EZWNsYXJhdGlvbjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEV4
cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+IG1fb3ZlcmxvYWRzOworICAgIEZ1
bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07CisgICAgT3B0aW9uYWw8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOYW1lZFR5cGU+PiBtX2Nhc3RSZXR1cm5UeXBlIHsgV1RG
OjpudWxsb3B0IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxs
RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTcwMmMyODY0ODhjNGYwZmNiNjM2ODcyNjIwYmNiYjIzOTZiNjFmZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bW1hRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQ29tbWFFeHByZXNzaW9uIDogcHVi
bGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENvbW1hRXhwcmVzc2lvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92
ZShsaXN0KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworCisgICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZh
dWx0OworCisgICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkg
eyByZXR1cm4gbV9saXN0OyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPj4gbV9saXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBp
c0NvbW1hRXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY2OGMyYTEzMzRkMjllOTEzYmFkNDVmY2M0MWEyNTc5MzFjMDg3
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5o
IgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bGxM
aXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLy8gRklYTUU6IG1hY09TIFNpZXJyYSBkb2Vz
bid0IHNlZW0gdG8gc3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywKKy8v
IHNvIHRoaXMgaXMgYSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFw
cGVuLiBBcyBzb29uIGFzIHdlIGRvbid0CisvLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0aGlz
IGNhbiBiZSBtaWdyYXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgorY2xhc3MgQ29uc3RhbnRFeHBy
ZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwm
JiBpbnRlZ2VyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0
ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZElu
dGVnZXJMaXRlcmFsJiYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3Zhcmlh
bnQoV1RGTW92ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAg
Q29uc3RhbnRFeHByZXNzaW9uKEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKKyAgICAgICAg
OiBtX3ZhcmlhbnQoV1RGTW92ZShmbG9hdExpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBD
b25zdGFudEV4cHJlc3Npb24oTnVsbExpdGVyYWwmJiBudWxsTGl0ZXJhbCkKKyAgICAgICAgOiBt
X3ZhcmlhbnQoV1RGTW92ZShudWxsTGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0
YW50RXhwcmVzc2lvbihCb29sZWFuTGl0ZXJhbCYmIGJvb2xlYW5MaXRlcmFsKQorICAgICAgICA6
IG1fdmFyaWFudChXVEZNb3ZlKGJvb2xlYW5MaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAg
Q29uc3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlJiYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpCisg
ICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24o
Y29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgQ29uc3RhbnRFeHByZXNz
aW9uKENvbnN0YW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBDb25zdGFudEV4cHJl
c3Npb24mIG9wZXJhdG9yPShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAg
ICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShDb25zdGFudEV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OworCisgICAgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEludGVnZXJMaXRlcmFsPihtX3Zh
cmlhbnQpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEludGVnZXJMaXRlcmFsPihtX3Zhcmlh
bnQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQoVCYmIHQp
CisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURk1vdmUodCksIG1fdmFyaWFudCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCB2aXNpdChUJiYgdCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFdURjo6dmlzaXQoV1RGTW92ZSh0KSwgbV92YXJpYW50KTsKKyAgICB9CisK
KyAgICBDb25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwm
IGludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0
dXJuIGludGVnZXJMaXRlcmFsLmNsb25lKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJl
c3Npb24geworICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUo
KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9u
ZSgpOworICAgICAgICB9LCBbJl0oY29uc3QgTnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0dXJuIG51bGxMaXRlcmFsLmNsb25l
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwp
IC0+IENvbnN0YW50RXhwcmVzc2lvbiB7CisgICAgICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVy
YWwuY2xvbmUoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5jbG9uZSgpOworICAg
ICAgICB9KSwgbV92YXJpYW50KTsKKyAgICB9CisKKyAgICBib29sIG1hdGNoZXMoY29uc3QgQ29u
c3RhbnRFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJv
b2w+IHJlc3VsdDsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICB2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAg
ICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsK
KyAgICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAg
ICAgICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKKyAgICAgICAg
ICAgIHZhbHVlID0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBO
dWxsTGl0ZXJhbCYpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8TnVsbExpdGVyYWw+KG90aGVyLm1fdmFyaWFudCk7CisgICAgICAgIH0sIFsmXShjb25zdCBC
b29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKKyAgICAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAg
ICAgICAgICAgICAgY29uc3QgYXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0PEJv
b2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgpOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgIH0sIFsmXShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpIHsKKyAg
ICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgb3RoZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZT4ob3RoZXIubV92YXJpYW50KTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1l
bWJlclJlZmVyZW5jZS5lbnVtZXJhdGlvbk1lbWJlcigpID09IG90aGVyTWVtYmVyUmVmZXJlbmNl
LmVudW1lcmF0aW9uTWVtYmVyKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGlmIChyZXN1bHQpCisg
ICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKKworICAgICAgICBvdGhlci52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7CisgICAg
ICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKSB7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSB1bnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0
TGl0ZXJhbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gZmxvYXRMaXRlcmFsLnZh
bHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBOdWxsTGl0ZXJhbCYpIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGZhbHNlOworICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSB7
CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0
YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgeworICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0pKTsKKworICAgICAgICBBU1NFUlQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuICpyZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhcmlhbnQ8
CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
LAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBC
b29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UKKyAgICAgICAgPiBtX3ZhcmlhbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg1N2Q5NDcyODViOTY3YWQxMWQ5MTZlMGVlMDJmYmE1ZjE1MGQwYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKQEAgLTAsMCArMSwx
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKK2NsYXNzIEVudW1lcmF0aW9u
TWVtYmVyOworCitjbGFzcyBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Np
b25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmln
aHQoV1RGTW92ZShyaWdodCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkNvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAg
ZXhwbGljaXQgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoY29u
c3QgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmKSA9IGRlZmF1
bHQ7CisgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoQ29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJikgPSBkZWZhdWx0Owor
CisgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIG9wZXJh
dG9yPShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYp
ID0gZGVsZXRlOworICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlJiBvcGVyYXRvcj0oQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVu
Y2UmJikgPSBkZWZhdWx0OworCisgICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9sZWZ0OyB9CisgICAgY29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmlnaHQ7IH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlIGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoTGV4ZXI6OlRva2VuKG9yaWdpbigp
KSwgU3RyaW5nKG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2Vu
dW1lcmF0aW9uTWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVm
aW5pdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247
CisgICAgfQorCisgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRp
b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9u
OworICAgIH0KKworICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICB9CisKKyAgICBF
bnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVt
ZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlv
biwgRW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQorICAgIHsKKyAgICAgICAg
bV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgICAg
ICBtX2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV9sZWZ0OworICAgIFN0cmluZyBtX3JpZ2h0OworICAgIEVudW1l
cmF0aW9uRGVmaW5pdGlvbiogbV9lbnVtZXJhdGlvbkRlZmluaXRpb24geyBudWxscHRyIH07Cisg
ICAgRW51bWVyYXRpb25NZW1iZXIqIG1fZW51bWVyYXRpb25NZW1iZXIgeyBudWxscHRyIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGI5ZTdiNmE2OWFkMWU3ZTAzMjA2OGRlZWI5NDQ4MjZhYmY3Y2UxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnRpbnVlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBT
dGF0ZW1lbnQgeworcHVibGljOgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5Db250aW51ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENv
bnRpbnVlJikgPSBkZWxldGU7CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
Citwcml2YXRlOgorfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTQ1OTEyYWIzOGY3ZjhhYzIxNDRmYWZiN2M0ZjJmYTU4NGE5NDVhNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitwdWJsaWM6CisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdp
biwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9u
KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OworCisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhw
cmVzc2lvbiYpID0gZGVsZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5j
ZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVz
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24m
IHBvaW50ZXIoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wb2ludGVyKTsg
fQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3BvaW50ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlzRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0Nzgz
Nzc1ZTMzZTFjNzc0OWJiYjNkNTNjZDIyZjAzNzczOTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsK
K3B1YmxpYzoKKyAgICBEb1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJl
ZjxTdGF0ZW1lbnQ+JiYgYm9keSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwp
CisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2JvZHko
V1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9u
YWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVs
dDsKKworICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CisgICAg
RG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RvV2hp
bGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RhdGVtZW50
JiBib2R5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQorICAg
IEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lv
biY+KG1fY29uZGl0aW9uYWwpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPFN0YXRlbWVu
dD4gbV9ib2R5OworICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChEb1doaWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERvdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTERvdEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmMxOWRiYjJkYmVjYTM4NDlhMmI0
ZDgwMTg4ZGRlZGViNzJmMGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIERvdEV4
cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAg
ICBEb3RFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgYmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoYmFzZSkpCisgICAgICAgICwgbV9m
aWVsZE5hbWUoV1RGTW92ZShmaWVsZE5hbWUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgRG90RXhwcmVzc2lvbihjb25zdCBE
b3RFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgRG90RXhwcmVzc2lvbihEb3RFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RyaW5nIGdldEZ1bmN0aW9uTmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm9wZXJhdG9y
LiVzIiwgbV9maWVsZE5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgU3RyaW5nIHNl
dEZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIm9wZXJhdG9yLiVzPSIsIG1fZmllbGROYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIH0KKworICAgIFN0cmluZyBhbmRGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJvcGVyYXRvciYuJXMiLCBtX2ZpZWxk
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICBTdHJpbmcmIGZpZWxkTmFtZSgpIHsg
cmV0dXJuIG1fZmllbGROYW1lOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1l
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNzaW9uKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0ZDA4M2E1YzA2ODBiNzU0OTNiZjQzOThkNmIzNTNlNmQ5Zjc1
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKQEAgLTAsMCArMSw3MCBA
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
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQg
eworcHVibGljOgorICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgZWZmZWN0ZnVsRXhwcmVzc2lvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoTGV4
ZXI6OlRva2VuKGVmZmVjdGZ1bEV4cHJlc3Npb24tPm9yaWdpbigpKSkKKyAgICAgICAgLCBtX2Vm
ZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVm
YXVsdDsKKworICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9lZmZlY3RmdWxFeHByZXNzaW9uKTsg
fQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJl
c3Npb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQs
IGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUwODlhMWFiN2QxZjBmYTE4
NDBiZmExY2IxYWNiZjczODRiZGMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCisjaW5jbHVkZSAi
V0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMg
TmFtZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5
cGU+PiYmIHR5cGUpCisgICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92
ZShuYW1lKSkKKyAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAg
RW51bWVyYXRpb25EZWZpbml0aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVs
ZXRlOworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlID8gJnN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4oKm1fdHlwZSkgOiBudWxscHRy
OyB9CisKKyAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKKyAgICB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAg
cmV0dXJuICFyZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJl
ciogbWVtYmVyQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX21lbWJlcnMuZmluZChuYW1lKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09
IG1fbWVtYmVycy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH0KKworICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVtYmVyPj4gZW51bWVyYXRpb25NZW1iZXJzKCkK
KyAgICB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9u
TWVtYmVyPj4gcmVzdWx0OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX21lbWJlcnMpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpwYWlyLnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRU
eXBlPj4gbV90eXBlOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVy
YXRpb25NZW1iZXI+PiBtX21lbWJlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShFbnVtZXJhdGlv
bkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uTWVtYmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2MWE3MjJiNjZmNGQ4ZjBkNzA2
NzExNDM5YTAxODMzZWQ0MDRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7CitwdWJs
aWM6CisgICAgRW51bWVyYXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcm
JiBuYW1lLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6Om51bGxv
cHQpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFt
ZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZhdWx0Owor
CisgICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9IGRlbGV0
ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRlZmF1bHQ7
CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luOyB9CisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgT3B0aW9u
YWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAg
ICB2b2lkIHNldFZhbHVlKENvbnN0YW50RXhwcmVzc2lvbiYmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3ZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IFdURk1vdmUodmFsdWUpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5n
IG1fbmFtZTsKKyAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Cit9Owor
Cit1c2luZyBFbnVtZXJhdGlvbk1lbWJlcnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTY0MzAzODAyYjFiNWE0
MTk3ZDk5MTZjMWExNTIwYjIwZjYwY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
LCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgICAgIDogRXhwcmVz
c2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9lbnVtZXJhdGlvbk1lbWJlcihlbnVt
ZXJhdGlvbk1lbWJlcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJl
cigpIHsgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7IH0KKworcHJpdmF0ZToKKyAgICBFbnVt
ZXJhdGlvbk1lbWJlciYgbV9lbnVtZXJhdGlvbk1lbWJlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQxMzAwZGJlYWM0YzlmMjYy
Nzg4OTkwODAxMGMxYTg1MzUyMzcyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDky
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgRXhwcmVzc2lvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgRXhwcmVzc2lv
bihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmln
aW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0
OworCisgICAgZXhwbGljaXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWZhdWx0
OworICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBFeHByZXNz
aW9uJiBvcGVyYXRvcj0oY29uc3QgRXhwcmVzc2lvbiYpID0gZGVmYXVsdDsKKyAgICBFeHByZXNz
aW9uJiBvcGVyYXRvcj0oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBMZXhl
cjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG90RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRl
cmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRleEV4
cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lu
dGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01ha2VQb2ludGVyRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTnVsbExpdGVy
YWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24p
IHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmJjZjQx
NDU0MDVjYjVjZjUwMjYwYjdkZGQ4NmJhY2Y5NmI2ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVt
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFt
ZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZhbGx0aHJvdWdoIDogcHVibGljIFN0YXRlbWVudCB7Citw
dWJsaWM6CisgICAgRmFsbHRocm91Z2goTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQorICAgICAgICA6
IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OworCisgICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRo
cm91Z2gmKSA9IGRlbGV0ZTsKKyAgICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1
bHQ7CisKKyAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKK3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0Zh
bGx0aHJvdWdoKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MWZiMTNmZWNhNWIyNDQ4YzQzNDFiOGU3MzcwZDVmZGRiMTE4NWM5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgRmxvYXRMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAg
IEZsb2F0TGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAg
ICA6IEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuKG9yaWdpbikpCisgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUob3JpZ2luKSwgdmFsdWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgRmxv
YXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEZsb2F0TGl0ZXJh
bChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OworCisgICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRv
cj0oY29uc3QgRmxvYXRMaXRlcmFsJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsJiBvcGVy
YXRvcj0oRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBt
X3ZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCkpCisgICAg
ICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUo
KS0+Y2xvbmUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEZsb2F0TGl0ZXJhbFR5cGUgbV90eXBlOworICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihGbG9hdExpdGVyYWwsIGlzRmxvYXRMaXRlcmFsKCkpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmFjN2ExYmU2NDc2
M2UyY2JhODA0MDI1Yzk0MTFkY2YxOWUxZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAK
QEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgiCisKKyNp
bmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2Uu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlwZShMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1f
cHJlZmVycmVkVHlwZShtYWtlVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+KFdURk1vdmUob3JpZ2lu
KSwgU3RyaW5nKCJmbG9hdCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBUeXBlQXJn
dW1lbnRzKCkpKQoreworfQorCitGbG9hdExpdGVyYWxUeXBlOjp+RmxvYXRMaXRlcmFsVHlwZSgp
ID0gZGVmYXVsdDsKKworYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5
cGUmIHR5cGUpIGNvbnN0Cit7CisgICAgaWYgKCFpczxOYW1lZFR5cGU+KHR5cGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8TmFtZWRUeXBl
Pih0eXBlKTsKKyAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKKyAgICBpZiAoIW5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0Zsb2F0aW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5jYW5SZXByZXNlbnRGbG9hdCgpKG1fdmFs
dWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2ln
bmVkIEZsb2F0TGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1
bm5hbWVkVHlwZSkgY29uc3QKK3sKKyAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgVHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGY0
MTc5MGNhNWMxOGNmYTgyYjkxM2JlMmI5ZDJjNDYyNjNlZjIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFs
VHlwZS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBUeXBlUmVmZXJlbmNlOworCitjbGFzcyBGbG9hdExpdGVyYWxUeXBlIDog
cHVibGljIFJlc29sdmFibGVUeXBlIHsKK3B1YmxpYzoKKyAgICBGbG9hdExpdGVyYWxUeXBlKExl
eGVyOjpUb2tlbiYmIG9yaWdpbiwgZmxvYXQgdmFsdWUpOworCisgICAgdmlydHVhbCB+RmxvYXRM
aXRlcmFsVHlwZSgpOworCisgICAgRmxvYXRMaXRlcmFsVHlwZShjb25zdCBGbG9hdExpdGVyYWxU
eXBlJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsVHlwZShGbG9hdExpdGVyYWxUeXBlJiYp
ID0gZGVmYXVsdDsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBGbG9h
dExpdGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsVHlwZSYgb3BlcmF0b3I9
KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJh
bFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBUeXBlUmVmZXJl
bmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZVJlZmVyZW5jZSY+
KG1fcHJlZmVycmVkVHlwZSk7IH0KKworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1l
ZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOwor
ICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRl
bmN5IGJldHdlZW4KKyAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4g
VHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgorICAg
IFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVT
T0xWQUJMRV9UWVBFKEZsb2F0TGl0ZXJhbFR5cGUsIGlzRmxvYXRMaXRlcmFsVHlwZSgpKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZvckxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZvckxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTNlZGM5MmRmN2I1MjQ2NzhjYjhhODEzYjM1
ZGM2NDcxZGY0NmQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIEZvckxvb3AoTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIE9wdGlvbmFsPFVuaXF1
ZVJlZjxFeHByZXNzaW9uPj4mJiBjb25kaXRpb24sIE9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4mJiBpbmNyZW1lbnQsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAg
OiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24o
V1RGTW92ZShpbml0aWFsaXphdGlvbikpCisgICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShj
b25kaXRpb24pKQorICAgICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKKyAg
ICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+Rm9yTG9vcCgpCisgICAgeworICAgIH0KKworICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYp
ID0gZGVsZXRlOworICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFZhcmlh
bnQ8VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4m
IGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQorICAgIEV4cHJl
c3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uID8gJnN0YXRpY19jYXN0PEV4
cHJlc3Npb24mPigqbV9jb25kaXRpb24pIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Npb24qIGlu
Y3JlbWVudCgpIHsgcmV0dXJuIG1faW5jcmVtZW50ID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PigqbV9pbmNyZW1lbnQpIDogbnVsbHB0cjsgfQorICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KKworcHJpdmF0ZToKKyAgICBW
YXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4+IG1faW5pdGlhbGl6YXRpb247CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+
PiBtX2NvbmRpdGlvbjsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5j
cmVtZW50OworICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoRm9yTG9vcCwgaXNGb3JMb29wKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJiMGIwYzRmNjIwN2Y0OTcwODc1MDMwMmY3OTk0ZWQ1
YzdkODg1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3VzaW5nIEZ1bmN0aW9uQXR0
cmlidXRlID0gVmFyaWFudDxOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+OwordXNpbmcgQXR0
cmlidXRlQmxvY2sgPSBWZWN0b3I8RnVuY3Rpb25BdHRyaWJ1dGU+OworCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5MGJiYjgwYzMwYjM1OTE2YWMyYWJjMzg1YjNiZDU5NGQzYzY3MmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExT
TFVubmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIE5vZGUgeworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAg
VmVydGV4LAorICAgICAgICBGcmFnbWVudCwKKyAgICAgICAgQ29tcHV0ZSwKKyAgICAgICAgLy8g
RklYTUU6IEFkZCBhbiBlbnRyeSBwb2ludCB0eXBlIGZvciB0ZXN0aW5nCisgICAgfTsKKworICAg
IEZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9j
ayYmIGF0dHJpYnV0ZUJsb2NrLCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5
cGUsIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJs
ZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGlj
LCBib29sIGlzT3BlcmF0b3IpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1fYXR0cmlidXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVCbG9jaykpCisgICAg
ICAgICwgbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKKyAgICAgICAgLCBtX3R5cGUo
V1RGTW92ZSh0eXBlKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAg
LCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAgLCBtX3NlbWFudGlj
KFdURk1vdmUoc2VtYW50aWMpKQorICAgICAgICAsIG1faXNPcGVyYXRvcihXVEZNb3ZlKGlzT3Bl
cmF0b3IpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlY2xhcmF0aW9u
KCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihjb25zdCBGdW5jdGlvbkRl
Y2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRl
Y2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmN0aW9uRGVm
aW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBB
dHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJsb2Nr
OyB9CisgICAgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZW50cnlQb2ludFR5cGU7IH0KKyAgICBjb25zdCBVbm5hbWVkVHlw
ZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVubmFtZWRUeXBlJj4o
bV90eXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VW5uYW1lZFR5cGUmPihtX3R5cGUpOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CisgICAgYm9vbCBpc0Nhc3QoKSBjb25zdCB7IHJldHVybiBtX25h
bWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9CisgICAgY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbnMm
IHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICBWYXJpYWJs
ZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAg
IE9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9Cisg
ICAgYm9vbCBpc09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09wZXJhdG9yOyB9CisKK3By
aXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIEF0dHJpYnV0ZUJsb2NrIG1f
YXR0cmlidXRlQmxvY2s7CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQb2lu
dFR5cGU7CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1f
bmFtZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRlcnM7CisgICAgT3B0aW9u
YWw8U2VtYW50aWM+IG1fc2VtYW50aWM7CisgICAgYm9vbCBtX2lzT3BlcmF0b3I7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0
ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpU
b1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVk
aWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1OGI2YTdmOTg5NjVlMjA2
NWMzNDJiZTQ0NzhlNWUwYTZlYTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRl
Y2xhcmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBG
dW5jdGlvbkRlY2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVu
Y3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2ssIGJv
b2wgcmVzdHJpY3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVu
Y3Rpb25EZWNsYXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKKyAg
ICAgICAgLCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+RnVuY3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWZp
bml0aW9uKGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEZ1bmN0aW9u
RGVmaW5pdGlvbihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBp
c0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KKyAgICBib29sIHJlc3RyaWN0
ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBCbG9j
ayBtX2Jsb2NrOworICAgIGJvb2wgbV9yZXN0cmljdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RF
Q0xBUkFUSU9OKEZ1bmN0aW9uRGVmaW5pdGlvbiwgaXNGdW5jdGlvbkRlZmluaXRpb24oKSkKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjdjZjRiMzdhZjZkZjBiZDk0
ZWEyNzliNDgwYjEzYWJlY2IzMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgSWZTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVt
ZW50IHsKK3B1YmxpYzoKKyAgICBJZlN0YXRlbWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYm
IGJvZHksIE9wdGlvbmFsPFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+PiYmIGVsc2VCb2R5KQorICAgICAg
ICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9jb25kaXRpb25hbChX
VEZNb3ZlKGNvbmRpdGlvbmFsKSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAg
ICAgICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIElmU3RhdGVtZW50KGNv
bnN0IElmU3RhdGVtZW50JikgPSBkZWxldGU7CisgICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQm
JikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9jb25kaXRpb25hbCk7IH0KKyAgICBTdGF0ZW1l
bnQmIGJvZHkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPihtX2JvZHkpOyB9Cisg
ICAgU3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkgPyAmc3RhdGljX2Nh
c3Q8U3RhdGVtZW50Jj4oKm1fZWxzZUJvZHkpIDogbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworICAgIFVuaXF1ZVJlZjxTdGF0
ZW1lbnQ+IG1fYm9keTsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8U3RhdGVtZW50Pj4gbV9lbHNl
Qm9keTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoSWZTdGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiODk3NzQw
ZjNmMmZkZjRjM2RjYzZiZTg2ZWYzYTBjMmQ3YTQ4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24u
aApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qg
eworCitjbGFzcyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uIHsKK3B1YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBp
bmRleCkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4p
LCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKwor
ICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAg
ICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIGJv
b2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBTdHJpbmcgZ2V0RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoIm9wZXJhdG9yW10iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc2V0RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoIm9wZXJhdG9yJltdIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgfQorCisgICAgU3RyaW5nIGFuZEZ1bmN0aW9uTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nKCJvcGVyYXRv
cltdPSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0KKworICAgIEV4cHJl
c3Npb24mIGluZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PihtX2luZGV4KTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2lu
ZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW5kZXhFeHByZXNzaW9uLCBpc0luZGV4RXhwcmVz
c2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMDE0NGE2Y2VjOGQyZGM4OTIzZTMzMGU1YTRjY2QxMmNjZTFjMDYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWwuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVy
YWwuaCIKKworI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2ludDY0X3QgSW50ZWdlckxpdGVyYWw6
OnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlLnJlc29s
dmVkVHlwZSgpKTsKKyAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVy
ZW5jZT4oKm1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2Uu
cmVzb2x2ZWRUeXBlKCkpOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25j
YXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
OworICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tSW50ZWdl
cigpKG1fdmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5YWViZGNkYmVhOGNiMjgz
YzIxZWUyYTFmN2M0ZGQ5YjhkNjNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKQEAgLTAsMCAr
MSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBJbnRl
Z2VyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBJbnRlZ2VyTGl0
ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGludCB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNz
aW9uKExleGVyOjpUb2tlbihvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKG9yaWdp
biksIHZhbHVlKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgSW50ZWdlckxpdGVy
YWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBJbnRlZ2VyTGl0ZXJhbChJ
bnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0
b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7CisgICAgSW50ZWdlckxpdGVyYWwm
IG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRlZ2VyTGl0
ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgp
IGNvbnN0CisgICAgeworICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoTGV4ZXI6OlRva2Vu
KG9yaWdpbigpKSwgbV92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1bHQubV90eXBlLnJlc29sdmVk
VHlwZSgpKQorICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKHJlc3VsdC5tX3R5cGUu
cmVzb2x2ZWRUeXBlKCktPmNsb25lKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOworICAgIGludCBtX3ZhbHVlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVyYWwoKSkKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmIx
ZTE3NmFmODY5YjgxOGE2ZTVjNjk1YmI1ZWUxM2NmOTA2NDA1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5oIgorCisjaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK0ludGVnZXJM
aXRlcmFsVHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgaW50
IHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1fcHJlZmVycmVkVHlwZShtYWtl
VW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+KFdURk1vdmUob3JpZ2luKSwgU3RyaW5nKCJpbnQiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgVHlwZUFyZ3VtZW50cygpKSkKK3sKK30KKwor
SW50ZWdlckxpdGVyYWxUeXBlOjp+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OworCiti
b29sIEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25z
dAoreworICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4odHlwZSk7CisgICAg
aWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7CisgICAgaWYgKCFuYXRpdmVUeXBlRGVjbGFy
YXRpb24uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbmF0aXZl
VHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudEludGVnZXIoKShtX3ZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBJbnRlZ2VyTGl0
ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkg
Y29uc3QKK3sKKyAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gMTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE4Njc5YTc4MTY0
ZWQ1MTBmNTFkYzljMjEwMjdlMmNmNmUxNzhhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5o
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBUeXBlUmVmZXJlbmNlOworCitjbGFzcyBJbnRlZ2VyTGl0ZXJhbFR5cGUgOiBwdWJs
aWMgUmVzb2x2YWJsZVR5cGUgeworcHVibGljOgorICAgIEludGVnZXJMaXRlcmFsVHlwZShMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIGludCB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIH5JbnRlZ2VyTGl0
ZXJhbFR5cGUoKTsKKworICAgIEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJbnRlZ2VyTGl0ZXJh
bFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50ZWdlckxpdGVyYWxU
eXBlJiYpID0gZGVmYXVsdDsKKworICAgIEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNv
bnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOworICAgIEludGVnZXJMaXRlcmFsVHlw
ZSYgb3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PFR5cGVSZWZlcmVuY2UmPihtX3ByZWZlcnJlZFR5cGUpOyB9CisKKyAgICBib29sIGNhblJlc29s
dmUoY29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25D
b3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAg
aW50IG1fdmFsdWU7CisgICAgLy8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8gcmVzb2x2ZSBhIGNp
cmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbgorICAgIC8vIENvbnN0YW50RXhwcmVzc2lvbiAtPiBM
aXRlcmFsVHlwZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMgLT4gQ29uc3RhbnRF
eHByZXNzaW9uCisgICAgVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+IG1fcHJlZmVycmVkVHlwZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBlLCBpc0ludGVnZXJM
aXRlcmFsVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFkMzVlODhhMWIwZWZjMTY4N2Q0YWU3ZWI1YTI1ZjlkMzRiYzBhZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xMb2dpY2FsRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
K3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQW5kLAor
ICAgICAgICBPcgorICAgIH07CisKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4m
JiBvcmlnaW4sIFR5cGUgdHlwZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbGVmdCwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9sZWZ0KFdURk1vdmUo
bGVmdCkpCisgICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+TG9naWNhbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBMb2dp
Y2FsRXhwcmVzc2lvbihjb25zdCBMb2dpY2FsRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIExv
Z2ljYWxFeHByZXNzaW9uKExvZ2ljYWxFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBpc0xvZ2ljYWxF
eHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVz
c2lvbiYgbGVmdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2xlZnQpOyB9
CisgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9u
Jj4obV9yaWdodCk7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OworICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3JpZ2h0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbEV4cHJlc3Npb24sIGlzTG9naWNhbEV4cHJl
c3Npb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYTk3MmJlNmIyZDZhNGIwNzVmMTViMmEyOTYxNGYxNGM4NDNhNTk5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHBy
ZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVz
c2lvbiB7CitwdWJsaWM6CisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQorICAgICAgICA6IEV4cHJl
c3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fb3BlcmFuZChXVEZNb3ZlKG9wZXJh
bmQpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Mb2dpY2FsTm90RXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKworICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RF
eHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5v
dEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNz
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYg
b3BlcmFuZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX29wZXJhbmQpOyB9
CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3BlcmFuZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9uLCBpc0xvZ2ljYWxOb3RFeHByZXNz
aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDE5NTMxZGY2MzBlYTRjZmQ1ZDNiZWM0NDVlMDZk
MmNhOGVhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGxWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3ZlKGxWYWx1ZSkpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisK
KyAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5j
ZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
KE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBp
c01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxF
eHByZXNzaW9uJj4obV9sVmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IG1fbFZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbiwgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDhhNDQ0
MDFlYTZiMTQ5MmM1MWQ0ZTA5MGE2ZDRiMDllNTRhZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHBy
ZXNzaW9uLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1
ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2Ns
YXNzIE1ha2VQb2ludGVyRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoK
KyAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBsVmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9sVmFsdWUoV1RGTW92ZShsVmFsdWUpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5NYWtlUG9pbnRlckV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAg
ICBNYWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFrZVBvaW50ZXJFeHByZXNzaW9uJikgPSBk
ZWxldGU7CisgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKE1ha2VQb2ludGVyRXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbFZhbHVlKTsgfQorCitwcml2YXRlOgor
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KE1ha2VQb2ludGVyRXhwcmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSkKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE5hbWVkVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYTdjNWUzODRiODM4ODNiNjg4YWI3ZTJl
YTAwMDJkZTBhZmIzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaApAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
V0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOYW1l
ZFR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgTmFtZWRUeXBlKExleGVyOjpUb2tl
biYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSkKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKKworICAgIE5hbWVkVHlwZShjb25z
dCBOYW1lZFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBOYW1lZFR5cGUoTmFtZWRUeXBlJiYpID0gZGVm
YXVsdDsKKworICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW47IH0KKyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KKworICAg
IGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgY29uc3QgVHlwZSYg
dW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB2aXJ0dWFsIFR5cGUmIHVu
aWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2Vu
IG1fb3JpZ2luOworICAgIFN0cmluZyBtX25hbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QK
KworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9OQU1FRF9U
WVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1lZFR5cGUmIHR5cGUp
IHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hbWVkVHlwZSwgaXNOYW1l
ZFR5cGUoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgxYTM4YzI4Zjg0YjM5MTNhNDk1NTZhMzY1YTNkZDk3OThh
ZGEzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7CitwdWJsaWM6
CisgICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9uJiYgZnVu
Y3Rpb25EZWNsYXJhdGlvbiwgYm9vbCByZXN0cmljdGVkKQorICAgICAgICA6IEZ1bmN0aW9uRGVj
bGFyYXRpb24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKKyAgICAgICAgLCBtX3Jlc3Ry
aWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVsZXRlOworICAgIE5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJvb2wgcmVzdHJpY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3RlZDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9yZXN0cmljdGVk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYzUwNGIxOGQzZmY4ZGRj
YTE3YjY5ZDhlMzU3Y2JjYjhiYjY3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oCkBA
IC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTmFtZWRU
eXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTmF0aXZlVHlwZURlY2xhcmF0aW9uIDogcHVi
bGljIE5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1
bWVudHMpCisgICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShuYW1l
KSkKKyAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJndW1lbnRzKSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYpID0gZGVsZXRlOworICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVj
bGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc05hdGl2ZVR5cGVEZWNsYXJhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQorICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVy
biBtX3R5cGVBcmd1bWVudHM7IH0KKworICAgIGJvb2wgaXNJbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW50OyB9CisgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1iZXI7
IH0KKyAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzRmxvYXRpbmc7IH0K
KyAgICBib29sIGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZlY3RvcjsgfQorICAgIGJv
b2wgaXNNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX2lzTWF0cml4OyB9CisgICAgYm9vbCBpc1Rl
eHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzVGV4dHVyZTsgfQorICAgIGJvb2wgaXNTaWduZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU2lnbmVkOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxi
b29sKGludCk+JiBjYW5SZXByZXNlbnRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXBy
ZXNlbnRJbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4m
IGNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUmVwcmVz
ZW50VW5zaWduZWRJbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGZsb2F0
KT4mIGNhblJlcHJlc2VudEZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRGbG9h
dDsgfQorICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4mIHN1Y2Nlc3Nv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlv
bjxpbnQ2NF90KGludCk+JiBmb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxpbnQ2
NF90KHVuc2lnbmVkKT4mIGZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyOyB9CisgICAgdm9pZCBpdGVy
YXRlQWxsVmFsdWVzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mIGNhbGxiYWNr
KSB7IG1faXRlcmF0ZUFsbFZhbHVlcyhjYWxsYmFjayk7IH0KKworICAgIHZvaWQgc2V0SXNJbnQo
KSB7IG1faXNJbnQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJc051bWJlcigpIHsgbV9pc051bWJl
ciA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzRmxvYXRpbmcoKSB7IG1faXNGbG9hdGluZyA9IHRy
dWU7IH0KKyAgICB2b2lkIHNldElzVmVjdG9yKCkgeyBtX2lzVmVjdG9yID0gdHJ1ZTsgfQorICAg
IHZvaWQgc2V0SXNNYXRyaXgoKSB7IG1faXNNYXRyaXggPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJ
c1RleHR1cmUoKSB7IG1faXNUZXh0dXJlID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNTaWduZWQo
KSB7IG1faXNTaWduZWQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRDYW5SZXByZXNlbnRJbnRlZ2Vy
KHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2Vu
dEludGVnZXIgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KKyAgICB2b2lkIHNldENhblJlcHJl
c2VudFVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYmIGNhblJl
cHJlc2VudCkgeyBtX2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlciA9IFdURk1vdmUoY2FuUmVw
cmVzZW50KTsgfQorICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50RmxvYXQoc3RkOjpmdW5jdGlvbjxi
b29sKGZsb2F0KT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRGbG9hdCA9IFdURk1v
dmUoY2FuUmVwcmVzZW50KTsgfQorICAgIHZvaWQgc2V0U3VjY2Vzc29yKHN0ZDo6ZnVuY3Rpb248
aW50NjRfdChpbnQ2NF90KT4mJiBzdWNjZXNzb3IpIHsgbV9zdWNjZXNzb3IgPSBXVEZNb3ZlKHN1
Y2Nlc3Nvcik7IH0KKyAgICB2b2lkIHNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIoc3RkOjpmdW5j
dGlvbjxpbnQ2NF90KGludCk+JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3JtYXRWYWx1ZUZyb21JbnRl
Z2VyID0gV1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KKyAgICB2b2lkIHNldEZvcm1hdFZhbHVlRnJv
bVVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiYmIGZvcm1h
dFZhbHVlKSB7IG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShmb3Jt
YXRWYWx1ZSk7IH0KKyAgICB2b2lkIHNldEl0ZXJhdGVBbGxWYWx1ZXMoc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4mJiBpdGVyYXRlQWxsVmFs
dWVzKSB7IG1faXRlcmF0ZUFsbFZhbHVlcyA9IFdURk1vdmUoaXRlcmF0ZUFsbFZhbHVlcyk7IH0K
KworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFR5cGVBcmd1bWVudHMgbV90eXBl
QXJndW1lbnRzOworICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiBtX2NhblJlcHJlc2VudElu
dGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4gbV9jYW5SZXByZXNlbnRV
bnNpZ25lZEludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxib29sKGZsb2F0KT4gbV9jYW5SZXBy
ZXNlbnRGbG9hdDsKKyAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRfdCk+IG1fc3VjY2Vz
c29yOworICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiBtX2Zvcm1hdFZhbHVlRnJvbUlu
dGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4gbV9mb3JtYXRWYWx1
ZUZyb21VbnNpZ25lZEludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4gbV9pdGVyYXRlQWxsVmFsdWVzOworICAgIGJvb2wg
bV9pc0ludCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTnVtYmVyIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNGbG9hdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVmVjdG9yIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNNYXRyaXggeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1RleHR1cmUg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NpZ25lZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFN
RURfVFlQRShOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MjliNzgxODAwNGU5OGZkZjkxZDUwZGNiYmQ2
Njc3MDVmYTU4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTm9kZSB7
CitwdWJsaWM6CisgICAgTm9kZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgfk5vZGUoKSA9
IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBOb2RlKGNvbnN0IE5vZGUmKSA9IGRlZmF1bHQ7Cisg
ICAgTm9kZShOb2RlJiYpID0gZGVmYXVsdDsKKworICAgIE5vZGUmIG9wZXJhdG9yPShjb25zdCBO
b2RlJikgPSBkZWZhdWx0OworICAgIE5vZGUmIG9wZXJhdG9yPShOb2RlJiYpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOdWxsTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTnVsbExpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWIwMTUwMzk0ZWExNzFlNmJlYzY3OTIx
MjlmYzk0ZTg2ZGMxNTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaApAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMTnVsbExpdGVyYWxUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bGxMaXRlcmFsIDogcHVi
bGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIE51bGxMaXRlcmFsKExleGVyOjpUb2tlbiYm
IG9yaWdpbikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+TnVsbExpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBOdWxs
TGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIE51bGxMaXRlcmFsKE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIE51bGxMaXRlcmFsJiBvcGVyYXRvcj0oY29u
c3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBOdWxsTGl0ZXJhbCYgb3BlcmF0b3I9KE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIE51bGxMaXRlcmFsVHlwZSYgdHlwZSgpIHsg
cmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgTnVsbExpdGVyYWwgY2xvbmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBOdWxsTGl0ZXJhbChMZXhlcjo6VG9rZW4ob3JpZ2lu
KCkpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCkpCisgICAgICAg
ICAgICByZXN1bHQubV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUoKS0+
Y2xvbmUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IE51bGxMaXRlcmFsVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihOdWxsTGl0ZXJh
bCwgaXNOdWxsTGl0ZXJhbCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMxN2I2MTdjZTFjNmU2MjA4ZTljYzkyMzg0NzBkZjg4ZWRlOTA3NmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldI
TFNMTnVsbExpdGVyYWxUeXBlLmgiCisKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworYm9vbCBOdWxsTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlw
ZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPFVubmFtZWRUeXBlPih0eXBlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8mIHVubmFtZWRUeXBlID0gZG93bmNhc3Q8VW5uYW1lZFR5cGU+
KHR5cGUpOworICAgIGlmICghaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIE51bGxMaXRl
cmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVsbExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjU2OGZhNGM0MDAyNzc3ODc2
OTgyNWNlMTc0ZDJmNjA3NWMwNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTnVsbExp
dGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK3B1YmxpYzoKKyAgICBOdWxsTGl0
ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbFR5cGUoKSA9
IGRlZmF1bHQ7CisKKyAgICBOdWxsTGl0ZXJhbFR5cGUoY29uc3QgTnVsbExpdGVyYWxUeXBlJikg
PSBkZWxldGU7CisgICAgTnVsbExpdGVyYWxUeXBlKE51bGxMaXRlcmFsVHlwZSYmKSA9IGRlZmF1
bHQ7CisKKyAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBOdWxsTGl0ZXJhbFR5
cGUmKSA9IGRlbGV0ZTsKKyAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShOdWxsTGl0ZXJh
bFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBU
eXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3Qg
VW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKK307CisKK30gLy8gbmFt
ZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNP
TFZBQkxFX1RZUEUoTnVsbExpdGVyYWxUeXBlLCBpc051bGxMaXRlcmFsVHlwZSgpKQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzhlMjk4ZmMwZDJmMmM0NGZkOTBjY2I0NDM4Mzc2ODdhNWU3MDFmOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUgOiBwdWJsaWMgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsKK3B1YmxpYzoKKyAg
ICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBkZXB0aCkKKyAgICAgICAgOiBC
YXNlRnVuY3Rpb25BdHRyaWJ1dGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fd2lkdGgo
d2lkdGgpCisgICAgICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICAgICAsIG1fZGVwdGgoZGVw
dGgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZSgpID0gZGVmYXVsdDsKKworICAgIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShjb25z
dCBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKKyAgICBOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUoTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJiYpID0gZGVmYXVs
dDsKKworICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAg
IHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdW5zaWdu
ZWQgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoOyB9CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgbV93aWR0aDsKKyAgICB1bnNpZ25lZCBtX2hlaWdodDsKKyAgICB1bnNpZ25lZCBtX2Rl
cHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50
ZXJUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
b2ludGVyVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNjkyZDBhYjdkNTBjOGY0YWMwOGJiMDM2OTFiZWIz
YjY5ZWQxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitj
bGFzcyBQb2ludGVyVHlwZSA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKK3B1YmxpYzoKKyAgICBQ
b2ludGVyVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3Bh
Y2UsIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCisgICAgICAgIDogUmVmZXJl
bmNlVHlwZShXVEZNb3ZlKG9yaWdpbiksIGFkZHJlc3NTcGFjZSwgV1RGTW92ZShlbGVtZW50VHlw
ZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflBvaW50ZXJUeXBlKCkgPSBkZWZhdWx0
OworCisgICAgUG9pbnRlclR5cGUoY29uc3QgUG9pbnRlclR5cGUmKSA9IGRlbGV0ZTsKKyAgICBQ
b2ludGVyVHlwZShQb2ludGVyVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzUG9pbnRl
clR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBVbmlxdWVSZWY8
VW5uYW1lZFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBhZGRy
ZXNzU3BhY2UoKSwgZWxlbWVudFR5cGUoKS5jbG9uZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBlKCkpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMjg3NTVlZGIyYmI5YjkwZGVlMGFlNzYyYTM4MzFkMGEwM2FkZWQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVz
c2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHBy
ZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQorICAgICAgICA6IEV4
cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYmFzZShXVEZNb3ZlKGJhc2Up
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24o
KSA9IGRlZmF1bHQ7CisKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY29uc3QgUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlz
UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0RnVuY3Rpb25OYW1lKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU3RyaW5nIHNldEZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBhbmRGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CisKKyAgICBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlR2V0T3Zl
cmxvYWRzKCkgeyByZXR1cm4gbV9wb3NzaWJsZUdldE92ZXJsb2FkczsgfQorICAgIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVT
ZXRPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlU2V0T3ZlcmxvYWRzOyB9CisgICAgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3Nz
aWJsZUFuZE92ZXJsb2FkcygpIHsgcmV0dXJuIG1fcG9zc2libGVBbmRPdmVybG9hZHM7IH0KKwor
ICAgIHZvaWQgc2V0UG9zc2libGVHZXRPdmVybG9hZHMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBvdmVybG9hZHMpCisgICAgewor
ICAgICAgICBtX3Bvc3NpYmxlR2V0T3ZlcmxvYWRzID0gb3ZlcmxvYWRzOworICAgIH0KKyAgICB2
b2lkIHNldFBvc3NpYmxlU2V0T3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQorICAgIHsKKyAgICAg
ICAgbV9wb3NzaWJsZVNldE92ZXJsb2FkcyA9IG92ZXJsb2FkczsKKyAgICB9CisgICAgdm9pZCBz
ZXRQb3NzaWJsZUFuZE92ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKKyAgICB7CisgICAgICAgIG1f
cG9zc2libGVBbmRPdmVybG9hZHMgPSBvdmVybG9hZHM7CisgICAgfQorCisgICAgRXhwcmVzc2lv
biYgYmFzZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2Jhc2UpOyB9CisK
K3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKKyAgICBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJs
ZUdldE92ZXJsb2FkczsKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlv
bkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZVNldE92ZXJsb2FkczsKKyAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZUFu
ZE92ZXJsb2FkczsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
biwgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI5NWQ2ZGQxODI5N2QzMTlkOGI1YzYyY2RiMTIwYmQ0ZTA5NTU2YTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xRdWFsaWZpZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworZW51bSBjbGFzcyBRdWFsaWZpZXIgOiB1aW50
OF90IHsKKyAgICBOb2ludGVycG9sYXRpb24sCisgICAgTm9wZXJzcGVjdGl2ZSwKKyAgICBVbmlm
b3JtLAorICAgIENlbnRyb2lkLAorICAgIFNhbXBsZQorfTsKKwordXNpbmcgUXVhbGlmaWVycyA9
IFZlY3RvcjxRdWFsaWZpZXI+OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYyOWIyOTM5M2VhZTIyNGFhMmQ2NzRlYzI1YTgxNjU5MDZhMmU2YjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKKy8q
CisgKiAgMS4gRXZhbHVhdGUgbV9sVmFsdWUKKyAqICAyLiBBc3NpZ24gdGhlIHJlc3VsdCB0byBt
X29sZFZhbHVlCisgKiAgMy4gRXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Npb24KKyAqICA0LiBB
c3NpZ24gdGhlIHJlc3VsdCB0byBtX25ld1ZhbHVlCisgKiAgNS4gQXNzaWduIHRoZSByZXN1bHQg
dG8gbV9sVmFsdWUKKyAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Npb24KKyAqICA3LiBS
ZXR1cm4gdGhlIHJlc3VsdAorICovCitjbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIDog
cHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBVbmlxdWVSZWY8UmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbj4gY3JlYXRlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IGxWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
UmVmPFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShs
VmFsdWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OworCisgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihjb25zdCBSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIHZv
aWQgc2V0TmV3VmFsdWVFeHByZXNzaW9uKFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIG5ld1ZhbHVl
RXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIG1fbmV3VmFsdWVFeHByZXNzaW9uID0gV1RGTW92
ZShuZXdWYWx1ZUV4cHJlc3Npb24pOworICAgIH0KKworICAgIHZvaWQgc2V0UmVzdWx0RXhwcmVz
c2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByZXN1bHRFeHByZXNzaW9uKQorICAgIHsKKyAg
ICAgICAgbV9yZXN1bHRFeHByZXNzaW9uID0gV1RGTW92ZShyZXN1bHRFeHByZXNzaW9uKTsKKyAg
ICB9CisKKyAgICBVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+IG9sZFZhcmlhYmxlUmVmZXJl
bmNlKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBkb24ndCBnZXQgdXNl
LWFmdGVyLWZyZWVzIGlzIHRoZSBmYWN0IHRoYXQgZXZlcnkgaW5zdGFuY2Ugb2YgUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbiBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJlZmVyZW5jZTo6d3Jh
cChtX29sZFZhbHVlKSk7CisgICAgfQorCisgICAgVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNl
PiBuZXdWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgeworICAgICAgICAvLyBUaGUgb25seSByZWFz
b24gd2UgZG9uJ3QgZ2V0IHVzZS1hZnRlci1mcmVlcyBpcyB0aGUgZmFjdCB0aGF0IGV2ZXJ5IGlu
c3RhbmNlIG9mIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gaXMgYWxsb2NhdGVkIG9uIHRoZSBo
ZWFwLgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4oVmFy
aWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOworICAgIH0KKworICAgIGJvb2wgaXNS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVz
c2lvbiY+KG1fbFZhbHVlKTsgfQorICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG9sZFZhbHVlKCkg
eyByZXR1cm4gbV9vbGRWYWx1ZTsgfQorICAgIFZhcmlhYmxlRGVjbGFyYXRpb24mIG5ld1ZhbHVl
KCkgeyByZXR1cm4gbV9uZXdWYWx1ZTsgfQorICAgIEV4cHJlc3Npb24qIG5ld1ZhbHVlRXhwcmVz
c2lvbigpIHsgcmV0dXJuIG1fbmV3VmFsdWVFeHByZXNzaW9uID8gJnN0YXRpY19jYXN0PEV4cHJl
c3Npb24mPigqbV9uZXdWYWx1ZUV4cHJlc3Npb24pIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Np
b24qIHJlc3VsdEV4cHJlc3Npb24oKSB7IHJldHVybiBtX3Jlc3VsdEV4cHJlc3Npb24gPyAmc3Rh
dGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCptX3Jlc3VsdEV4cHJlc3Npb24pIDogbnVsbHB0cjsgfQor
Citwcml2YXRlOgorICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBV
bmlxdWVSZWY8VT4gV1RGOjptYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisKKyAgICBSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IGxWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKExleGVyOjpUb2tlbihvcmlnaW4p
KQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICAgICAgLCBtX29sZFZh
bHVlKExleGVyOjpUb2tlbihvcmlnaW4pLCBRdWFsaWZpZXJzKCksIFdURjo6bnVsbG9wdCwgU3Ry
aW5nKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgICAgICAsIG1fbmV3VmFsdWUo
V1RGTW92ZShvcmlnaW4pLCBRdWFsaWZpZXJzKCksIFdURjo6bnVsbG9wdCwgU3RyaW5nKCksIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgIHsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4gbV9sVmFsdWU7CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbiBtX29sZFZhbHVl
OworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24gbV9uZXdWYWx1ZTsKKyAgICBPcHRpb25hbDxVbmlx
dWVSZWY8RXhwcmVzc2lvbj4+IG1fbmV3VmFsdWVFeHByZXNzaW9uOworICAgIE9wdGlvbmFsPFVu
aXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9yZXN1bHRFeHByZXNzaW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0Yzg0
YmNiNGMzOTVlZDM3NjZjMzdiYzcxYmMwNWJlZWQyNzlhZjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBl
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFVu
bmFtZWRUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZWZlcmVuY2VUeXBlIDogcHVibGljIFVu
bmFtZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFkZHJlc3NTcGFjZSA6IHVpbnQ4
X3QgeworICAgICAgICBDb25zdGFudCwKKyAgICAgICAgRGV2aWNlLAorICAgICAgICBUaHJlYWRn
cm91cCwKKyAgICAgICAgVGhyZWFkCisgICAgfTsKKworICAgIFJlZmVyZW5jZVR5cGUoTGV4ZXI6
OlRva2VuJiYgb3JpZ2luLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBVbmlxdWVSZWY8VW5u
YW1lZFR5cGU+JiYgZWxlbWVudFR5cGUpCisgICAgICAgIDogVW5uYW1lZFR5cGUoV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFjZSkKKyAgICAgICAg
LCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OworCisgICAgUmVmZXJlbmNlVHlw
ZShjb25zdCBSZWZlcmVuY2VUeXBlJikgPSBkZWxldGU7CisgICAgUmVmZXJlbmNlVHlwZShSZWZl
cmVuY2VUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFkZHJlc3NTcGFjZSBhZGRyZXNz
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsgfQorICAgIGNvbnN0IFVubmFt
ZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVu
bmFtZWRUeXBlJj4obV9lbGVtZW50VHlwZSk7IH0KKyAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5
cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fZWxlbWVudFR5cGUpOyB9
CisKK3ByaXZhdGU6CisgICAgQWRkcmVzc1NwYWNlIG1fYWRkcmVzc1NwYWNlOworICAgIFVuaXF1
ZVJlZjxVbm5hbWVkVHlwZT4gbV9lbGVtZW50VHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFT
VAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUo
UmVmZXJlbmNlVHlwZSwgaXNSZWZlcmVuY2VUeXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29s
dmFibGVUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3MWJkNGNjNGI4NDJmZGZlZWUxMjQ5YTM2NzM4NDE3
M2RkZDY0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKKyNpbmNsdWRlIDxtZW1v
cnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIFJlc29sdmFibGVUeXBlIDogcHVibGljIFR5cGUgeworcHVibGlj
OgorICAgIFJlc29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+UmVzb2x2
YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBSZXNvbHZhYmxlVHlwZShjb25zdCBSZXNvbHZh
YmxlVHlwZSYpID0gZGVsZXRlOworICAgIFJlc29sdmFibGVUeXBlKFJlc29sdmFibGVUeXBlJiYp
ID0gZGVmYXVsdDsKKworICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2
YWJsZVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBSZXNvbHZhYmxlVHlwZSYgb3BlcmF0b3I9KFJlc29s
dmFibGVUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNSZXNvbHZhYmxlVHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdExp
dGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRU
eXBlJikgY29uc3QgPSAwOworCisgICAgY29uc3QgVW5uYW1lZFR5cGUqIHJlc29sdmVkVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJnN0YXRpY19jYXN0PGNvbnN0IFVubmFt
ZWRUeXBlJj4oKm1fcmVzb2x2ZWRUeXBlKSA6IG51bGxwdHI7IH0KKyAgICBVbm5hbWVkVHlwZSog
cmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmc3RhdGljX2Nhc3Q8VW5u
YW1lZFR5cGUmPigqbV9yZXNvbHZlZFR5cGUpIDogbnVsbHB0cjsgfQorCisgICAgdm9pZCByZXNv
bHZlKFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlKQorICAgIHsKKyAgICAgICAgbV9yZXNv
bHZlZFR5cGUgPSBXVEZNb3ZlKHR5cGUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBPcHRpb25h
bDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3Jlc29sdmVkVHlwZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEFTVAorCit9CisKK30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1JFU09MVkFCTEVfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5h
bWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVzb2x2YWJsZVR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9U
WVBFKFJlc29sdmFibGVUeXBlLCBpc1Jlc29sdmFibGVUeXBlKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3Vy
Y2VTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2QwZDE4Mjg0YzgyMTc3NTNk
MTAyZTlmZDhiYjAyYzM0MmQyOGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisKKyNpbmNsdWRl
ICJXSExTTEFycmF5VHlwZS5oIgorI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgorI2luY2x1
ZGUgIldITFNMSW50cmluc2ljcy5oIgorI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgor
I2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitib29sIFJlc291cmNlU2Vt
YW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBj
b25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAoreworICAgIHN3aXRjaCAobV9tb2Rl
KSB7CisgICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OgorICAgICAgICBpZiAoaXM8
UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKSB7CisgICAgICAgICAgICBhdXRvJiByZWZlcmVu
Y2VUeXBlID0gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgPT0gUmVmZXJlbmNlVHlwZTo6
QWRkcmVzc1NwYWNlOjpDb25zdGFudCB8fCByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09
IFJlZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOworICAgICAgICB9CisgICAgICAg
IGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpKSB7CisgICAgICAg
ICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1l
ZFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
OworICAgICAgICAgICAgaWYgKGlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVu
Y2UucmVzb2x2ZWRUeXBlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxOYXRp
dmVUeXBlRGVjbGFyYXRpb24+KCp0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKS5pc1RleHR1
cmUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBNb2RlOjpU
ZXh0dXJlOgorICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5hZGRy
ZXNzU3BhY2UoKSA9PSBSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50OworICAg
ICAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKGlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgeworICAg
ICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KHVu
bmFtZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKTsKKyAgICAgICAgICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp0eXBlUmVm
ZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNU
ZXh0dXJlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTW9k
ZTo6QnVmZmVyOgorICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKQor
ICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5h
ZGRyZXNzU3BhY2UoKSA9PSBSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50Owor
ICAgICAgICByZXR1cm4gaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7CisgICAgY2FzZSBNb2Rl
OjpTYW1wbGVyOgorICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2lj
cy5zYW1wbGVyVHlwZSgpKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNB
Y2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVj
dGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3QKK3sKKyAgICByZXR1cm4gZGly
ZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiMDJiZTAyMDdiYzNjODFmZDI5MjliYmIwZTFlNTk4YjMyY2RkZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQmFzZVNlbWFu
dGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZXNvdXJjZVNl
bWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBN
b2RlIDogdWludDhfdCB7CisgICAgICAgIFVub3JkZXJlZEFjY2Vzc1ZpZXcsCisgICAgICAgIFRl
eHR1cmUsCisgICAgICAgIEJ1ZmZlciwKKyAgICAgICAgU2FtcGxlcgorICAgIH07CisKKyAgICBS
ZXNvdXJjZVNlbWFudGljKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgTW9kZSBtb2RlLCB1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgc3BhY2UpCisgICAgICAgIDogQmFzZVNlbWFudGljKFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX21vZGUobW9kZSkKKyAgICAgICAgLCBtX2luZGV4KGluZGV4
KQorICAgICAgICAsIG1fc3BhY2Uoc3BhY2UpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
flJlc291cmNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBSZXNvdXJjZVNlbWFudGljKGNv
bnN0IFJlc291cmNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBSZXNvdXJjZVNlbWFudGljKFJl
c291cmNlU2VtYW50aWMmJikgPSBkZWZhdWx0OworCisgICAgTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9CisgICAgdW5zaWduZWQgc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VTZW1hbnRpYyYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9tb2RlID09IG90aGVyLm1fbW9kZSAmJiBtX2luZGV4
ID09IG90aGVyLm1faW5kZXggJiYgbV9zcGFjZSA9PSBvdGhlci5tX3NwYWNlOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBi
b29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNz
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGly
ZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIE1vZGUgbV9tb2RlOworICAgIHVuc2lnbmVk
IG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9zcGFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFT
VAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZWIyNDY4NGYwNDcy
MjQ4NTY0NGRhZjQ5YjcyMDc4MzAzY2Y0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgUmV0dXJuIDogcHVibGljIFN0YXRlbWVudCB7
CitwdWJsaWM6CisgICAgUmV0dXJuKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgT3B0aW9uYWw8VW5p
cXVlUmVmPEV4cHJlc3Npb24+PiYmIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+UmV0dXJuKCkgPSBkZWZhdWx0OworCisgICAgUmV0dXJuKGNvbnN0
IFJldHVybiYpID0gZGVsZXRlOworICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OworCisg
ICAgYm9vbCBpc1JldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZSA/ICZzdGF0aWNfY2FzdDxFeHBy
ZXNzaW9uJj4oKm1fdmFsdWUpIDogbnVsbHB0cjsgfQorCisgICAgRnVuY3Rpb25EZWZpbml0aW9u
KiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICB2b2lkIHNldEZ1bmN0aW9u
KEZ1bmN0aW9uRGVmaW5pdGlvbiogZnVuY3Rpb25EZWZpbml0aW9uKSB7IG1fZnVuY3Rpb24gPSBm
dW5jdGlvbkRlZmluaXRpb247IH0KKworcHJpdmF0ZToKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8
RXhwcmVzc2lvbj4+IG1fdmFsdWU7CisgICAgRnVuY3Rpb25EZWZpbml0aW9uKiBtX2Z1bmN0aW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1cm4sIGlzUmV0dXJuKCkpCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2Vt
YW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNl
bWFudGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYjgwNmI1YmY5YjE5YmY1MDAyNDMyMThlNTYzYTNlYmFi
MTRlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNlbWFudGljLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQnVpbHRJ
blNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVk
ZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K3VzaW5nIFNlbWFudGljID0gVmFyaWFudDxCdWlsdEluU2VtYW50aWMsIFJlc291cmNlU2VtYW50
aWMsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgU3RhZ2VJbk91dFNlbWFudGljPjsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlMTViZjgzOWRkNDMyNjlkYWY3NDE4MGQzOTIwZjQ2MGNhYmJmNzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldI
TFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCisKKyNpbmNsdWRlICJXSExTTElu
ZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBj
b25zdCBJbnRyaW5zaWNzJikgY29uc3QKK3sKKyAgICBpZiAoIWlzPFR5cGVSZWZlcmVuY2U+KHVu
bmFtZWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHR5cGVSZWZlcmVu
Y2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7CisgICAgQVNTRVJUKHR5
cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgIGlmICghaXM8TmF0aXZlVHlwZURlY2xh
cmF0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNOdW1iZXIoKTsKK30KKworYm9vbCBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24o
U2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJ
bnB1dDsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDYyYWJiY2ViZTU1MGUyYjgxOTAxOTgyYzY4OTNiMzhiYzRjZjI0MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEJhc2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7Citw
dWJsaWM6CisgICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKExleGVyOjpUb2tlbiYm
IG9yaWdpbikKKyAgICAgICAgOiBCYXNlU2VtYW50aWMoV1RGTW92ZShvcmlnaW4pKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKSA9
IGRlZmF1bHQ7CisKKyAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoY29uc3QgU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgPSBkZWxldGU7CisgICAgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljJikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMm
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wg
aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rp
b24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CisKK3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWFiNzI0YmVmNmYyNjQyM2MwZjg5MjUyYjk5YTcyNzIzMjAyZTJkNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdl
SW5PdXRTZW1hbnRpYy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuaCIKKworI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAi
V0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVm
aW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgorI2luY2x1ZGUgIldITFNM
SW50cmluc2ljcy5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCiti
b29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAoreworICAgIGlmIChpczxB
cnJheVR5cGU+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFp
czxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5
cGUpOworICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICBhdXRv
JiByZXNvbHZlZFR5cGUgPSAqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKTsKKyAgICBpZiAo
aXM8RW51bWVyYXRpb25EZWZpbml0aW9uPihyZXNvbHZlZFR5cGUpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpOworICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKQorICAg
ICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQorICAgICAgICB8fCBuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKK30KKworYm9vbCBTdGFnZUluT3V0U2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9u
KSBjb25zdAoreworICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlw
ZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6VmVy
dGV4OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246
OkVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKKyAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBT
aGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKKyAgICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246
OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNl
bWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWU4NTMyYWQ3YzdlMmNlOGU4NTA2Njdj
YWNmNzg4NjE1ZjYwNjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBTdGFnZUluT3V0U2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsK
K3B1YmxpYzoKKyAgICBTdGFnZUluT3V0U2VtYW50aWMoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1
bnNpZ25lZCBpbmRleCkKKyAgICAgICAgOiBCYXNlU2VtYW50aWMoV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN0
YWdlSW5PdXRTZW1hbnRpYygpID0gZGVmYXVsdDsKKworICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhj
b25zdCBTdGFnZUluT3V0U2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBTdGFnZUluT3V0U2VtYW50
aWMoU3RhZ2VJbk91dFNlbWFudGljJiYpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIGluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0YWdlSW5PdXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdGFnZUluT3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlw
ZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURp
cmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKK3By
aXZhdGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAor
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1NmMxOWMyNGMz
YmU1MTc4OGM0MWQ4NDI2MzJhMjI4YjE5YzRhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaApAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YXRlbWVudCA6IHB1Ymxp
YyBWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVudChjb25zdCBT
dGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVs
dDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFwKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29wKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9v
cmlnaW47Cit9OworCit1c2luZyBTdGF0ZW1lbnRzID0gVmVjdG9yPFVuaXF1ZVJlZjxTdGF0ZW1l
bnQ+PjsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZGVmaW5lIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRv
VmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkgeyByZXR1cm4gc3RhdGVtZW50LnByZWRp
Y2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0
dXJlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NmM2ZTEyMzhiY2I1N2U3
Y2ZlMWUwMTc4NjlmMGY0MTQ0MGE3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5hbWVkVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3Mg
U3RydWN0dXJlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworcHVibGljOgorICAgIFN0
cnVjdHVyZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBT
dHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQorICAgICAgICA6IE5hbWVkVHlw
ZShXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmVF
bGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKworICAgIFN0cnVjdHVy
ZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIFN0
cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVtZW50cygpIHsgcmV0
dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KKworcHJpdmF0ZToKKyAgICBTdHJ1Y3R1cmVFbGVt
ZW50cyBtX3N0cnVjdHVyZUVsZW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30K
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVEX1RZUEUoU3RydWN0dXJl
RGVmaW5pdGlvbiwgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZDY0ZTJlMjhhZmU1NmNiYjhjZjAzMmMx
NDlmYTY5NmFjNGU2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKQEAgLTAsMCArMSw4MCBA
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
Y2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNsdWRlICJX
SExTTFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNpbmNsdWRlICJX
SExTTFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0
cnVjdHVyZUVsZW1lbnQgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlRWxl
bWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBVbmlx
dWVSZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgT3B0aW9uYWw8U2VtYW50
aWM+IHNlbWFudGljKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAg
ICAgLCBtX3F1YWxpZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzKSkKKyAgICAgICAgLCBtX3R5cGUo
V1RGTW92ZSh0eXBlKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAg
LCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJlRWxlbWVu
dChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlRWxlbWVu
dChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKKworICAgIGNvbnN0IExleGVyOjpUb2tl
biYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBVbm5hbWVkVHlwZSYg
dHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4obV90eXBlKTsgfQorICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIE9wdGlvbmFsPFNl
bWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CisKK3ByaXZhdGU6Cisg
ICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFF1YWxpZmllcnMgbV9xdWFsaWZpZXJzOwor
ICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2VtYW50aWM7Cit9OworCit1c2luZyBTdHJ1Y3R1cmVF
bGVtZW50cyA9IFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PjsKKworfSAvLyBuYW1lc3BhY2UgQVNU
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTlmOGE4
ZWI1NzU2ZDYzZjkyMmVhNmE5MjM5YThjMmI1N2U0NmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xDb25zdGFu
dEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgU3dp
dGNoQ2FzZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIFN3aXRjaENhc2UoTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUs
IEJsb2NrJiYgYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAg
ICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgICAgICAsIG1fYmxvY2soV1RGTW92
ZShibG9jaykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN3aXRjaENhc2UoKSA9IGRl
ZmF1bHQ7CisKKyAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0ZTsKKyAg
ICBTd2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1N3aXRj
aENhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBPcHRpb25hbDxD
b25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBCbG9j
ayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8
Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworICAgIEJsb2NrIG1fYmxvY2s7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKFN3aXRjaENhc2UsIGlzU3dpdGNoQ2FzZSgpKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRj
aFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIxOWQ3MDQyMmM5NGQ5OWVkMTM5MDQy
MDUwNjNkZTEyMTQ4YjUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFN3aXRjaENhc2UuaCIKKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN3aXRjaFN0YXRlbWVudCA6
IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIFN3aXRjaFN0YXRlbWVudChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZhbHVlLCBWZWN0b3I8U3dp
dGNoQ2FzZT4mJiBzd2l0Y2hDYXNlcykKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmln
aW4pKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAgICAgICwgbV9zd2l0
Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgU3dpdGNoU3RhdGVtZW50KGNv
bnN0IFN3aXRjaFN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIFN3aXRjaFN0YXRlbWVudChTd2l0
Y2hTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIHZhbHVl
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fdmFsdWUpOyB9CisgICAgVmVj
dG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0K
KworcHJpdmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV92YWx1ZTsKKyAgICBWZWN0
b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAor
Cit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNo
U3RhdGVtZW50LCBpc1N3aXRjaFN0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJu
YXJ5RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MWQxMmI1ZDIyOWZkN2Q0OWQwZjg1OTBlOWZk
ZTFhNTA4MDZjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUZXJuYXJ5RXhwcmVzc2lvbiA6IHB1
YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBUZXJuYXJ5RXhwcmVzc2lvbihMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHByZWRpY2F0ZSwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Npb24sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYm
IGVsc2VFeHByZXNzaW9uKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQor
ICAgICAgICAsIG1fcHJlZGljYXRlKFdURk1vdmUocHJlZGljYXRlKSkKKyAgICAgICAgLCBtX2Jv
ZHlFeHByZXNzaW9uKFdURk1vdmUoYm9keUV4cHJlc3Npb24pKQorICAgICAgICAsIG1fZWxzZUV4
cHJlc3Npb24oV1RGTW92ZShlbHNlRXhwcmVzc2lvbikpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgflRlcm5hcnlFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgVGVybmFyeUV4cHJl
c3Npb24oY29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBUZXJuYXJ5RXhw
cmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVGVy
bmFyeUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBF
eHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4o
bV9wcmVkaWNhdGUpOyB9CisgICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9ib2R5RXhwcmVzc2lvbik7IH0KKyAgICBFeHBy
ZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PihtX2Vsc2VFeHByZXNzaW9uKTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX3ByZWRpY2F0ZTsKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVz
c2lvbjsKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVzc2lvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKFRlcm5hcnlFeHByZXNzaW9uLCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHJhcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODBlNzE3YzA4ZTExNzQ3MWFlNzYxMjhkMGU1
OGM0M2JlYjBiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4
ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUcmFwIDog
cHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVHJhcChMZXhlcjo6VG9rZW4mJiBvcmln
aW4pCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+VHJhcCgpID0gZGVmYXVsdDsKKworICAgIFRyYXAoY29uc3QgVHJhcCYp
ID0gZGVsZXRlOworICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVHJh
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKK307CisKK30g
Ly8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoVHJhcCwgaXNUcmFwKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1
OWU0OTY0NjQzOGY4NTNhYzkwOGY4YTYzY2M0NDBkMGQ1M2I1MDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgKQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOb2RlIHsKK3B1YmxpYzoKKyAgICBUeXBl
KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVsdDsKKworICAgIGV4
cGxpY2l0IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAgIFR5cGUoVHlwZSYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAg
IFR5cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBp
c05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
VW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVO
YW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6
OlR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNjFhYjAwOWI3MmU2OTViNTczZjRiZDM4MDVhMmRmMjFiNmFiZDVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZUFyZ3VtZW50LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVu
dC5oIgorCisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTFR5cGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworVHlwZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBl
QXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQoreworICAgIFR5cGVBcmd1bWVudHMgcmVzdWx0Owor
ICAgIGZvciAoY29uc3QgYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZUFyZ3VtZW50cykKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChjbG9uZSh0eXBlQXJndW1lbnQpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitUeXBlQXJndW1lbnQgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50JiB0eXBlQXJndW1l
bnQpCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBD
b25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgLT4gVHlwZUFyZ3VtZW50IHsK
KyAgICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi5jbG9uZSgpOworICAgIH0sIFtdKGNv
bnN0IFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgLT4gVHlwZUFyZ3Vt
ZW50IHsKKyAgICAgICAgcmV0dXJuIHR5cGVSZWZlcmVuY2UtPmNsb25lVHlwZVJlZmVyZW5jZSgp
OworICAgIH0pLCB0eXBlQXJndW1lbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTY3MDlkN2Fk
Yjk3YmZkNDAzZDIyZTE0OTgxYmRiN2I0NDQxZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZVJl
ZmVyZW5jZTsKKwordXNpbmcgVHlwZUFyZ3VtZW50ID0gVmFyaWFudDxDb25zdGFudEV4cHJlc3Np
b24sIFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPj47Cit1c2luZyBUeXBlQXJndW1lbnRzID0gVmVj
dG9yPFR5cGVBcmd1bWVudD47CisKK1R5cGVBcmd1bWVudCBjbG9uZShjb25zdCBUeXBlQXJndW1l
bnQmKTsKK1R5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYpOworCit9IC8v
IG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmUzZmYzNjRkNmJkNjA2MzA1MmZjM2FmMWI1ZmM0NmYzMWVmNjRlZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgor
I2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFR5cGVEZWZp
bml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgVHlwZURlZmluaXRpb24o
TGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBVbmlxdWVSZWY8VW5uYW1lZFR5
cGU+JiYgdHlwZSkKKyAgICAgICAgOiBOYW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3Zl
KG5hbWUpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKworICAgIFR5cGVEZWZp
bml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAgVHlwZURlZmluaXRp
b24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1R5cGVEZWZpbml0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgVW5uYW1lZFR5cGUm
IHR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fdHlwZSk7IH0KKwor
ICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAg
ICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsKKyAgICB9CisKKyAgICBUeXBlJiB1bmlmeU5v
ZGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHlwZS0+dW5pZnlOb2RlKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX05BTUVEX1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURlZmluaXRpb24oKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZWE3NmUz
ZWI2YTNjZDUzZmVkZDhlNjAwMmI1MmU0MzExY2NmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNw
cApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworI2lu
Y2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4gVHlwZVJlZmVyZW5jZTo6
d3JhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQorewor
ICAgIFR5cGVBcmd1bWVudHMgdHlwZUFyZ3VtZW50czsKKyAgICBpZiAoaXM8TmF0aXZlVHlwZURl
Y2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQorICAgICAgICB0eXBlQXJndW1lbnRzID0gQVNUOjpj
bG9uZShkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVkVHlwZSkudHlwZUFy
Z3VtZW50cygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8VHlwZVJlZmVyZW5j
ZT4oV1RGTW92ZShvcmlnaW4pLCBTdHJpbmcocmVzb2x2ZWRUeXBlLm5hbWUoKSksIFdURk1vdmUo
dHlwZUFyZ3VtZW50cykpOworICAgIHJlc3VsdC0+c2V0UmVzb2x2ZWRUeXBlKHJlc29sdmVkVHlw
ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTdhYzJkZmRi
MDhmYTU2MTI5ZGMzNTQ5YzVjOTEyYTY0ODczMjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFy
Z3VtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgTmFtZWRUeXBlOworCitjbGFzcyBUeXBlUmVmZXJlbmNlIDogcHVibGljIFVubmFtZWRUeXBl
IHsKK3B1YmxpYzoKKyAgICBUeXBlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3Ry
aW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50cyYmIHR5cGVBcmd1bWVudHMpCisgICAgICAgIDogVW5u
YW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUp
KQorICAgICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UeXBlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisg
ICAgVHlwZVJlZmVyZW5jZShjb25zdCBUeXBlUmVmZXJlbmNlJikgPSBkZWxldGU7CisgICAgVHlw
ZVJlZmVyZW5jZShUeXBlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBVbmlx
dWVSZWY8VHlwZVJlZmVyZW5jZT4gd3JhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE5hbWVkVHlw
ZSYgcmVzb2x2ZWRUeXBlKTsKKworICAgIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9u
YW1lOyB9CisgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlw
ZUFyZ3VtZW50czsgfQorICAgIE5hbWVkVHlwZSogcmVzb2x2ZWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZFR5cGU7IH0KKworICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5cGUpOworICAgICAg
ICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOworICAgIH0KKworICAgIFR5cGUm
IHVuaWZ5Tm9kZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQobV9yZXNvbHZlZFR5
cGUpOworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZFR5cGUtPnVuaWZ5Tm9kZSgpOworICAgIH0K
KworICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlKE5hbWVkVHlwZSYgcmVzb2x2ZWRUeXBlKQorICAg
IHsKKyAgICAgICAgbV9yZXNvbHZlZFR5cGUgPSAmcmVzb2x2ZWRUeXBlOworICAgIH0KKworICAg
IFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiBjbG9uZVR5cGVSZWZlcmVuY2UoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRv
a2VuKG9yaWdpbigpKSwgU3RyaW5nKG1fbmFtZSksIEFTVDo6Y2xvbmUobV90eXBlQXJndW1lbnRz
KSk7CisgICAgfQorCisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gY2xvbmVUeXBlUmVmZXJlbmNlKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgVHlwZUFyZ3VtZW50cyBtX3R5
cGVBcmd1bWVudHM7CisgICAgTmFtZWRUeXBlKiBtX3Jlc29sdmVkVHlwZSB7IG51bGxwdHIgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9VTk5BTUVEX1RZUEUoVHlwZVJlZmVyZW5jZSwgaXNUeXBlUmVmZXJlbmNlKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3YzUxNzRkYTUwOTI3
NTM5Njc0NmU2ZTZlMjI1MWYzN2U3YWMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmgKQEAgLTAsMCAr
MSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNs
dWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFVubmFtZWRUeXBlIDogcHVibGlj
IFR5cGUgeworcHVibGljOgorICAgIFVubmFtZWRUeXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflVubmFtZWRUeXBlKCkgPSBkZWZhdWx0OworCisgICAgVW5uYW1lZFR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBVbm5hbWVkVHlwZShVbm5hbWVkVHlwZSYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlclR5cGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQXJyYXlUeXBl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VU
eXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgY29uc3QgVHlwZSYg
dW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB2aXJ0dWFsIFR5cGUmIHVu
aWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxVbm5h
bWVkVHlwZT4gY2xvbmUoKSBjb25zdCA9IDA7CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6
OlRva2VuIG1fb3JpZ2luOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKFRvVmFsdWVU
eXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZSYgdHlwZSkgeyByZXR1cm4g
dHlwZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVW5uYW1lZFR5cGUsIGlzVW5uYW1lZFR5cGUo
KSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhiNGIxZDlkYzQxZTJiMjUyZTlmYjhkNjE1NjdlMjk4YmExMzRiYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKworI2luY2x1ZGUgIldITFNMTmF0aXZl
VHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2ludDY0X3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dmFsdWVGb3JTZWxlY3RlZFR5cGUo
KSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUucmVzb2x2ZWRUeXBlKCkpOworICAgIGF1dG8m
IHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPigqbV90eXBlLnJlc29sdmVk
VHlwZSgpKTsKKyAgICBBU1NFUlQodHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAg
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgcmV0dXJuIG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbi5mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIoKShtX3ZhbHVlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2I5ZTI1YjYwOTBhNjc4
NGUxZWQyNGFlZWE3YWJjZmU1ZjkwN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5o
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24g
eworcHVibGljOgorICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCB1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKExleGVyOjpUb2tlbihv
cmlnaW4pKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKG9yaWdpbiksIHZhbHVlKQorICAgICAg
ICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflVuc2lnbmVk
SW50ZWdlckxpdGVyYWwoKSA9IGRlZmF1bHQ7CisKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBVbnNpZ25lZElu
dGVnZXJMaXRlcmFsKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0OworCisgICAg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBvcGVyYXRvcj0o
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHVuc2lnbmVkIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgYm9vbCBpc1Vuc2lnbmVkSW50
ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBVbnNp
Z25lZEludGVnZXJMaXRlcmFsIGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwgcmVzdWx0KExleGVyOjpUb2tlbihvcmlnaW4oKSksIG1fdmFsdWUpOwor
ICAgICAgICBpZiAocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUoKSkKKyAgICAgICAgICAgIHJl
c3VsdC5tX3R5cGUucmVzb2x2ZShyZXN1bHQubV90eXBlLnJlc29sdmVkVHlwZSgpLT5jbG9uZSgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpbnQ2NF90IHZhbHVlRm9y
U2VsZWN0ZWRUeXBlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGUgbV90eXBlOworICAgIHVuc2lnbmVkIG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVT
U0lPTihVbnNpZ25lZEludGVnZXJMaXRlcmFsLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWRhMzQ2M2FlNTIzNDIwZWYwZTYzYTcwNzk3M2JjOTM4NGU3YzIx
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCisKKyNpbmNsdWRl
ICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShM
ZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1
ZSkKKyAgICAsIG1fcHJlZmVycmVkVHlwZShtYWtlVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+KFdU
Rk1vdmUob3JpZ2luKSwgU3RyaW5nKCJ1aW50IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCksIFR5cGVBcmd1bWVudHMoKSkpCit7Cit9CisKK1Vuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
Ojp+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29uc3QK
K3sKKyAgICBpZiAoIWlzPE5hbWVkVHlwZT4odHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxOYW1lZFR5cGU+KHR5cGUpOworICAgIGlm
ICghaXM8TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgYXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNhc3Q8TmF0aXZl
VHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpOworICAgIGlmICghbmF0aXZlVHlwZURlY2xhcmF0
aW9uLmlzSW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi5pc1NpZ25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFu
YXRpdmVUeXBlRGVjbGFyYXRpb24uY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyKCkobV92YWx1
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWdu
ZWQgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFt
ZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QKK3sKKyAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgc3RhdGljX2Nhc3Q8Y29uc3QgVHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNU
CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ODM3ZTY1MWQxOGYyNmIzNDEyZDU3MDMzZjc3Yjhi
NGNiMWE1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUeXBl
UmVmZXJlbmNlOworCitjbGFzcyBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSA6IHB1YmxpYyBS
ZXNvbHZhYmxlVHlwZSB7CitwdWJsaWM6CisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUo
TGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIH5V
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpOworCisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYmKSA9
IGRlZmF1bHQ7CisKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNv
bnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBUeXBlUmVmZXJlbmNlJiBwcmVm
ZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVy
cmVkVHlwZSk7IH0KKworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3ZhbHVlOworICAgIC8v
IFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJl
dHdlZW4KKyAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJl
ZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgorICAgIFVuaXF1
ZVJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVTT0xWQUJM
RV9UWVBFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkOWM4ZWY3MjNmNWEyNTdi
YjI3ZmM2NzRkMGEzZjM1MGU0N2VhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhbHVlLmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBWYWx1ZSA6IHB1YmxpYyBOb2RlIHsKK3B1
YmxpYzoKKyAgICBWYWx1ZSgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZhbHVlKCkg
PSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgVmFsdWUoY29uc3QgVmFsdWUmKSA9IGRlZmF1bHQ7
CisgICAgVmFsdWUoVmFsdWUmJikgPSBkZWZhdWx0OworCisgICAgVmFsdWUmIG9wZXJhdG9yPShj
b25zdCBWYWx1ZSYpID0gZGVmYXVsdDsKKyAgICBWYWx1ZSYgb3BlcmF0b3I9KFZhbHVlJiYpID0g
ZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjQ0OTQ2MDJjZmJhYWIxMTM1ZDcxNjIzNTZhMGEyMDg3MDEyMmViZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCisjaW5j
bHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUg
IldITFNMVmFsdWUuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBWYWx1ZSB7
CitwdWJsaWM6CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+
PiYmIHR5cGUsIFN0cmluZyYmIG5hbWUsIE9wdGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBP
cHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6ZXIpCisgICAgICAgIDog
bV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fcXVhbGlmaWVycyhXVEZNb3Zl
KHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2VtYW50aWMoV1RGTW92ZShzZW1h
bnRpYykpCisgICAgICAgICwgbV9pbml0aWFsaXplcihXVEZNb3ZlKGluaXRpYWxpemVyKSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFibGVEZWNsYXJhdGlvbigpID0gZGVmYXVs
dDsKKworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbiYp
ID0gZGVsZXRlOworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oVmFyaWFibGVEZWNsYXJhdGlvbiYm
KSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZ2luOyB9CisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9
CisKKyAgICBjb25zdCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfSAvLyBBbm9ueW1vdXMgdmFyaWFibGVzIGluc2lkZSBSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9ucyBoYXZlIHRoZWlyIHR5cGUgc2V0IGJ5IHRoZSB0eXBlIGNo
ZWNrZXIuCisgICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVybiBtX3R5cGUgPyAmc3RhdGlj
X2Nhc3Q8VW5uYW1lZFR5cGUmPigqbV90eXBlKSA6IG51bGxwdHI7IH0KKyAgICBPcHRpb25hbDxT
ZW1hbnRpYz4mIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYzsgfQorICAgIEV4cHJlc3Np
b24qIGluaXRpYWxpemVyKCkgeyByZXR1cm4gbV9pbml0aWFsaXplciA/ICZzdGF0aWNfY2FzdDxF
eHByZXNzaW9uJj4oKm1faW5pdGlhbGl6ZXIpIDogbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKKyAg
ICBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3R5cGU7CisgICAgU3RyaW5nIG1f
bmFtZTsKKyAgICBPcHRpb25hbDxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKKyAgICBPcHRpb25hbDxV
bmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5pdGlhbGl6ZXI7Cit9OworCit1c2luZyBWYXJpYWJs
ZURlY2xhcmF0aW9ucyA9IFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPjsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZTFmYzdmNWIyMzhkYmIw
NDAzZTlmNDAyNzgwNGE3MGE3ZTg4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hM
U0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWZWN0b3I8VmFyaWFibGVE
ZWNsYXJhdGlvbj4mJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKKyAgICAgICAgOiBTdGF0ZW1lbnQo
V1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFyaWFibGVEZWNsYXJhdGlvbnMoV1RGTW92
ZSh2YXJpYWJsZURlY2xhcmF0aW9ucykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQoY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
KSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mIHZhcmlhYmxlRGVjbGFyYXRpb25zKCkg
eyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQorCitwcml2YXRlOgorICAgIFZlY3Rv
cjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOworfTsKKworfSAv
LyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgaXNWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5j
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUwNTJmZGYxZTQ3Y2JkNTFjYzY5YmI1NTk0NjQ2NGY0M2QzZGZjNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGlj
OgorICAgIFZhcmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYg
bmFtZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBt
X25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFi
bGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBW
YXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOworICAgIFZhcmlhYmxlUmVmZXJlbmNlKFZhcmlh
YmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBWYXJpYWJsZVJlZmVyZW5j
ZSB3cmFwKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgewor
ICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSByZXN1bHQoTGV4ZXI6OlRva2VuKHZhcmlhYmxlRGVj
bGFyYXRpb24ub3JpZ2luKCkpKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFyaWFibGUgPSAmdmFyaWFi
bGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBib29s
IGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KKworICAgIFZhcmlhYmxlRGVj
bGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJsZTsgfQorCisgICAgdm9pZCBz
ZXRWYXJpYWJsZShWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQorICAg
IHsKKyAgICAgICAgbV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xhcmF0aW9uOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisg
ICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAg
IFN0cmluZyBtX25hbWU7CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbiogbV92YXJpYWJsZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJlbmNlLCBpc1ZhcmlhYmxlUmVmZXJlbmNl
KCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2U4NjgyYWY5ZGUyMGM2
MmU0NWFlMDMxYWQyMTA4NGQ0MWZjOWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKworY2xhc3MgV2hpbGVMb29wIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAg
V2hpbGVMb29wKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
Y29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0
ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fY29uZGl0aW9uYWwoV1RGTW92ZShj
b25kaXRpb25hbCkpCisgICAgICAgICwgbV9ib2R5KFdURk1vdmUoYm9keSkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVsdDsKKworICAgIFdoaWxlTG9v
cChjb25zdCBXaGlsZUxvb3AmKSA9IGRlbGV0ZTsKKyAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2NvbmRpdGlvbmFsKTsgfQorICAgIFN0YXRlbWVudCYg
Ym9keSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KKworcHJp
dmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKKyAgICBVbmlx
dWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFdoaWxlTG9vcCwg
aXNXaGlsZUxvb3AoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCmluZGV4IDNiMTkzNGU5MzE2NTQ5MjRlMWU0Yzhk
ZWY1OWY3NDhkMjEyMDRhNTMuLmU5YWVhZTdiNTQyMjM4ZTk4MzZhNTQ4MDdkYTFmMDExNzViMjg5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TGV4ZXIuY3BwCkBAIC0yMyw4ICsyMyw2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCi0KICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXSExTTExleGVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ3OTA1NzdhNDE0ZDYwOTRj
YTBhODE0OTJlZmZiYjY4YmMxYjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmNjZjZWQyMjBmNjMyYTk3YzNhNDFlOWQ4OTVmZDVm
MTJiYWYzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFycmF5UmVm
ZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hM
U0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQmFzZUZ1bmN0aW9uQXR0
cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExT
TEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldI
TFNMQnJlYWsuaCIKKyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5oIgorI2luY2x1ZGUg
IldITFNMQ2FsbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5o
IgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
IldITFNMQ29udGludWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
IgorI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTERvdEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIK
KyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNM
RW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIK
KyNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmli
dXRlLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50Lmgi
CisjaW5jbHVkZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEludGVn
ZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTG9n
aWNhbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWwu
aCIKKyNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKKyNpbmNs
dWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMUXVh
bGlmaWVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgiCisj
aW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNl
bWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKKyNpbmNsdWRlICJXSExTTFNlbWFu
dGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIK
KyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMU3Rh
dGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNlLmgi
CisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFRlcm5h
cnlFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUcmFwLmgiCisjaW5jbHVkZSAiV0hMU0xU
eXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFR5
cGVEZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5o
IgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNM
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxl
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKKyNpbmNsdWRlIDx3dGYv
RXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBQYXJzZXIgeworCit9OworCit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJvZ3JhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5M2E3NjdmOGZkOTRmOGIyYzdlYjVjNzNlNTFk
NGIzMTUxN2NjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24u
aCIKKyNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKKyNpbmNsdWRlICJXSExTTE5hbWVDb250
ZXh0LmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFN0cnVj
dHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK2NsYXNzIFByb2dyYW0geworcHVibGljOgorICAgIFByb2dyYW0oKSA9IGRlZmF1
bHQ7CisgICAgUHJvZ3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgYXBwZW5k
KEFTVDo6VHlwZURlZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKKyAgICB7CisgICAgICAgIG1f
dHlwZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+
KFdURk1vdmUodHlwZURlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0
LmFkZChzdGF0aWNfY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uJj4obV90eXBlRGVmaW5pdGlvbnMu
bGFzdCgpKSk7CisgICAgfQorCisgICAgYm9vbCBhcHBlbmQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uJiYgc3RydWN0dXJlRGVmaW5pdGlvbikKKyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlRGVm
aW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihX
VEZNb3ZlKHN0cnVjdHVyZURlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250
ZXh0LmFkZChzdGF0aWNfY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mPihtX3N0cnVjdHVy
ZURlZmluaXRpb25zLmxhc3QoKSkpOworICAgIH0KKworICAgIGJvb2wgYXBwZW5kKEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uJiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQorICAgIHsKKyAgICAg
ICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihXVEZNb3ZlKGVudW1lcmF0aW9uRGVmaW5pdGlvbikpKTsKKyAg
ICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJj4obV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmxhc3QoKSkpOworICAgIH0K
KworICAgIGJvb2wgYXBwZW5kKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZp
bml0aW9uKQorICAgIHsKKyAgICAgICAgbV9mdW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtl
VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5p
dGlvbikpKTsKKyAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJj4obV9mdW5jdGlvbkRlZmluaXRpb25zLmxhc3QoKSkpOwor
ICAgIH0KKworICAgIGJvb2wgYXBwZW5kKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYm
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBtX25hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbj4oV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpOworICAgICAg
ICBtX2ludHJpbnNpY3MuYWRkKHN0YXRpY19jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiY+KG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKSk7CisgICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0aWNfY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24mPihtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSkpOworICAgIH0K
KworICAgIGJvb2wgYXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZlVHlw
ZURlY2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmFw
cGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihXVEZNb3ZlKG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbikpKTsKKyAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChzdGF0aWNf
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiY+KG1fbmF0aXZlVHlwZURlY2xhcmF0aW9u
cy5sYXN0KCkpKTsKKyAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJj4obV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmxh
c3QoKSkpOworICAgIH0KKworICAgIE5hbWVDb250ZXh0JiBuYW1lQ29udGV4dCgpIHsgcmV0dXJu
IG1fbmFtZUNvbnRleHQ7IH0KKyAgICBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKCkgeyByZXR1cm4g
bV9pbnRyaW5zaWNzOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9u
Pj4mIHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9CisgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+PiYgc3RydWN0dXJlRGVm
aW5pdGlvbnMoKSB7IHJldHVybiBtX3N0cnVjdHVyZURlZmluaXRpb25zOyB9CisgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+JiBlbnVtZXJhdGlvbkRlZmlu
aXRpb25zKCkgeyByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOyB9CisgICAgY29uc3Qg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmlu
aXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9CisgICAgVmVj
dG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRp
b25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9CisgICAgY29uc3QgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4+JiBuYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVU
eXBlRGVjbGFyYXRpb25zOyB9CisKK3ByaXZhdGU6CisgICAgTmFtZUNvbnRleHQgbV9uYW1lQ29u
dGV4dDsKKyAgICBJbnRyaW5zaWNzIG1faW50cmluc2ljczsKKyAgICBWZWN0b3I8VW5pcXVlUmVm
PEFTVDo6VHlwZURlZmluaXRpb24+PiBtX3R5cGVEZWZpbml0aW9uczsKKyAgICBWZWN0b3I8VW5p
cXVlUmVmPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4+IG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7
CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+IG1fZW51
bWVyYXRpb25EZWZpbml0aW9uczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uPj4gbV9mdW5jdGlvbkRlZmluaXRpb25zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPj4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4g
bV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOworfTsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCBlN2Q5MzRhZDI3ZjFiZmE5MTIzMWUxZDg2ZGYwYjc0MTlkODM4YjkwLi4xMmUz
MGViMzAxMjk2M2Y4YzEyMTVhYmQ2NGZjNTQzYjQ0ZmU0YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MzA0LDYgKzMwNCwxOSBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCiAKIE1vZHVsZXMvd2ViZ3B1L0RPTVdpbmRvd1dlYkdQVS5jcHAKIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVu
dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAK
K01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCitNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
Y3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
CitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAorTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCitNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcAorTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJpbmRHcm91cExheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTQ1MmMwNjJhNmJhMjZmNDczMjcwNzdmYzFm
OTlhY2ZjZmQ4Y2ViLi5hZTM2ZWRkMzViZjUyZGVmM2VhMGJjYWY5MDk0M2NlOThhMDYxMjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NDAzLDYgKzY0MDMsOSBAQAogCQkxQzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNG
b250RmFjZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ZvbnRGYWNl
U2V0Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9udEZhY2VTZXQuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQx
MEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzMzMjc2QzIxQ0VEQTQyMDAwREM5
RjIgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMzMzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMTmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVW5uYW1lZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMz
OTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRG
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYWNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdD
IC8qIEZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDE1LDYgKzY0MTgsMTUgQEAKIAkJ
MUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9i
amVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAw
QUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmFibGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWxUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjY5QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExT
TEludGVnZXJMaXRlcmFsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzNjIxREVENjU3MDA2
RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdWxs
TGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNjlCMzcyMURF
RDY2QjAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExp
dGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2
QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TEludGVnZXJMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
QjY5QjNBMjFERjA0MDMwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTE51bGxMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2QjRG
ODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZv
bnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjE1LDgg
KzEzMjI3LDg0IEBACiAJCUMxMUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNj
cmVlblByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyZWVuUHJvcGVydGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9u
dFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyog
V0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZVJlZmVy
ZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMEY0RjY2MjFERkYyMzYw
MDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMSW50ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjBG
NEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMTBFOTExMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExT
TExleGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGV4ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjEwRTkxMjIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExleGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTM4QTE1MjFEREVDRTkwMEY1MTZCQSAvKiBXSExTTFJl
c291cmNlU2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxMzhBMTYyMURERUNGQjAw
RjUxNkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxMzhBMTcyMURERUQwRDAwRjUxNkJBIC8qIFdI
TFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjMy
MUNEODlBRDAwMjI3OTc5IC8qIFdITFNMVHJhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFRyYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5
IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rp
b25EZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkY1MjFD
RDg5QjUwMDIyNzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29u
dGludWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjYyMUNEODlCNzAw
MjI3OTc5IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCb29s
ZWFuTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGNzIxQ0Q4
OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xJbmRleEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2
RjgyMUNEODlCQjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjZGOTIxQ0Q4OUJEMDAyMjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkZB
MjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEJhc2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZG
QjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTERvV2hpbGVMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkZD
MjFDRDg5QkYwMDIyNzk3OSAvKiBXSExTTFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RkQyMUNEODlDMDAwMjI3
OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1
bmN0aW9uRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2
RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xJZlN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEZhbGx0aHJvdWdoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xDb25z
dGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAvKiBX
SExTTFJldHVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJldHVybi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xXaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRy
aWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xD
b21tYUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb21tYUV4cHJlc3Npb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDcyMUNEODlDODAwMjI3OTc5IC8q
IFdITFNMTnVsbExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdWxsTGl0ZXJhbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyog
V0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb3VyY2VTZW1h
bnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwOTIxQ0Q4OUNBMDAy
Mjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJheVR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5
IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFF1YWxpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwQzIx
Q0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwRDIxQ0Q4
OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
UmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwRTIx
Q0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFy
Z3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZUFyZ3VtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxs
RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENhbGxFeHByZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExT
TERvdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBX
SExTTFN3aXRjaENhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExT
TEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUMyMUNEODlEQTAw
MjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xU
ZXJuYXJ5RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcx
RDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5
NzkgLyogV0hMU0xCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5
cGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMTIxQ0Q4
OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJ
blNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExT
TE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzI0MjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xO
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI1MjFDRDg5RTIwMDIy
Nzk3OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFy
cmF5UmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcy
NjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzI5MjFDRDg5RTYwMDIyNzk3OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMVHlwZURlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJDMjFDRDg5RTkw
MDIyNzk3OSAvKiBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5
NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xQb2ludGVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRj
aFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hM
U0xMb2dpY2FsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzMzMjFDRDg5RjAwMDIy
Nzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENv
bnN0YW50RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcz
NDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
Rm9yTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNTIxQ0Q4OUYy
MDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9h
dExpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzYyMUNEODlG
MzAwMjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBh
cnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUHJvZ3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjFERjJFNzFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0
QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMyMjYsNiArMTMzMTQsNyBAQAogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyog
SlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0Zv
bnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMw
MDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5
MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAv
KiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVBcmd1
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY0MUU2QjNDNkMw
MDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVj
dGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2Vs
ZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQjAz
MUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI1MjQ1LDEyICsyNTMzNCwxMDkgQEAKIAkJQzIxMEU5MEQyMUI0QkNBNDAwQjdG
ODNEIC8qIFdITFNMICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlDMjFCRjZGMTIxQ0Q4OThEMDAyMjc5NzkgLyogQVNUICovLAogCQkJCUMyMTBFOTExMjFC
NEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmNwcCAqLywKIAkJCQlDMjEwRTkxMjIxQjRCRDEw
MDBCN0Y4M0QgLyogV0hMU0xMZXhlci5oICovLAorCQkJCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3
OSAvKiBXSExTTFBhcnNlci5jcHAgKi8sCisJCQkJQzIxQkY3MzgyMUNEOEEwMzAwMjI3OTc5IC8q
IFdITFNMUGFyc2VyLmggKi8sCisJCQkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNM
UHJvZ3JhbS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBXSExTTDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCUMyMUJGNkYxMjFDRDg5OEQwMDIyNzk3OSAvKiBBU1QgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyMUJGNzI1MjFDRDg5
RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovLAorCQkJCUMyMUJGNzA5
MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovLAorCQkJCUMyMUJGNzMwMjFD
RDg5RUQwMDIyNzk3OSAvKiBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8sCisJCQkJQzIx
QkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8s
CisJCQkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8s
CisJCQkJQzIxQkY3MUUyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMQmxvY2suaCAqLywKKwkJCQlD
MjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovLAorCQkJ
CUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8sCisJCQkJQzIxMzhB
MTMyMURERUNEMzAwRjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAqLywKKwkJCQlD
MjFCRjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLywKKwkJ
CQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovLAor
CQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICov
LAorCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lv
bi5oICovLAorCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhw
cmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2RjUyMUNE
ODlCNTAwMjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLywKKwkJCQlDMjFCRjcwMTIxQ0Q4OUM0
MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcx
ODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2
RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFCRjcy
ODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmgg
Ki8sCisJCQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZp
bml0aW9uLmggKi8sCisJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVy
YXRpb25NZW1iZXIuaCAqLywKKwkJCQkxQzMzMjc2QzIxQ0VEQTQyMDAwREM5RjIgLyogV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5
NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5
IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5Nzkg
LyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEg
LyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNDIxREVENjNBMDA2
RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzQyMUNEODlG
MTAwMjI3OTc5IC8qIFdITFNMRm9yTG9vcC5oICovLAorCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIy
Nzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmggKi8sCisJCQkJQzIxQkY2RkQyMUNEODlD
MDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkY0
MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovLAorCQkJCUMy
MUJGNkZGMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTElmU3RhdGVtZW50LmggKi8sCisJCQkJQzIx
QkY2RjcyMUNEODlCOTAwMjI3OTc5IC8qIFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8sCisJCQkJ
QzIwRjRGNjYyMURGRjIzNjAwNzBDNDVBIC8qIFdITFNMSW50ZWdlckxpdGVyYWwuY3BwICovLAor
CQkJCUMyMUJGNkY4MjFDRDg5QkIwMDIyNzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8s
CisJCQkJMUNCNjlCMzkyMURGMDNGMzAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBl
LmNwcCAqLywKKwkJCQkxQ0I2OUIzNTIxREVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dp
Y2FsRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzE1MjFDRDg5RDQwMDIyNzk3OSAvKiBXSExT
TExvZ2ljYWxOb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MkQyMUNEODlFOTAwMjI3OTc5
IC8qIFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzJD
MjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovLAorCQkJ
CTFDMzMyNzcxMjFDRjBCRTEwMDBEQzlGMiAvKiBXSExTTE5hbWVkVHlwZS5oICovLAorCQkJCUMy
MUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
aCAqLywKKwkJCQlDMjFCRjcyQTIxQ0Q4OUU3MDAyMjc5NzkgLyogV0hMU0xOYXRpdmVUeXBlRGVj
bGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcyNDIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOb2Rl
LmggKi8sCisJCQkJQzIxQkY3MDcyMUNEODlDODAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwu
aCAqLywKKwkJCQkxQ0I2OUIzQTIxREYwNDAzMDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5
cGUuY3BwICovLAorCQkJCTFDQjY5QjM2MjFERUQ2NTcwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRl
cmFsVHlwZS5oICovLAorCQkJCUMyMUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3
OSAvKiBXSExTTFBvaW50ZXJUeXBlLmggKi8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5
IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEIyMUNE
ODlDQzAwMjI3OTc5IC8qIFdITFNMUXVhbGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIyMUNEODlE
OTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAorCQkJCUMy
MUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKKwkJCQkx
Q0I2OUIzMjIxREVENDBCMDA2RTg0NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovLAorCQkJ
CUMyMTM4QTE1MjFEREVDRTkwMEY1MTZCQSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwICov
LAorCQkJCUMyMUJGNzA4MjFDRDg5QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMu
aCAqLywKKwkJCQlDMjFCRjcwMzIxQ0Q4OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLywK
KwkJCQlDMjFCRjZGOTIxQ0Q4OUJEMDAyMjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICovLAorCQkJ
CUMyMTM4QTE2MjFEREVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8sCisJCQkJQzIxMzhBMTcyMURERUQwRDAw
RjUxNkJBIC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcwRTIx
Q0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFC
RjcxMjIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcy
NzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJ
QzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovLAor
CQkJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJ
CQlDMjFCRjczMTIxQ0Q4OUVFMDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywK
KwkJCQlDMjFCRjcxQzIxQ0Q4OURBMDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5o
ICovLAorCQkJCUMyMUJGNkYzMjFDRDg5QUQwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJ
CQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hMU0xUeXBlLmggKi8sCisJCQkJQzI4OEM3
MkQyMUM5OTFEQTAwMkRGNUNBIC8qIFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKKwkJCQlDMjFC
RjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLywKKwkJCQlDMjFC
RjcyOTIxQ0Q4OUU2MDAyMjc5NzkgLyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAorCQkJCUMy
MEY0RjY0MjFERkJFNUMwMDcwQzQ1QSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAorCQkJ
CUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKKwkJ
CQkxQzMzMjc3MjIxQ0YwRDJFMDAwREM5RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICovLAorCQkJ
CUMyMEY0RjY3MjFERkYzQTcwMDcwQzQ1QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
Y3BwICovLAorCQkJCUMyMUJGNzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzQjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCisJCQkJMUNCNjlCMzcyMURFRDY2QjAw
NkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFC
RjZGQzIxQ0Q4OUJGMDAyMjc5NzkgLyogV0hMU0xWYWx1ZS5oICovLAorCQkJCUMyMUJGNzEwMjFD
RDg5RDAwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFC
RjcxNDIxQ0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dC5oICovLAorCQkJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVm
ZXJlbmNlLmggKi8sCisJCQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVM
b29wLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEFTVDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCUM5NkY1RUJGMUI1ODcyMjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358780</attachid>
            <date>2019-01-09 22:43:02 -0800</date>
            <delta_ts>2019-01-10 12:45:59 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-192991-20190109224301.patch</filename>
            <type>text/plain</type>
            <size>333125</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgzMjcwYzBlMmM2Njdj
OTM1N2U0NDVjOTdiZjBiYjgxYzJmMTVkYy4uMGI1NGVlNTdlMjE0YzM0YWVmNTNlZjk3ZGJlYzBj
NjY1MDU3OTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1OCBAQAorMjAxOS0wMS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIGFsbCB0aGUgQVNUIG5vZGVz
IHdoaWNoIHdpbGwgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBwYXJzZXIuCisgICAgICAg
IFRoaXMgcGF0Y2ggdXNlZCB0byBiZSBhIHBhcnQgb2YgdGhlICJjcmVhdGUgYSBXSExTTCBwYXJz
ZXIiIHBhdGNoIGJ1dCBJIHNwbGl0IHRoZW0KKyAgICAgICAgb3V0IGluIG9yZGVyIHRvIGFpZCBy
ZXZpZXdpbmcuCisKKyAgICAgICAgVGhlIGNsYXNzZXMgd2VyZSBtZWNoYW5pY2FsbHkgY3JlYXRl
ZCB0byBtYXRjaCB0aGUgcmVzdWx0IG9mIHRoZSBwYXJzZXIuIFRoZXJlIGFyZQorICAgICAgICBu
b2RlcyBmb3IgdGhpbmdzIGxpa2UgRm9yTG9vcHMsIExvZ2ljYWxOb3RFeHByZXNzaW9ucywgRGVy
ZWZlcmVuY2VFeHByZXNzaW9ucywKKyAgICAgICAgU3RydWN0dXJlRGVmaW5pdGlvbnMsIGFuZCB0
aGluZ3MgbGlrZSB0aGF0LiBUaGUgY2xhc3NlcyBkb24ndCBhY3R1YWxseSBoYXZlIGFueSBsb2dp
YworICAgICAgICBpbiB0aGVtIC0gdGhleSBhcmUgY3VycmVudGx5IGp1c3QgY29udGFpbmVycyB0
byBob2xkIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHBhcnNlZAorICAgICAgICBwcm9ncmFtLiBTb21l
IG9mIHRoZXNlIG5vZGVzIChsaWtlIGNvbnN0ZXhwcnMpIGFyZSBqdXN0IFZhcmlhbnRzIG9mIHRo
ZSB2YXJpb3VzIHRoaW5ncworICAgICAgICB0aGV5IGNhbiBpbiB0aGUgZm9ybSBvZi4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGUgcGFyc2VyIGRvZXNuJ3QgZXhpc3QgdG8gY3Jl
YXRlIHRoZSBuZXcgQVNUIG5vZGVzIHlldC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJyYXlSZWZlcmVuY2VUeXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OkFycmF5VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OnR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXJyYXlUeXBlOjp0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5VHlwZTo6bnVtRWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4cHJl
c3Npb246OkFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpyaWdodCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0aW9uQXR0cmlidXRlOjpCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJh
c2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkJsb2NrOjpCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6c3Rh
dGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVh
bkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFu
TGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkJvb2xlYW5MaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpCcmVhazo6QnJlYWspOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2YXJpYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCdWlsdEluU2VtYW50aWM6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDYWxsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNhbGxFeHByZXNzaW9uOjpDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRDYXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aXNDYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aGFzT3ZlcmxvYWRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpvdmVybG9hZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OnNldE92ZXJsb2Fk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6c2V0RnVu
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhw
cmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhw
cmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpDb25zdGFudEV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjppbnRlZ2VyTGl0
ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
bjo6dmlzaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
b25zdGFudEV4cHJlc3Npb246Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OkNvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpsZWZ0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpyaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlOjplbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51
bWVyYXRpb25NZW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OnNldEVudW1lcmF0aW9u
TWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnRpbnVlOjpDb250
aW51ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvV2hpbGVMb29wOjpEb1doaWxlTG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Ym9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Y29uZGl0aW9uYWwpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvdEV4cHJlc3Npb246OmZp
ZWxkTmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudDo6ZWZmZWN0ZnVsRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6bWVtYmVyQnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6ZW51bWVyYXRpb25NZW1iZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
OjpFbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlcjo6c2V0VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246Om9yaWdpbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Fzc2lnbm1lbnRFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzQm9v
bGVhbkxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNDYWxsRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjppc0NvbW1hRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RlcmVmZXJlbmNlRXhwcmVzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RvdEV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNGbG9hdExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNJbmRleEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbnRlZ2VyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0xvZ2ljYWxFeHByZXNzaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTG9naWNhbE5v
dEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTWFrZVBvaW50ZXJFeHByZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTnVsbExp
dGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzVGVybmFyeUV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkV4cHJlc3Npb246OmlzVmFyaWFibGVSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0
aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmFsbHRocm91
Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGbG9hdExpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rmxv
YXRMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6Y29u
dmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjppbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjpjb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9y
TG9vcDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6
OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OmlzRnVuY3Rpb25E
ZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb246OmlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjphdHRyaWJ1dGVCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpl
bnRyeVBvaW50VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjppc0Nhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6cGFyYW1ldGVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
OjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb246OnNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb246OmlzT3BlcmF0b3IgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6RnVuY3Rpb25EZWZpbml0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6
YmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
OjpyZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OklmU3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpJZlN0YXRlbWVudDo6Y29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SWZTdGF0ZW1lbnQ6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZT
dGF0ZW1lbnQ6OmVsc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbmRleEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbmRleEV4cHJlc3Npb246OkluZGV4RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbmRleEV4cHJlc3Npb246OmluZGV4RXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZUZv
clNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbnRlZ2VyTGl0ZXJhbDo6SW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVn
ZXJMaXRlcmFsVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0
ZXJhbFR5cGU6OmNhblJlc29sdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWxUeXBlOjpwcmVm
ZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okxv
Z2ljYWxFeHByZXNzaW9uOjpMb2dpY2FsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6bGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6cmlnaHQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246Okxv
Z2ljYWxOb3RFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uOjpvcGVyYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsVmFsdWUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQ
b2ludGVyRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYW1lZFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYW1lZFR5cGU6Ok5hbWVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRU
eXBlOjppc1R5cGVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hbWVkVHlwZTo6aXNTdHJ1Y3R1cmVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjppc05hdGl2ZVR5
cGVEZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1l
ZFR5cGU6OnVuaWZ5Tm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YW1lZFR5cGU6OnVuaWZ5Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjo6cmVzdHJpY3RlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc0ludCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6aXNGbG9hdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OmlzVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNNYXRyaXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uOjppc1NpZ25lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rpb248Ym9vbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rp
b248aW50NjRfdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246Oml0ZXJhdGVBbGxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc0ludCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNG
bG9hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb246OnNldElzVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1NpZ25lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldENh
blJlcHJlc2VudEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXBy
ZXNlbnRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb246OnNldFN1Y2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRGb3JtYXRW
YWx1ZUZyb21VbnNpZ25lZEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJdGVyYXRlQWxsVmFsdWVzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbFR5cGU6OmNhblJlc29s
dmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWxUeXBl
Ojpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZTo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6d2lkdGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlOjpoZWln
aHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlOjpkZXB0aCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpQb2ludGVyVHlwZTo6UG9pbnRlclR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6cG9zc2libGVHZXRPdmVybG9hZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpwb3NzaWJsZVNl
dE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb246OnBvc3NpYmxlQW5kT3ZlcmxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6c2V0UG9zc2libGVHZXRPdmVybG9h
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOjpzZXRQb3NzaWJsZVNldE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OnNldFBvc3NpYmxlQW5kT3ZlcmxvYWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6
YmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVy
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb246OnNldFJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6b2xkVmFyaWFibGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6
bmV3VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om9sZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om5ld1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246
Om5ld1ZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpyZXN1bHRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZl
cmVuY2VUeXBlOjpSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNGbG9hdExp
dGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc29sdmFi
bGVUeXBlOjppc0ludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNOdWxsTGl0ZXJhbFR5cGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b2x2YWJsZVR5cGU6OnJlc29sdmVkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6cmVzb2x2ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlJlc29sdmFibGVUeXBlOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6Om1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3VyY2VT
ZW1hbnRpYzo6aW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b3VyY2VTZW1hbnRpYzo6c3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6UmVzb3VyY2VTZW1hbnRpYzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OlJldHVybik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJldHVybjo6ZnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmV0dXJuOjpzZXRGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6
OmlzQWNjZXB0YWJsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OlNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJs
ZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6U3RhZ2VJbk91dFNlbWFudGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0
YWdlSW5PdXRTZW1hbnRpYzo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQ29udGludWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0RvV2hpbGVMb29wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVu
dDo6aXNGYWxsdGhyb3VnaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
dGF0ZW1lbnQ6OmlzRm9yTG9vcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdGF0ZW1lbnQ6OmlzSWZTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RhdGVtZW50Ojppc1JldHVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoQ2FzZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoU3RhdGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNUcmFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OmlzV2hpbGVMb29wIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbjo6U3RydWN0dXJlRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpzdHJ1
Y3R1cmVFbGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQ6OlN0cnVjdHVyZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6bmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6dmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6YmxvY2spOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6U3dpdGNoU3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6dmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoU3RhdGVtZW50Ojpzd2l0Y2hDYXNl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJl
c3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhw
cmVzc2lvbjo6VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6VGVybmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VFeHByZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzTmFtZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzVW5uYW1lZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNSZXNvbHZhYmxlVHlwZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpjbG9uZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJl
bmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJlZmVyZW5j
ZTo6VHlwZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVm
ZXJlbmNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVSZWZlcmVu
Y2U6OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJl
ZmVyZW5jZTo6cmVzb2x2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGVSZWZlcmVuY2U6OnNldFJlc29sdmVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjpjbG9uZVR5cGVSZWZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OlVubmFtZWRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc1R5cGVSZWZl
cmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
OmlzUG9pbnRlclR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5u
YW1lZFR5cGU6OmlzQXJyYXlSZWZlcmVuY2VUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc0FycmF5VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6aXNSZWZlcmVuY2VUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjp1bmlmeU5vZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6b3JpZ2luIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjpjbG9uZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6Y2FuUmVzb2x2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFsdWU6OlZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6VmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6
bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbjo6c2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbjo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Ojp2YXJpYWJsZURlY2xhcmF0
aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVS
ZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZVJlZmVyZW5jZTo6VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OnZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjpzZXRWYXJpYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpXaGlsZUxvb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTGV4ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmFtZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmludHJpbnNpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OnR5cGVEZWZpbml0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6UHJvZ3JhbTo6c3RydWN0dXJlRGVmaW5pdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlByb2dyYW06OmVudW1lcmF0aW9uRGVmaW5pdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06Om5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQcm9ncmFtOjpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmF0aXZl
VHlwZURlY2xhcmF0aW9ucyk6CisKIDIwMTktMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBjdXJy
ZW50IHRleHQgc2VsZWN0aW9uIGFzIHRoZSBmaW5kIHN0cmluZyBvbiBpT1MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJl
bmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QXJyYXlSZWZlcmVuY2VUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzZGM4ODU5NGFkODZkYmU2NWQ0MzFl
ZTgzNmVkNjgzNDNhZDkyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgUmVmZXJlbmNl
VHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2VUeXBlKExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYm
IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJlZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBh
ZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVy
ZW5jZVR5cGUoY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJikgPSBkZWxldGU7CisgICAgQXJyYXlS
ZWZlcmVuY2VUeXBlKEFycmF5UmVmZXJlbmNlVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBcnJheVJlZmVyZW5jZVR5cGU+KExleGVy
OjpUb2tlbihvcmlnaW4oKSksIGFkZHJlc3NTcGFjZSgpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkp
OworICAgIH0KKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlSZWZlcmVu
Y2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODk3OTRiODA4MGFkNTFhNGNiNjY3NjU0MGFiNGVkZDQ4YjRjY2YzZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFycmF5VHlwZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUgeworcHVi
bGljOgorICAgIEFycmF5VHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxVbm5h
bWVkVHlwZT4mJiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgICAgIDog
VW5uYW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RG
TW92ZShlbGVtZW50VHlwZSkpCisgICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OworCisg
ICAgQXJyYXlUeXBlKGNvbnN0IEFycmF5VHlwZSYpID0gZGVsZXRlOworICAgIEFycmF5VHlwZShB
cnJheVR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1lZFR5cGUmPihtX2VsZW1lbnRU
eXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5u
YW1lZFR5cGUmPihtX2VsZW1lbnRUeXBlKTsgfQorICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50czsgfQorCisgICAgVW5pcXVlUmVmPFVubmFtZWRU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxBcnJheVR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIG1fZWxlbWVudFR5cGUt
PmNsb25lKCksIG1fbnVtRWxlbWVudHMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVS
ZWY8VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7CisgICAgdW5zaWduZWQgbV9udW1FbGVtZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5VHlwZSgpKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
ZWIxYWVjMjIxMGI0NzZkMzUwMWYwZTk5NWE3MDU3ODBkNDkwMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbGVmdChX
VEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbGVmdCk7IH0KKyAgICBFeHByZXNzaW9uJiBy
aWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3JpZ2h0KTsgfQorCitw
cml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7CisgICAgVW5pcXVlUmVm
PEV4cHJlc3Npb24+IG1fcmlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhw
cmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlv
bkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMWVkMTEwZjgyODgyMGM5
Y2I2NzU2MjhiOWIyZTQxOWZlMGIzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBOb2RlIHsKK3B1
YmxpYzoKKyAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+QmFzZUZ1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKGNvbnN0IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOwor
ICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTlkYTI0ZjY0ZjlkNmVkNjA2MDQ2NzRjZWI4NzU2MzRmYjBmZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK2NsYXNzIEludHJpbnNpY3M7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBG
dW5jdGlvbkRlZmluaXRpb247CitjbGFzcyBVbm5hbWVkVHlwZTsKKworY2xhc3MgQmFzZVNlbWFu
dGljIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIEJhc2VTZW1hbnRpYyhMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5CYXNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBC
YXNlU2VtYW50aWMoY29uc3QgQmFzZVNlbWFudGljJikgPSBkZWxldGU7CisgICAgQmFzZVNlbWFu
dGljKEJhc2VTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
cHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCA9
IDA7CisKKyAgICBlbnVtIGNsYXNzIFNoYWRlckl0ZW1EaXJlY3Rpb24gOiB1aW50OF90IHsKKyAg
ICAgICAgSW5wdXQsCisgICAgICAgIE91dHB1dAorICAgIH07CisgICAgdmlydHVhbCBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIExleGVy
OjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmxvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJhMTc4NjExMTM5NDRhYjVjYTNmYjE2MjgzMDU2
OTVlMzRmZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhl
ci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCisg
ICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3N0YXRlbWVu
dHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qmxv
Y2soKSA9IGRlZmF1bHQ7CisKKyAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOworICAg
IEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMo
KSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KKworICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBTdGF0ZW1lbnRzIG1fc3Rh
dGVtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjNkOTQ1ZjY0N2EyYzUwNDMx
YjZlMTZmYzRlNzYwY2ZiMGU0NDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUp
CisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9
IGRlZmF1bHQ7CisKKyAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0g
ZGVsZXRlOworICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsK
KworICAgIEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9
IGRlbGV0ZTsKKyAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisKKyAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gQm9vbGVhbkxpdGVyYWwoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgbV92YWx1ZSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5MaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTY1YzAwZmI2Yzc3MmQwOTAwYzI5NjE1YTEyYTQ5MGEzMTRiYTg5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJyZWFrLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1l
bnQgeworcHVibGljOgorICAgIEJyZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAg
OiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5CcmVhaygpID0gZGVmYXVsdDsKKworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7
CisgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0JyZWFrKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChCcmVhaywgaXNCcmVhaygpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQxNGJkNDVhOWEyYWY3NTVhN2Y0NDBiMWZiMDM0MzQwMzkwNzMx
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGlj
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmlu
aXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTElu
dHJpbnNpY3MuaCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworYm9v
bCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAoreworICAgIHN3
aXRjaCAobV92YXJpYWJsZSkgeworICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKKyAg
ICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7
CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXMo
dW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6
UFNpemU6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZs
b2F0VHlwZSgpKTsKKyAgICBjYXNlIFZhcmlhYmxlOjpTVlBvc2l0aW9uOgorICAgICAgICByZXR1
cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOworICAgIGNh
c2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFt
ZWRUeXBlLCBpbnRyaW5zaWNzLmJvb2xUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWU2Ft
cGxlSW5kZXg6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LnVpbnRUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKKyAgICAg
ICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Cisg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFt
ZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0NFR5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZE
ZXB0aDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxv
YXRUeXBlKCkpOworICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6CisgICAgICAgIHJldHVy
biBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpOworICAgIGNhc2Ug
VmFyaWFibGU6OlNWRGlzcGF0Y2hUaHJlYWRJRDoKKyAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKKyAgICBjYXNlIFZhcmlhYmxlOjpT
Vkdyb3VwSUQ6CisgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LmZsb2F0M1R5cGUoKSk7CisgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgorICAgICAg
ICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKKyAg
ICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQ6CisgICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0M1R5cGUoKSk7CisgICAgfQorfQorCitib29s
IEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFk
ZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJiBmdW5j
dGlvbkRlZmluaXRpb24pIGNvbnN0Cit7CisgICAgc3dpdGNoICgqZnVuY3Rpb25EZWZpbml0aW9u
LmVudHJ5UG9pbnRUeXBlKCkpIHsKKyAgICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246OkVudHJ5
UG9pbnRUeXBlOjpWZXJ0ZXg6CisgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAg
IGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1f
dmFyaWFibGUpIHsKKyAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKKyAg
ICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWVmVydGV4SUQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpP
dXRwdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKKyAgICAgICAgICAgIGNh
c2UgVmFyaWFibGU6OlBTaXplOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZQb3NpdGlv
bjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6Cisg
ICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6SW5wdXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgVmFyaWFibGU6OlNWSXNGcm9udEZhY2U6CisgICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVlBvc2l0aW9uOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRl
eDoKKyAgICAgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFnZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIFNoYWRlckl0ZW1E
aXJlY3Rpb246Ok91dHB1dDoKKyAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgeworICAg
ICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZUYXJnZXQ6CisgICAgICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVkRlcHRoOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZDb3ZlcmFnZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgY2Fz
ZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKKyAgICAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJ
bnB1dDoKKyAgICAgICAgICAgIHN3aXRjaCAobV92YXJpYWJsZSkgeworICAgICAgICAgICAgY2Fz
ZSBWYXJpYWJsZTo6U1ZEaXNwYXRjaFRocmVhZElEOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJs
ZTo6U1ZHcm91cElEOgorICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4Ogor
ICAgICAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cFRocmVhZElEOgorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgU2hhZGVySXRlbURpcmVj
dGlvbjo6T3V0cHV0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNl
bWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
dWlsdEluU2VtYW50aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmRlMWQwODRmZDM3NzIxNzJhNGY3ZjUzN2Ez
MzBmMGExNjEwODUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCdWlsdEluU2VtYW50aWMgOiBwdWJs
aWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFZhcmlhYmxlIDogdWlu
dDhfdCB7CisgICAgICAgIFNWSW5zdGFuY2VJRCwKKyAgICAgICAgU1ZWZXJ0ZXhJRCwKKyAgICAg
ICAgUFNpemUsCisgICAgICAgIFNWUG9zaXRpb24sCisgICAgICAgIFNWSXNGcm9udEZhY2UsCisg
ICAgICAgIFNWU2FtcGxlSW5kZXgsCisgICAgICAgIFNWSW5uZXJDb3ZlcmFnZSwKKyAgICAgICAg
U1ZUYXJnZXQsCisgICAgICAgIFNWRGVwdGgsCisgICAgICAgIFNWQ292ZXJhZ2UsCisgICAgICAg
IFNWRGlzcGF0Y2hUaHJlYWRJRCwKKyAgICAgICAgU1ZHcm91cElELAorICAgICAgICBTVkdyb3Vw
SW5kZXgsCisgICAgICAgIFNWR3JvdXBUaHJlYWRJRAorICAgIH07CisKKyAgICBCdWlsdEluU2Vt
YW50aWMoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8
dW5zaWduZWQ+JiYgdGFyZ2V0SW5kZXggPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogQmFzZVNl
bWFudGljKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQor
ICAgICAgICAsIG1fdGFyZ2V0SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgfkJ1aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKKworICAgIEJ1
aWx0SW5TZW1hbnRpYyhjb25zdCBCdWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBCdWls
dEluU2VtYW50aWMoQnVpbHRJblNlbWFudGljJiYpID0gZGVmYXVsdDsKKworICAgIFZhcmlhYmxl
IHZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYWJsZTsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJ1aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV92YXJpYWJsZSA9PSBvdGhlci5tX3ZhcmlhYmxlICYmIG1fdGFyZ2V0SW5kZXgg
PT0gb3RoZXIubV90YXJnZXRJbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQnVpbHRJblNlbWFudGljJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rp
b24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRl
OgorICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFy
Z2V0SW5kZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q2FsbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENhbGxFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0NmFkYTgyNWE0NGMzOGM5MjVk
YzNhNjcxOGU4NWJjYzlmNWZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVj
bGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBOYW1lZFR5cGU7CisKK2NsYXNzIENhbGxFeHByZXNzaW9u
IDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENhbGxFeHByZXNzaW9uKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4mJiBhcmd1bWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikp
CisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV9hcmd1bWVudHMo
V1RGTW92ZShhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5DYWxsRXhw
cmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHBy
ZXNzaW9uJikgPSBkZWxldGU7CisgICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFy
Z3VtZW50cygpIHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9CisKKyAgICBTdHJpbmcmIG5hbWUoKSB7
IHJldHVybiBtX25hbWU7IH0KKworICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1l
ZFR5cGUpCisgICAgeworICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0geyBuYW1lZFR5cGUgfTsK
KyAgICB9CisKKyAgICBib29sIGlzQ2FzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1f
Y2FzdFJldHVyblR5cGUpOyB9CisgICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxO
YW1lZFR5cGU+PiYgY2FzdFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9
CisgICAgYm9vbCBoYXNPdmVybG9hZHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihtX292ZXJsb2Fkcyk7IH0KKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+JiBvdmVybG9hZHMoKSB7IHJldHVybiBtX292
ZXJsb2FkczsgfQorICAgIHZvaWQgc2V0T3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQorICAgIHsK
KyAgICAgICAgYXNzZXJ0KCFoYXNPdmVybG9hZHMoKSk7CisgICAgICAgIG1fb3ZlcmxvYWRzID0g
b3ZlcmxvYWRzOworICAgIH0KKworICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJh
dGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKKyAgICB7CisgICAgICAgIGFzc2VydCghbV9mdW5j
dGlvbik7CisgICAgICAgIG1fZnVuY3Rpb24gPSAmZnVuY3Rpb25EZWNsYXJhdGlvbjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEV4
cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+IG1fb3ZlcmxvYWRzOworICAgIEZ1
bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07CisgICAgT3B0aW9uYWw8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOYW1lZFR5cGU+PiBtX2Nhc3RSZXR1cm5UeXBlIHsgV1RG
OjpudWxsb3B0IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxs
RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTcwMmMyODY0ODhjNGYwZmNiNjM2ODcyNjIwYmNiYjIzOTZiNjFmZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bW1hRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgQ29tbWFFeHByZXNzaW9uIDogcHVi
bGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIENvbW1hRXhwcmVzc2lvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92
ZShsaXN0KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkg
PSBkZWZhdWx0OworCisgICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYp
ID0gZGVsZXRlOworICAgIENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZh
dWx0OworCisgICAgYm9vbCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkg
eyByZXR1cm4gbV9saXN0OyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPj4gbV9saXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBp
c0NvbW1hRXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY2OGMyYTEzMzRkMjllOTEzYmFkNDVmY2M0MWEyNTc5MzFjMDg3
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5o
IgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bGxM
aXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLy8gRklYTUU6IG1hY09TIFNpZXJyYSBkb2Vz
bid0IHNlZW0gdG8gc3VwcG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywKKy8v
IHNvIHRoaXMgaXMgYSB3cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFw
cGVuLiBBcyBzb29uIGFzIHdlIGRvbid0CisvLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0aGlz
IGNhbiBiZSBtaWdyYXRlZCB0byBhIFZhcmlhbnQgcHJvcGVyLgorY2xhc3MgQ29uc3RhbnRFeHBy
ZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwm
JiBpbnRlZ2VyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0
ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZElu
dGVnZXJMaXRlcmFsJiYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3Zhcmlh
bnQoV1RGTW92ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAg
Q29uc3RhbnRFeHByZXNzaW9uKEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKKyAgICAgICAg
OiBtX3ZhcmlhbnQoV1RGTW92ZShmbG9hdExpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBD
b25zdGFudEV4cHJlc3Npb24oTnVsbExpdGVyYWwmJiBudWxsTGl0ZXJhbCkKKyAgICAgICAgOiBt
X3ZhcmlhbnQoV1RGTW92ZShudWxsTGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0
YW50RXhwcmVzc2lvbihCb29sZWFuTGl0ZXJhbCYmIGJvb2xlYW5MaXRlcmFsKQorICAgICAgICA6
IG1fdmFyaWFudChXVEZNb3ZlKGJvb2xlYW5MaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAg
Q29uc3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlJiYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpCisg
ICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24o
Y29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgQ29uc3RhbnRFeHByZXNz
aW9uKENvbnN0YW50RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBDb25zdGFudEV4cHJl
c3Npb24mIG9wZXJhdG9yPShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAg
ICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9yPShDb25zdGFudEV4cHJlc3Npb24mJikgPSBk
ZWZhdWx0OworCisgICAgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEludGVnZXJMaXRlcmFsPihtX3Zh
cmlhbnQpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEludGVnZXJMaXRlcmFsPihtX3Zhcmlh
bnQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQoVCYmIHQp
CisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURk1vdmUodCksIG1fdmFyaWFudCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCB2aXNpdChUJiYgdCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFdURjo6dmlzaXQoV1RGTW92ZSh0KSwgbV92YXJpYW50KTsKKyAgICB9CisK
KyAgICBDb25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwm
IGludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0
dXJuIGludGVnZXJMaXRlcmFsLmNsb25lKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJl
c3Npb24geworICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUo
KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9u
ZSgpOworICAgICAgICB9LCBbJl0oY29uc3QgTnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSAtPiBD
b25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0dXJuIG51bGxMaXRlcmFsLmNsb25l
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwp
IC0+IENvbnN0YW50RXhwcmVzc2lvbiB7CisgICAgICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVy
YWwuY2xvbmUoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5jbG9uZSgpOworICAg
ICAgICB9KSwgbV92YXJpYW50KTsKKyAgICB9CisKKyAgICBib29sIG1hdGNoZXMoY29uc3QgQ29u
c3RhbnRFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJv
b2w+IHJlc3VsdDsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICB2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAg
ICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsK
KyAgICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAg
ICAgICB9LCBbJl0oY29uc3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKKyAgICAgICAg
ICAgIHZhbHVlID0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBO
dWxsTGl0ZXJhbCYpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8TnVsbExpdGVyYWw+KG90aGVyLm1fdmFyaWFudCk7CisgICAgICAgIH0sIFsmXShjb25zdCBC
b29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKKyAgICAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAg
ICAgICAgICAgICAgY29uc3QgYXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0PEJv
b2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgpOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgIH0sIFsmXShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpIHsKKyAg
ICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgb3RoZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZT4ob3RoZXIubV92YXJpYW50KTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1l
bWJlclJlZmVyZW5jZS5lbnVtZXJhdGlvbk1lbWJlcigpID09IG90aGVyTWVtYmVyUmVmZXJlbmNl
LmVudW1lcmF0aW9uTWVtYmVyKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGlmIChyZXN1bHQpCisg
ICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKKworICAgICAgICBvdGhlci52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZhbHVlID09IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7CisgICAg
ICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJM
aXRlcmFsKSB7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSB1bnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0
TGl0ZXJhbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gZmxvYXRMaXRlcmFsLnZh
bHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBOdWxsTGl0ZXJhbCYpIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGZhbHNlOworICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSB7
CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0
YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgeworICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0pKTsKKworICAgICAgICBBU1NFUlQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuICpyZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhcmlhbnQ8
CisgICAgICAgIEludGVnZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
LAorICAgICAgICBGbG9hdExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBC
b29sZWFuTGl0ZXJhbCwKKyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UKKyAgICAgICAgPiBtX3ZhcmlhbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg1N2Q5NDcyODViOTY3YWQxMWQ5MTZlMGVlMDJmYmE1ZjE1MGQwYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENv
bnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKQEAgLTAsMCArMSwx
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKK2NsYXNzIEVudW1lcmF0aW9u
TWVtYmVyOworCitjbGFzcyBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Np
b25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmlu
ZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShv
cmlnaW4pKQorICAgICAgICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmln
aHQoV1RGTW92ZShyaWdodCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkNvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAg
ZXhwbGljaXQgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoY29u
c3QgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmKSA9IGRlZmF1
bHQ7CisgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoQ29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJikgPSBkZWZhdWx0Owor
CisgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIG9wZXJh
dG9yPShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYp
ID0gZGVsZXRlOworICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlJiBvcGVyYXRvcj0oQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVu
Y2UmJikgPSBkZWZhdWx0OworCisgICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9sZWZ0OyB9CisgICAgY29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmlnaHQ7IH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlIGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoTGV4ZXI6OlRva2VuKG9yaWdpbigp
KSwgU3RyaW5nKG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2Vu
dW1lcmF0aW9uTWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVm
aW5pdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247
CisgICAgfQorCisgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRp
b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9u
OworICAgIH0KKworICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICB9CisKKyAgICBF
bnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVt
ZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlv
biwgRW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQorICAgIHsKKyAgICAgICAg
bV9lbnVtZXJhdGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgICAg
ICBtX2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV9sZWZ0OworICAgIFN0cmluZyBtX3JpZ2h0OworICAgIEVudW1l
cmF0aW9uRGVmaW5pdGlvbiogbV9lbnVtZXJhdGlvbkRlZmluaXRpb24geyBudWxscHRyIH07Cisg
ICAgRW51bWVyYXRpb25NZW1iZXIqIG1fZW51bWVyYXRpb25NZW1iZXIgeyBudWxscHRyIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGI5ZTdiNmE2OWFkMWU3ZTAzMjA2OGRlZWI5NDQ4MjZhYmY3Y2UxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnRpbnVlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBT
dGF0ZW1lbnQgeworcHVibGljOgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikK
KyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5Db250aW51ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENv
bnRpbnVlJikgPSBkZWxldGU7CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
Citwcml2YXRlOgorfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTQ1OTEyYWIzOGY3ZjhhYzIxNDRmYWZiN2M0ZjJmYTU4NGE5NDVhNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7
CitwdWJsaWM6CisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdp
biwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9u
KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBk
ZWZhdWx0OworCisgICAgRGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhw
cmVzc2lvbiYpID0gZGVsZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5j
ZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVz
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24m
IHBvaW50ZXIoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wb2ludGVyKTsg
fQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3BvaW50ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlzRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0Nzgz
Nzc1ZTMzZTFjNzc0OWJiYjNkNTNjZDIyZjAzNzczOTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNM
TGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitu
YW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsK
K3B1YmxpYzoKKyAgICBEb1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJl
ZjxTdGF0ZW1lbnQ+JiYgYm9keSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwp
CisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2JvZHko
V1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9u
YWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVs
dDsKKworICAgIERvV2hpbGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CisgICAg
RG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RvV2hp
bGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RhdGVtZW50
JiBib2R5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQorICAg
IEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lv
biY+KG1fY29uZGl0aW9uYWwpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPFN0YXRlbWVu
dD4gbV9ib2R5OworICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChEb1doaWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TERvdEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTERvdEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmMxOWRiYjJkYmVjYTM4NDlhMmI0
ZDgwMTg4ZGRlZGViNzJmMGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIERvdEV4
cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAg
ICBEb3RFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgYmFzZSwgU3RyaW5nJiYgZmllbGROYW1lKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoYmFzZSkpCisgICAgICAgICwgbV9m
aWVsZE5hbWUoV1RGTW92ZShmaWVsZE5hbWUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5Eb3RFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgRG90RXhwcmVzc2lvbihjb25zdCBE
b3RFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgRG90RXhwcmVzc2lvbihEb3RFeHByZXNzaW9u
JiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RyaW5nIGdldEZ1bmN0aW9uTmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm9wZXJhdG9y
LiVzIiwgbV9maWVsZE5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgU3RyaW5nIHNl
dEZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIm9wZXJhdG9yLiVzPSIsIG1fZmllbGROYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIH0KKworICAgIFN0cmluZyBhbmRGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJvcGVyYXRvciYuJXMiLCBtX2ZpZWxk
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICBTdHJpbmcmIGZpZWxkTmFtZSgpIHsg
cmV0dXJuIG1fZmllbGROYW1lOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1l
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNzaW9uKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0ZDA4M2E1YzA2ODBiNzU0OTNiZjQzOThkNmIzNTNlNmQ5Zjc1
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKQEAgLTAsMCArMSw3MCBA
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
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQg
eworcHVibGljOgorICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgZWZmZWN0ZnVsRXhwcmVzc2lvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoTGV4
ZXI6OlRva2VuKGVmZmVjdGZ1bEV4cHJlc3Npb24tPm9yaWdpbigpKSkKKyAgICAgICAgLCBtX2Vm
ZmVjdGZ1bEV4cHJlc3Npb24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVm
YXVsdDsKKworICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9lZmZlY3RmdWxFeHByZXNzaW9uKTsg
fQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJl
c3Npb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQs
IGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUwODlhMWFiN2QxZjBmYTE4
NDBiZmExY2IxYWNiZjczODRiZGMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCisjaW5jbHVkZSAi
V0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hM
U0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMg
TmFtZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5
cGU+PiYmIHR5cGUpCisgICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92
ZShuYW1lKSkKKyAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAg
RW51bWVyYXRpb25EZWZpbml0aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVs
ZXRlOworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlID8gJnN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4oKm1fdHlwZSkgOiBudWxscHRy
OyB9CisKKyAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKKyAgICB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAg
cmV0dXJuICFyZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJl
ciogbWVtYmVyQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX21lbWJlcnMuZmluZChuYW1lKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09
IG1fbWVtYmVycy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH0KKworICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVtYmVyPj4gZW51bWVyYXRpb25NZW1iZXJzKCkK
KyAgICB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9u
TWVtYmVyPj4gcmVzdWx0OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX21lbWJlcnMpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpwYWlyLnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRU
eXBlPj4gbV90eXBlOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVy
YXRpb25NZW1iZXI+PiBtX21lbWJlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShFbnVtZXJhdGlv
bkRlZmluaXRpb24sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25NZW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVudW1lcmF0aW9uTWVtYmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2MWE3MjJiNjZmNGQ4ZjBkNzA2
NzExNDM5YTAxODMzZWQ0MDRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7CitwdWJs
aWM6CisgICAgRW51bWVyYXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcm
JiBuYW1lLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6Om51bGxv
cHQpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFt
ZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZhdWx0Owor
CisgICAgRW51bWVyYXRpb25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9IGRlbGV0
ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRlZmF1bHQ7
CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luOyB9CisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgT3B0aW9u
YWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAg
ICB2b2lkIHNldFZhbHVlKENvbnN0YW50RXhwcmVzc2lvbiYmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3ZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IFdURk1vdmUodmFsdWUpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5n
IG1fbmFtZTsKKyAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Cit9Owor
Cit1c2luZyBFbnVtZXJhdGlvbk1lbWJlcnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTY0MzAzODAyYjFiNWE0
MTk3ZDk5MTZjMWExNTIwYjIwZjYwY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
LCBFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgICAgIDogRXhwcmVz
c2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9lbnVtZXJhdGlvbk1lbWJlcihlbnVt
ZXJhdGlvbk1lbWJlcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJl
cigpIHsgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7IH0KKworcHJpdmF0ZToKKyAgICBFbnVt
ZXJhdGlvbk1lbWJlciYgbV9lbnVtZXJhdGlvbk1lbWJlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQxMzAwZGJlYWM0YzlmMjYy
Nzg4OTkwODAxMGMxYTg1MzUyMzcyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDky
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgRXhwcmVzc2lvbiA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgRXhwcmVzc2lv
bihMZXhlcjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmln
aW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0
OworCisgICAgZXhwbGljaXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWZhdWx0
OworICAgIEV4cHJlc3Npb24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBFeHByZXNz
aW9uJiBvcGVyYXRvcj0oY29uc3QgRXhwcmVzc2lvbiYpID0gZGVmYXVsdDsKKyAgICBFeHByZXNz
aW9uJiBvcGVyYXRvcj0oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBMZXhl
cjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG90RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRl
cmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRleEV4
cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lu
dGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01ha2VQb2ludGVyRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTnVsbExpdGVy
YWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAg
IExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24p
IHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmJjZjQx
NDU0MDVjYjVjZjUwMjYwYjdkZGQ4NmJhY2Y5NmI2ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVt
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFt
ZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZhbGx0aHJvdWdoIDogcHVibGljIFN0YXRlbWVudCB7Citw
dWJsaWM6CisgICAgRmFsbHRocm91Z2goTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQorICAgICAgICA6
IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkZhbGx0aHJvdWdoKCkgPSBkZWZhdWx0OworCisgICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRo
cm91Z2gmKSA9IGRlbGV0ZTsKKyAgICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1
bHQ7CisKKyAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKK3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0Zh
bGx0aHJvdWdoKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MWZiMTNmZWNhNWIyNDQ4YzQzNDFiOGU3MzcwZDVmZGRiMTE4NWM5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRl
cmFsLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMRmxvYXRMaXRlcmFsVHlwZS5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgRmxvYXRMaXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAg
IEZsb2F0TGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAg
ICA6IEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuKG9yaWdpbikpCisgICAgICAgICwgbV90eXBlKFdU
Rk1vdmUob3JpZ2luKSwgdmFsdWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgRmxv
YXRMaXRlcmFsKGNvbnN0IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEZsb2F0TGl0ZXJh
bChGbG9hdExpdGVyYWwmJikgPSBkZWZhdWx0OworCisgICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRv
cj0oY29uc3QgRmxvYXRMaXRlcmFsJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsJiBvcGVy
YXRvcj0oRmxvYXRMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgRmxvYXRMaXRlcmFsIHJlc3VsdChMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBt
X3ZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCkpCisgICAg
ICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUo
KS0+Y2xvbmUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEZsb2F0TGl0ZXJhbFR5cGUgbV90eXBlOworICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihGbG9hdExpdGVyYWwsIGlzRmxvYXRMaXRlcmFsKCkpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGYzMGJiNzMxNDAz
OWZlNzU2N2FjZGI3MTgzODNmMzEyOTJmODhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworRmxvYXRMaXRlcmFsVHlwZTo6
RmxvYXRMaXRlcmFsVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAg
IDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1fcHJlZmVycmVkVHlwZShtYWtlVW5pcXVlUmVmPFR5
cGVSZWZlcmVuY2U+KFdURk1vdmUob3JpZ2luKSwgU3RyaW5nKCJmbG9hdCIsIFN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpLCBUeXBlQXJndW1lbnRzKCkpKQoreworfQorCitGbG9hdExpdGVy
YWxUeXBlOjp+RmxvYXRMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZGY0MTc5MGNhNWMxOGNmYTgyYjkxM2JlMmI5ZDJjNDYyNjNlZjIyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RmxvYXRMaXRlcmFsVHlwZS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVU
eXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUeXBlUmVmZXJlbmNlOworCitjbGFzcyBGbG9hdExp
dGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK3B1YmxpYzoKKyAgICBGbG9hdExp
dGVyYWxUeXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgZmxvYXQgdmFsdWUpOworCisgICAgdmly
dHVhbCB+RmxvYXRMaXRlcmFsVHlwZSgpOworCisgICAgRmxvYXRMaXRlcmFsVHlwZShjb25zdCBG
bG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsVHlwZShGbG9hdExp
dGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9y
PShjb25zdCBGbG9hdExpdGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsVHlw
ZSYgb3BlcmF0b3I9KEZsb2F0TGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBp
c0Zsb2F0TGl0ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlw
ZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSk7IH0KKworICAgIGJvb2wgY2FuUmVzb2x2ZShj
b25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3Qo
Y29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBmbG9h
dCBtX3ZhbHVlOworICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJj
dWxhciBkZXBlbmRlbmN5IGJldHdlZW4KKyAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0
ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhw
cmVzc2lvbgorICAgIFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfUkVTT0xWQUJMRV9UWVBFKEZsb2F0TGl0ZXJhbFR5cGUsIGlzRmxvYXRMaXRlcmFs
VHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTNlZGM5MmRmN2I1MjQ2
NzhjYjhhODEzYjM1ZGM2NDcxZGY0NmQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCkBAIC0wLDAgKzEsODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworY2xhc3MgRm9yTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IEZvckxvb3AoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIE9w
dGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBjb25kaXRpb24sIE9wdGlvbmFsPFVuaXF1
ZVJlZjxFeHByZXNzaW9uPj4mJiBpbmNyZW1lbnQsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9k
eSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1faW5p
dGlhbGl6YXRpb24oV1RGTW92ZShpbml0aWFsaXphdGlvbikpCisgICAgICAgICwgbV9jb25kaXRp
b24oV1RGTW92ZShjb25kaXRpb24pKQorICAgICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5j
cmVtZW50KSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+Rm9yTG9vcCgpCisgICAgeworICAgIH0KKworICAgIEZvckxvb3AoY29u
c3QgRm9yTG9vcCYpID0gZGVsZXRlOworICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1bHQ7
CisKKyAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIFZhcmlhbnQ8VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsg
fQorICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uID8gJnN0
YXRpY19jYXN0PEV4cHJlc3Npb24mPigqbV9jb25kaXRpb24pIDogbnVsbHB0cjsgfQorICAgIEV4
cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJuIG1faW5jcmVtZW50ID8gJnN0YXRpY19jYXN0
PEV4cHJlc3Npb24mPigqbV9pbmNyZW1lbnQpIDogbnVsbHB0cjsgfQorICAgIFN0YXRlbWVudCYg
Ym9keSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KKworcHJp
dmF0ZToKKyAgICBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4+IG1faW5pdGlhbGl6YXRpb247CisgICAgT3B0aW9uYWw8VW5pcXVlUmVm
PEV4cHJlc3Npb24+PiBtX2NvbmRpdGlvbjsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVz
c2lvbj4+IG1faW5jcmVtZW50OworICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9TVEFURU1FTlQoRm9yTG9vcCwgaXNGb3JMb29wKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJiMGIwYzRmNjIwN2Y0OTcwODc1
MDMwMmY3OTk0ZWQ1YzdkODg1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3VzaW5n
IEZ1bmN0aW9uQXR0cmlidXRlID0gVmFyaWFudDxOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+
OwordXNpbmcgQXR0cmlidXRlQmxvY2sgPSBWZWN0b3I8RnVuY3Rpb25BdHRyaWJ1dGU+OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MGJiYjgwYzMwYjM1OTE2YWMyYWJjMzg1YjNi
ZDU5NGQzYzY3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSwxMDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5o
IgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNp
bmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGlj
IE5vZGUgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90
IHsKKyAgICAgICAgVmVydGV4LAorICAgICAgICBGcmFnbWVudCwKKyAgICAgICAgQ29tcHV0ZSwK
KyAgICAgICAgLy8gRklYTUU6IEFkZCBhbiBlbnRyeSBwb2ludCB0eXBlIGZvciB0ZXN0aW5nCisg
ICAgfTsKKworICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBB
dHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0ZUJsb2NrLCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4g
ZW50cnlQb2ludFR5cGUsIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBu
YW1lLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFNlbWFudGlj
PiYmIHNlbWFudGljLCBib29sIGlzT3BlcmF0b3IpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fYXR0cmlidXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVC
bG9jaykpCisgICAgICAgICwgbV9lbnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKKyAgICAg
ICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAg
LCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQorICAgICAgICAsIG1faXNPcGVyYXRvcihX
VEZNb3ZlKGlzT3BlcmF0b3IpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5GdW5jdGlv
bkRlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihjb25z
dCBGdW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgRnVuY3Rpb25EZWNsYXJhdGlv
bihGdW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBp
c0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBtX2F0
dHJpYnV0ZUJsb2NrOyB9CisgICAgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRy
eVBvaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlQb2ludFR5cGU7IH0KKyAgICBjb25z
dCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVu
bmFtZWRUeXBlJj4obV90eXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VW5uYW1lZFR5cGUmPihtX3R5cGUpOyB9CisgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgYm9vbCBpc0Nhc3QoKSBjb25zdCB7
IHJldHVybiBtX25hbWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9CisgICAgY29uc3QgVmFyaWFibGVE
ZWNsYXJhdGlvbnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0K
KyAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQorICAgIE9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3Nl
bWFudGljOyB9CisgICAgYm9vbCBpc09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09wZXJh
dG9yOyB9CisKK3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIEF0dHJp
YnV0ZUJsb2NrIG1fYXR0cmlidXRlQmxvY2s7CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+
IG1fZW50cnlQb2ludFR5cGU7CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRlcnM7
CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2VtYW50aWM7CisgICAgYm9vbCBtX2lzT3BlcmF0
b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9GVU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5h
bWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
SExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1
cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1OGI2
YTdmOTg5NjVlMjA2NWMzNDJiZTQ0NzhlNWUwYTZlYTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlv
biA6IHB1YmxpYyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRl
ZmluaXRpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2Nr
JiYgYmxvY2ssIGJvb2wgcmVzdHJpY3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9u
KFdURk1vdmUoZnVuY3Rpb25EZWNsYXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3Zl
KGJsb2NrKSkKKyAgICAgICAgLCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB+RnVuY3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAg
RnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwor
ICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KKyAgICBi
b29sIHJlc3RyaWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0
ZToKKyAgICBCbG9jayBtX2Jsb2NrOworICAgIGJvb2wgbV9yZXN0cmljdGVkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKEZ1bmN0aW9uRGVmaW5pdGlvbiwgaXNGdW5jdGlvbkRlZmlu
aXRpb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjdjZjRi
MzdhZjZkZjBiZDk0ZWEyNzliNDgwYjEzYWJlY2IzMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgSWZTdGF0ZW1lbnQgOiBw
dWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBJZlN0YXRlbWVudChMZXhlcjo6VG9rZW4m
JiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8
U3RhdGVtZW50PiYmIGJvZHksIE9wdGlvbmFsPFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+PiYmIGVsc2VC
b2R5KQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9j
b25kaXRpb25hbChXVEZNb3ZlKGNvbmRpdGlvbmFsKSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92
ZShib2R5KSkKKyAgICAgICAgLCBtX2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIElm
U3RhdGVtZW50KGNvbnN0IElmU3RhdGVtZW50JikgPSBkZWxldGU7CisgICAgSWZTdGF0ZW1lbnQo
SWZTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9u
YWwoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9jb25kaXRpb25hbCk7IH0K
KyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPiht
X2JvZHkpOyB9CisgICAgU3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkg
PyAmc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4oKm1fZWxzZUJvZHkpIDogbnVsbHB0cjsgfQorCitw
cml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworICAgIFVu
aXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8U3RhdGVt
ZW50Pj4gbV9lbHNlQm9keTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoSWZTdGF0ZW1lbnQsIGlzSWZT
dGF0ZW1lbnQoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiODk3NzQwZjNmMmZkZjRjM2RjYzZiZTg2ZWYzYTBjMmQ3YTQ4MjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRl
eEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiBpbmRleCkKKyAgICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RG
TW92ZShvcmlnaW4pLCBXVEZNb3ZlKGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShp
bmRleCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0g
ZGVmYXVsdDsKKworICAgIEluZGV4RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKKyAgICBJbmRleEV4cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKKworICAgIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisKKyAgICBTdHJpbmcgZ2V0RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoIm9wZXJhdG9yW10iLCBTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc2V0RnVuY3Rpb25OYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmcoIm9wZXJhdG9yJltd
IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgfQorCisgICAgU3RyaW5nIGFu
ZEZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
aW5nKCJvcGVyYXRvcltdPSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0K
KworICAgIEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEV4cHJlc3Npb24mPihtX2luZGV4KTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX2luZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW5kZXhFeHByZXNzaW9uLCBp
c0luZGV4RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2Y2ODVhNTI1MGQ1ODdiYzJjNzY4ZjA1ZGVmNjM4NzE3NTFlMGRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2ludDY0X3QgSW50
ZWdlckxpdGVyYWw6OnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV90eXBlLnJlc29sdmVkVHlwZSgpKTsKKyAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNh
c3Q8VHlwZVJlZmVyZW5jZT4oKm1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgQVNTRVJUKHR5
cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOworICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFs
dWVGcm9tSW50ZWdlcigpKG1fdmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5YWVi
ZGNkYmVhOGNiMjgzYzIxZWUyYTFmN2M0ZGQ5YjhkNjNmZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFs
LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAg
ICBJbnRlZ2VyTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGludCB2YWx1ZSkKKyAgICAg
ICAgOiBFeHByZXNzaW9uKExleGVyOjpUb2tlbihvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZShX
VEZNb3ZlKG9yaWdpbiksIHZhbHVlKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAg
SW50ZWdlckxpdGVyYWwoY29uc3QgSW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBJbnRl
Z2VyTGl0ZXJhbChJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRlZ2VyTGl0
ZXJhbCYgb3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7CisgICAgSW50
ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBib29sIGlzSW50ZWdlckxp
dGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBJbnRlZ2VyTGl0
ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQo
TGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgbV92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1bHQubV90
eXBlLnJlc29sdmVkVHlwZSgpKQorICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKHJl
c3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCktPmNsb25lKCkpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUgbV90eXBlOworICAgIGludCBtX3Zh
bHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVy
YWwoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MjBjZGYxNzBjNGUxYTJiZjk4NGM1M2FkNjIyNjQ4ZTkxNmMxNmJkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SW50ZWdlckxpdGVyYWxUeXBlLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK0ludGVnZXJMaXRlcmFsVHlwZTo6SW50ZWdlckxpdGVyYWxUeXBlKExleGVyOjpUb2tlbiYm
IG9yaWdpbiwgaW50IHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAsIG1fcHJlZmVy
cmVkVHlwZShtYWtlVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+KFdURk1vdmUob3JpZ2luKSwgU3Ry
aW5nKCJpbnQiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgVHlwZUFyZ3VtZW50cygp
KSkKK3sKK30KKworSW50ZWdlckxpdGVyYWxUeXBlOjp+SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBk
ZWZhdWx0OworCitib29sIEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBl
JiB0eXBlKSBjb25zdAoreworICAgIGlmICghaXM8TmFtZWRUeXBlPih0eXBlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PE5hbWVkVHlwZT4o
dHlwZSk7CisgICAgaWYgKCFpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBk
b3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSk7CisgICAgaWYgKCFuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbmF0aXZlVHlwZURlY2xhcmF0aW9uLmNhblJlcHJlc2VudEludGVnZXIoKShtX3ZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25l
ZCBJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1
bm5hbWVkVHlwZSkgY29uc3QKK3sKKyAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgVHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjE4Njc5YTc4MTY0ZWQ1MTBmNTFkYzljMjEwMjdlMmNmNmUxNzhhNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJM
aXRlcmFsVHlwZS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBUeXBlUmVmZXJlbmNlOworCitjbGFzcyBJbnRlZ2VyTGl0ZXJh
bFR5cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworcHVibGljOgorICAgIEludGVnZXJMaXRl
cmFsVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGludCB2YWx1ZSk7CisKKyAgICB2aXJ0dWFs
IH5JbnRlZ2VyTGl0ZXJhbFR5cGUoKTsKKworICAgIEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBJ
bnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUoSW50
ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIEludGVnZXJMaXRlcmFsVHlwZSYg
b3BlcmF0b3I9KGNvbnN0IEludGVnZXJMaXRlcmFsVHlwZSYpID0gZGVsZXRlOworICAgIEludGVn
ZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KEludGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7
CisKKyAgICBib29sIGlzSW50ZWdlckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFR5cGVSZWZlcmVuY2UmPihtX3ByZWZlcnJlZFR5cGUpOyB9CisKKyAgICBi
b29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVk
IGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisKK3By
aXZhdGU6CisgICAgaW50IG1fdmFsdWU7CisgICAgLy8gVGhpcyBpcyBhIHVuaXF1ZV9wdHIgdG8g
cmVzb2x2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbgorICAgIC8vIENvbnN0YW50RXhw
cmVzc2lvbiAtPiBMaXRlcmFsVHlwZSAtPiBUeXBlUmVmZXJlbmNlIC0+IFR5cGVBcmd1bWVudHMg
LT4gQ29uc3RhbnRFeHByZXNzaW9uCisgICAgVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+IG1fcHJl
ZmVycmVkVHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9SRVNPTFZBQkxFX1RZUEUoSW50ZWdlckxpdGVyYWxUeXBl
LCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhw
cmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMzVlODhhMWIwZWZjMTY4N2Q0YWU3ZWI1YTI1ZjlkMzRi
YzBhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbiA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAg
ICAgICAgQW5kLAorICAgICAgICBPcgorICAgIH07CisKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihM
ZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFR5cGUgdHlwZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYg
bGVmdCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcmlnaHQpCisgICAgICAgIDogRXhwcmVzc2lv
bihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9s
ZWZ0KFdURk1vdmUobGVmdCkpCisgICAgICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TG9naWNhbEV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7
CisKKyAgICBMb2dpY2FsRXhwcmVzc2lvbihjb25zdCBMb2dpY2FsRXhwcmVzc2lvbiYpID0gZGVs
ZXRlOworICAgIExvZ2ljYWxFeHByZXNzaW9uKExvZ2ljYWxFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9v
bCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PihtX2xlZnQpOyB9CisgICAgRXhwcmVzc2lvbiYgcmlnaHQoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFeHByZXNzaW9uJj4obV9yaWdodCk7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsK
KyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0OworICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX3JpZ2h0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbEV4cHJlc3Npb24sIGlz
TG9naWNhbEV4cHJlc3Npb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4
cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTk3MmJlNmIyZDZhNGIwNzVmMTViMmEyOTYxNGYxNGM4
NDNhNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTG9naWNhbE5vdEV4cHJlc3Npb24gOiBw
dWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTGV4
ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBvcGVyYW5kKQorICAg
ICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fb3BlcmFuZChX
VEZNb3ZlKG9wZXJhbmQpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Mb2dpY2FsTm90
RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0
IExvZ2ljYWxOb3RFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgTG9naWNhbE5vdEV4cHJlc3Np
b24oTG9naWNhbE5vdEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0xvZ2lj
YWxOb3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
RXhwcmVzc2lvbiYgb3BlcmFuZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPiht
X29wZXJhbmQpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3Bl
cmFuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKExvZ2ljYWxOb3RFeHByZXNzaW9uLCBpc0xvZ2lj
YWxOb3RFeHByZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDE5NTMxZGY2MzBlYTRjZmQ1
ZDNiZWM0NDVlMDZkMmNhOGVhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldI
TFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6
CisgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGxWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdU
Rk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3ZlKGxWYWx1ZSkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfk1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSA9
IGRlZmF1bHQ7CisKKyAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9sVmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IG1fbFZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisK
K30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkp
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDhhNDQ0MDFlYTZiMTQ5MmM1MWQ0ZTA5MGE2ZDRiMDllNTRhZDE1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFr
ZVBvaW50ZXJFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIE1ha2VQb2ludGVyRXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9u
IHsKK3B1YmxpYzoKKyAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsVmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lv
bihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9sVmFsdWUoV1RGTW92ZShsVmFsdWUpKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5NYWtlUG9pbnRlckV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CisKKyAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFrZVBvaW50ZXJFeHBy
ZXNzaW9uJikgPSBkZWxldGU7CisgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKE1ha2VQb2ludGVy
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTWFrZVBvaW50ZXJFeHByZXNz
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYg
bFZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbFZhbHVlKTsgfQor
Citwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xWYWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9FWFBSRVNTSU9OKE1ha2VQb2ludGVyRXhwcmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Np
b24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYTdjNWUzODRiODM4
ODNiNjg4YWI3ZTJlYTAwMDJkZTBhZmIzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYW1lZFR5cGUuaApAQCAtMCwwICsx
LDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1
ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBOYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAgTmFtZWRUeXBl
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSkKKyAgICAgICAgOiBtX29yaWdp
bihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgfk5hbWVkVHlwZSgpID0gZGVmYXVsdDsKKworICAgIE5h
bWVkVHlwZShjb25zdCBOYW1lZFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBOYW1lZFR5cGUoTmFtZWRU
eXBlJiYpID0gZGVmYXVsdDsKKworICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25h
bWU7IH0KKworICAgIGJvb2wgaXNOYW1lZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5p
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZl
VHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwg
Y29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB2aXJ0
dWFsIFR5cGUmIHVuaWZ5Tm9kZSgpIHsgcmV0dXJuICp0aGlzOyB9CisKK3ByaXZhdGU6CisgICAg
TGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFN0cmluZyBtX25hbWU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9OQU1FRF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkg
XAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1l
ZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKE5hbWVk
VHlwZSwgaXNOYW1lZFR5cGUoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgxYTM4YzI4Zjg0YjM5MTNhNDk1NTZh
MzY1YTNkZDk3OThhZGEzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaApAQCAt
MCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2Ns
YXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwdWJsaWMgRnVuY3Rpb25EZWNsYXJhdGlv
biB7CitwdWJsaWM6CisgICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xh
cmF0aW9uJiYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgYm9vbCByZXN0cmljdGVkKQorICAgICAgICA6
IEZ1bmN0aW9uRGVjbGFyYXRpb24oV1RGTW92ZShmdW5jdGlvbkRlY2xhcmF0aW9uKSkKKyAgICAg
ICAgLCBtX3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB+TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIE5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYpID0gZGVs
ZXRlOworICAgIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJvb2wgcmVzdHJpY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RlZDsgfQorCitwcml2YXRlOgorICAgIGJvb2wg
bV9yZXN0cmljdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKE5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYzUw
NGIxOGQzZmY4ZGRjYTE3YjY5ZDhlMzU3Y2JjYjhiYjY3NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTmF0aXZlVHlwZURlY2xh
cmF0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgTmF0aXZlVHlwZURlY2xh
cmF0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgVHlwZUFyZ3VtZW50
cyYmIHR5cGVBcmd1bWVudHMpCisgICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwg
V1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0eXBlQXJn
dW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TmF0aXZlVHlwZURlY2xhcmF0
aW9uKCkgPSBkZWZhdWx0OworCisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOworICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihO
YXRpdmVUeXBlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc05hdGl2ZVR5
cGVEZWNsYXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVu
dHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KKworICAgIGJvb2wgaXNJbnQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW50OyB9CisgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJu
IG1faXNOdW1iZXI7IH0KKyAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lz
RmxvYXRpbmc7IH0KKyAgICBib29sIGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZlY3Rv
cjsgfQorICAgIGJvb2wgaXNNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX2lzTWF0cml4OyB9Cisg
ICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzVGV4dHVyZTsgfQorICAgIGJv
b2wgaXNTaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2lnbmVkOyB9CisgICAgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGludCk+JiBjYW5SZXByZXNlbnRJbnRlZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5SZXByZXNlbnRJbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
KHVuc2lnbmVkKT4mIGNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGZsb2F0KT4mIGNhblJlcHJlc2VudEZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9jYW5S
ZXByZXNlbnRGbG9hdDsgfQorICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90
KT4mIHN1Y2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yOyB9CisgICAgY29uc3Qg
c3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+JiBmb3JtYXRWYWx1ZUZyb21JbnRlZ2VyKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXRWYWx1ZUZyb21JbnRlZ2VyOyB9CisgICAgY29uc3Qgc3RkOjpm
dW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4mIGZvcm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyOyB9Cisg
ICAgdm9pZCBpdGVyYXRlQWxsVmFsdWVzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90
KT4mIGNhbGxiYWNrKSB7IG1faXRlcmF0ZUFsbFZhbHVlcyhjYWxsYmFjayk7IH0KKworICAgIHZv
aWQgc2V0SXNJbnQoKSB7IG1faXNJbnQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJc051bWJlcigp
IHsgbV9pc051bWJlciA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzRmxvYXRpbmcoKSB7IG1faXNG
bG9hdGluZyA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzVmVjdG9yKCkgeyBtX2lzVmVjdG9yID0g
dHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNNYXRyaXgoKSB7IG1faXNNYXRyaXggPSB0cnVlOyB9Cisg
ICAgdm9pZCBzZXRJc1RleHR1cmUoKSB7IG1faXNUZXh0dXJlID0gdHJ1ZTsgfQorICAgIHZvaWQg
c2V0SXNTaWduZWQoKSB7IG1faXNTaWduZWQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRDYW5SZXBy
ZXNlbnRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiYmIGNhblJlcHJlc2VudCkgeyBt
X2NhblJlcHJlc2VudEludGVnZXIgPSBXVEZNb3ZlKGNhblJlcHJlc2VudCk7IH0KKyAgICB2b2lk
IHNldENhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWdu
ZWQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlciA9IFdU
Rk1vdmUoY2FuUmVwcmVzZW50KTsgfQorICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50RmxvYXQoc3Rk
OjpmdW5jdGlvbjxib29sKGZsb2F0KT4mJiBjYW5SZXByZXNlbnQpIHsgbV9jYW5SZXByZXNlbnRG
bG9hdCA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQorICAgIHZvaWQgc2V0U3VjY2Vzc29yKHN0
ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4mJiBzdWNjZXNzb3IpIHsgbV9zdWNjZXNzb3Ig
PSBXVEZNb3ZlKHN1Y2Nlc3Nvcik7IH0KKyAgICB2b2lkIHNldEZvcm1hdFZhbHVlRnJvbUludGVn
ZXIoc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+JiYgZm9ybWF0VmFsdWUpIHsgbV9mb3JtYXRW
YWx1ZUZyb21JbnRlZ2VyID0gV1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KKyAgICB2b2lkIHNldEZv
cm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWdu
ZWQpPiYmIGZvcm1hdFZhbHVlKSB7IG1fZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyID0g
V1RGTW92ZShmb3JtYXRWYWx1ZSk7IH0KKyAgICB2b2lkIHNldEl0ZXJhdGVBbGxWYWx1ZXMoc3Rk
OjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4mJiBp
dGVyYXRlQWxsVmFsdWVzKSB7IG1faXRlcmF0ZUFsbFZhbHVlcyA9IFdURk1vdmUoaXRlcmF0ZUFs
bFZhbHVlcyk7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFR5cGVBcmd1
bWVudHMgbV90eXBlQXJndW1lbnRzOworICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiBtX2Nh
blJlcHJlc2VudEludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4gbV9j
YW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxib29sKGZsb2F0
KT4gbV9jYW5SZXByZXNlbnRGbG9hdDsKKyAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QoaW50NjRf
dCk+IG1fc3VjY2Vzc29yOworICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQpPiBtX2Zvcm1h
dFZhbHVlRnJvbUludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KHVuc2lnbmVkKT4g
bV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4gbV9pdGVyYXRlQWxsVmFsdWVz
OworICAgIGJvb2wgbV9pc0ludCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTnVtYmVyIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNGbG9hdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVmVj
dG9yIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNYXRyaXggeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc1RleHR1cmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NpZ25lZCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfTkFNRURfVFlQRShOYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlzTmF0aXZlVHlwZURl
Y2xhcmF0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MjliNzgxODAwNGU5OGZk
ZjkxZDUwZGNiYmQ2Njc3MDVmYTU4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgTm9kZSB7CitwdWJsaWM6CisgICAgTm9kZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1
YWwgfk5vZGUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBOb2RlKGNvbnN0IE5vZGUmKSA9
IGRlZmF1bHQ7CisgICAgTm9kZShOb2RlJiYpID0gZGVmYXVsdDsKKworICAgIE5vZGUmIG9wZXJh
dG9yPShjb25zdCBOb2RlJikgPSBkZWZhdWx0OworICAgIE5vZGUmIG9wZXJhdG9yPShOb2RlJiYp
ID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWIwMTUwMzk0ZWEx
NzFlNmJlYzY3OTIxMjlmYzk0ZTg2ZGMxNTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaApAQCAtMCww
ICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5o
IgorI2luY2x1ZGUgIldITFNMTnVsbExpdGVyYWxUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bGxM
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIE51bGxMaXRlcmFsKExl
eGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TnVsbExpdGVyYWwoKSA9IGRlZmF1bHQ7
CisKKyAgICBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIE51
bGxMaXRlcmFsKE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIE51bGxMaXRlcmFsJiBv
cGVyYXRvcj0oY29uc3QgTnVsbExpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBOdWxsTGl0ZXJhbCYg
b3BlcmF0b3I9KE51bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIE51bGxMaXRlcmFsVHlw
ZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBpc051bGxMaXRlcmFsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgTnVsbExpdGVyYWwgY2xvbmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBOdWxsTGl0ZXJhbChMZXhlcjo6
VG9rZW4ob3JpZ2luKCkpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBl
KCkpCisgICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNv
bHZlZFR5cGUoKS0+Y2xvbmUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitw
cml2YXRlOgorICAgIE51bGxMaXRlcmFsVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihOdWxsTGl0ZXJhbCwgaXNOdWxsTGl0ZXJhbCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxs
TGl0ZXJhbFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZDA5MDVhNWJiOTAyZDFkMjgxNjFiODFhZmRh
NjRjZTBjY2IzODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuY3BwCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xOdWxsTGl0
ZXJhbFR5cGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlZmVy
ZW5jZVR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgewor
CituYW1lc3BhY2UgQVNUIHsKKworYm9vbCBOdWxsTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29u
c3QgVHlwZSYgdHlwZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPFVubmFtZWRUeXBlPih0eXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHVubmFtZWRUeXBlID0gZG93bmNhc3Q8
VW5uYW1lZFR5cGU+KHR5cGUpOworICAgIGlmICghaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5
cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2ln
bmVkIE51bGxMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdAoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjU2OGZh
NGM0MDAyNzc3ODc2OTgyNWNlMTc0ZDJmNjA3NWMwNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBl
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgTnVsbExpdGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK3B1YmxpYzoK
KyAgICBOdWxsTGl0ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIH5OdWxsTGl0
ZXJhbFR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBOdWxsTGl0ZXJhbFR5cGUoY29uc3QgTnVsbExp
dGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgTnVsbExpdGVyYWxUeXBlKE51bGxMaXRlcmFsVHlw
ZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShjb25zdCBO
dWxsTGl0ZXJhbFR5cGUmKSA9IGRlbGV0ZTsKKyAgICBOdWxsTGl0ZXJhbFR5cGUmIG9wZXJhdG9y
PShOdWxsTGl0ZXJhbFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc051bGxMaXRlcmFs
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJvb2wgY2FuUmVz
b2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lv
bkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9SRVNPTFZBQkxFX1RZUEUoTnVsbExpdGVyYWxUeXBlLCBpc051bGxMaXRlcmFsVHlw
ZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhlMjk4ZmMwZDJmMmM0NGZkOTBjY2I0NDM4Mzc2ODdhNWU3
MDFmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUgOiBwdWJsaWMgQmFzZUZ1bmN0aW9uQXR0cmlidXRlIHsK
K3B1YmxpYzoKKyAgICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBkZXB0aCkK
KyAgICAgICAgOiBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fd2lkdGgod2lkdGgpCisgICAgICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICAgICAs
IG1fZGVwdGgoZGVwdGgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk51bVRocmVhZHNG
dW5jdGlvbkF0dHJpYnV0ZSgpID0gZGVmYXVsdDsKKworICAgIE51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZShjb25zdCBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKSA9IGRlbGV0ZTsKKyAg
ICBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
JiYpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93
aWR0aDsgfQorICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9
CisgICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoOyB9CisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbV93aWR0aDsKKyAgICB1bnNpZ25lZCBtX2hlaWdodDsKKyAgICB1
bnNpZ25lZCBtX2RlcHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFBvaW50ZXJUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNjkyZDBhYjdkNTBjOGY0YWMw
OGJiMDM2OTFiZWIzYjY5ZWQxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBQb2ludGVyVHlwZSA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlIHsKK3B1
YmxpYzoKKyAgICBQb2ludGVyVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIEFkZHJlc3NTcGFj
ZSBhZGRyZXNzU3BhY2UsIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gZWxlbWVudFR5cGUpCisgICAg
ICAgIDogUmVmZXJlbmNlVHlwZShXVEZNb3ZlKG9yaWdpbiksIGFkZHJlc3NTcGFjZSwgV1RGTW92
ZShlbGVtZW50VHlwZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflBvaW50ZXJUeXBl
KCkgPSBkZWZhdWx0OworCisgICAgUG9pbnRlclR5cGUoY29uc3QgUG9pbnRlclR5cGUmKSA9IGRl
bGV0ZTsKKyAgICBQb2ludGVyVHlwZShQb2ludGVyVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBi
b29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3Jp
Z2luKCkpLCBhZGRyZXNzU3BhY2UoKSwgZWxlbWVudFR5cGUoKS5jbG9uZSgpKTsKKyAgICB9CisK
K3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJU
eXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMjg3NTVlZGIyYmI5YjkwZGVlMGFlNzYyYTM4MzFkMGEwM2FkZWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw5MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBiYXNlKQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYmFzZShX
VEZNb3ZlKGJhc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24o
Y29uc3QgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uKFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisK
KyAgICBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0RnVuY3Rpb25OYW1lKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHNldEZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBhbmRGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CisKKyAgICBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBv
c3NpYmxlR2V0T3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9wb3NzaWJsZUdldE92ZXJsb2FkczsgfQor
ICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAx
PiYgcG9zc2libGVTZXRPdmVybG9hZHMoKSB7IHJldHVybiBtX3Bvc3NpYmxlU2V0T3ZlcmxvYWRz
OyB9CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlv
bj4sIDE+JiBwb3NzaWJsZUFuZE92ZXJsb2FkcygpIHsgcmV0dXJuIG1fcG9zc2libGVBbmRPdmVy
bG9hZHM7IH0KKworICAgIHZvaWQgc2V0UG9zc2libGVHZXRPdmVybG9hZHMoY29uc3QgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBvdmVybG9h
ZHMpCisgICAgeworICAgICAgICBtX3Bvc3NpYmxlR2V0T3ZlcmxvYWRzID0gb3ZlcmxvYWRzOwor
ICAgIH0KKyAgICB2b2lkIHNldFBvc3NpYmxlU2V0T3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQor
ICAgIHsKKyAgICAgICAgbV9wb3NzaWJsZVNldE92ZXJsb2FkcyA9IG92ZXJsb2FkczsKKyAgICB9
CisgICAgdm9pZCBzZXRQb3NzaWJsZUFuZE92ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKKyAgICB7
CisgICAgICAgIG1fcG9zc2libGVBbmRPdmVybG9hZHMgPSBvdmVybG9hZHM7CisgICAgfQorCisg
ICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPiht
X2Jhc2UpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsK
KyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwg
MT4gbV9wb3NzaWJsZUdldE92ZXJsb2FkczsKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4gbV9wb3NzaWJsZVNldE92ZXJsb2FkczsKKyAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4g
bV9wb3NzaWJsZUFuZE92ZXJsb2FkczsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xR
dWFsaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFF1YWxpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NWQ2ZGQxODI5N2QzMTlkOGI1YzYyY2RiMTIwYmQ0
ZTA5NTU2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xRdWFsaWZpZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworZW51bSBjbGFzcyBRdWFs
aWZpZXIgOiB1aW50OF90IHsKKyAgICBOb2ludGVycG9sYXRpb24sCisgICAgTm9wZXJzcGVjdGl2
ZSwKKyAgICBVbmlmb3JtLAorICAgIENlbnRyb2lkLAorICAgIFNhbXBsZQorfTsKKwordXNpbmcg
UXVhbGlmaWVycyA9IFZlY3RvcjxRdWFsaWZpZXI+OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyOWIyOTM5M2VhZTIyNGFhMmQ2NzRlYzI1YTgxNjU5MDZhMmU2
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKQEAgLTAsMCArMSwxMjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVk
ZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKKy8qCisgKiAgMS4gRXZhbHVhdGUgbV9sVmFsdWUKKyAqICAyLiBBc3NpZ24gdGhl
IHJlc3VsdCB0byBtX29sZFZhbHVlCisgKiAgMy4gRXZhbHVhdGUgbV9uZXdWYWx1ZUV4cHJlc3Np
b24KKyAqICA0LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX25ld1ZhbHVlCisgKiAgNS4gQXNzaWdu
IHRoZSByZXN1bHQgdG8gbV9sVmFsdWUKKyAqICA2LiBFdmFsdWF0ZSBtX3Jlc3VsdEV4cHJlc3Np
b24KKyAqICA3LiBSZXR1cm4gdGhlIHJlc3VsdAorICovCitjbGFzcyBSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBVbmlx
dWVSZWY8UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4gY3JlYXRlKExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+IGxWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KFdURk1vdmUob3JpZ2lu
KSwgV1RGTW92ZShsVmFsdWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bihjb25zdCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbihSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgc2V0TmV3VmFsdWVFeHByZXNzaW9uKFVuaXF1ZVJlZjxFeHByZXNzaW9u
PiYmIG5ld1ZhbHVlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIG1fbmV3VmFsdWVFeHByZXNz
aW9uID0gV1RGTW92ZShuZXdWYWx1ZUV4cHJlc3Npb24pOworICAgIH0KKworICAgIHZvaWQgc2V0
UmVzdWx0RXhwcmVzc2lvbihVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiByZXN1bHRFeHByZXNzaW9u
KQorICAgIHsKKyAgICAgICAgbV9yZXN1bHRFeHByZXNzaW9uID0gV1RGTW92ZShyZXN1bHRFeHBy
ZXNzaW9uKTsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+IG9sZFZh
cmlhYmxlUmVmZXJlbmNlKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBk
b24ndCBnZXQgdXNlLWFmdGVyLWZyZWVzIGlzIHRoZSBmYWN0IHRoYXQgZXZlcnkgaW5zdGFuY2Ug
b2YgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJl
ZmVyZW5jZTo6d3JhcChtX29sZFZhbHVlKSk7CisgICAgfQorCisgICAgVW5pcXVlUmVmPFZhcmlh
YmxlUmVmZXJlbmNlPiBuZXdWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgeworICAgICAgICAvLyBU
aGUgb25seSByZWFzb24gd2UgZG9uJ3QgZ2V0IHVzZS1hZnRlci1mcmVlcyBpcyB0aGUgZmFjdCB0
aGF0IGV2ZXJ5IGluc3RhbmNlIG9mIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gaXMgYWxsb2Nh
dGVkIG9uIHRoZSBoZWFwLgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxWYXJpYWJsZVJl
ZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOworICAgIH0KKwor
ICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbFZhbHVlKTsgfQorICAgIFZhcmlhYmxlRGVjbGFyYXRpb24m
IG9sZFZhbHVlKCkgeyByZXR1cm4gbV9vbGRWYWx1ZTsgfQorICAgIFZhcmlhYmxlRGVjbGFyYXRp
b24mIG5ld1ZhbHVlKCkgeyByZXR1cm4gbV9uZXdWYWx1ZTsgfQorICAgIEV4cHJlc3Npb24qIG5l
d1ZhbHVlRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fbmV3VmFsdWVFeHByZXNzaW9uID8gJnN0YXRp
Y19jYXN0PEV4cHJlc3Npb24mPigqbV9uZXdWYWx1ZUV4cHJlc3Npb24pIDogbnVsbHB0cjsgfQor
ICAgIEV4cHJlc3Npb24qIHJlc3VsdEV4cHJlc3Npb24oKSB7IHJldHVybiBtX3Jlc3VsdEV4cHJl
c3Npb24gPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCptX3Jlc3VsdEV4cHJlc3Npb24pIDog
bnVsbHB0cjsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFy
Z3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gV1RGOjptYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisK
KyAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IGxWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKExleGVyOjpU
b2tlbihvcmlnaW4pKQorICAgICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICAg
ICAgLCBtX29sZFZhbHVlKExleGVyOjpUb2tlbihvcmlnaW4pLCBRdWFsaWZpZXJzKCksIFdURjo6
bnVsbG9wdCwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgICAgICAs
IG1fbmV3VmFsdWUoV1RGTW92ZShvcmlnaW4pLCBRdWFsaWZpZXJzKCksIFdURjo6bnVsbG9wdCwg
U3RyaW5nKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgIHsKKyAgICB9CisKKyAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sVmFsdWU7CisgICAgVmFyaWFibGVEZWNsYXJhdGlv
biBtX29sZFZhbHVlOworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24gbV9uZXdWYWx1ZTsKKyAgICBP
cHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fbmV3VmFsdWVFeHByZXNzaW9uOworICAg
IE9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9yZXN1bHRFeHByZXNzaW9uOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0Yzg0YmNiNGMzOTVlZDM3NjZjMzdiYzcxYmMwNWJlZWQyNzlhZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWZlcmVuY2VUeXBlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBSZWZlcmVuY2VUeXBl
IDogcHVibGljIFVubmFtZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFkZHJlc3NT
cGFjZSA6IHVpbnQ4X3QgeworICAgICAgICBDb25zdGFudCwKKyAgICAgICAgRGV2aWNlLAorICAg
ICAgICBUaHJlYWRncm91cCwKKyAgICAgICAgVGhyZWFkCisgICAgfTsKKworICAgIFJlZmVyZW5j
ZVR5cGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlLCBV
bmlxdWVSZWY8VW5uYW1lZFR5cGU+JiYgZWxlbWVudFR5cGUpCisgICAgICAgIDogVW5uYW1lZFR5
cGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fYWRkcmVzc1NwYWNlKGFkZHJlc3NTcGFj
ZSkKKyAgICAgICAgLCBtX2VsZW1lbnRUeXBlKFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWZlcmVuY2VUeXBlKCkgPSBkZWZhdWx0OworCisgICAg
UmVmZXJlbmNlVHlwZShjb25zdCBSZWZlcmVuY2VUeXBlJikgPSBkZWxldGU7CisgICAgUmVmZXJl
bmNlVHlwZShSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNSZWZlcmVu
Y2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFkZHJlc3NT
cGFjZSBhZGRyZXNzU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsgfQorICAg
IGNvbnN0IFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFVubmFtZWRUeXBlJj4obV9lbGVtZW50VHlwZSk7IH0KKyAgICBVbm5hbWVkVHlw
ZSYgZWxlbWVudFR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fZWxl
bWVudFR5cGUpOyB9CisKK3ByaXZhdGU6CisgICAgQWRkcmVzc1NwYWNlIG1fYWRkcmVzc1NwYWNl
OworICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV9lbGVtZW50VHlwZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9V
Tk5BTUVEX1RZUEUoUmVmZXJlbmNlVHlwZSwgaXNSZWZlcmVuY2VUeXBlKCkpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UmVzb2x2YWJsZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc29sdmFibGVUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3MWJkNGNjNGI4NDJmZGZlZWUx
MjQ5YTM2NzM4NDE3M2RkZDY0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKKyNp
bmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlc29sdmFibGVUeXBlIDogcHVibGljIFR5
cGUgeworcHVibGljOgorICAgIFJlc29sdmFibGVUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmly
dHVhbCB+UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBSZXNvbHZhYmxlVHlwZShj
b25zdCBSZXNvbHZhYmxlVHlwZSYpID0gZGVsZXRlOworICAgIFJlc29sdmFibGVUeXBlKFJlc29s
dmFibGVUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0o
Y29uc3QgUmVzb2x2YWJsZVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBSZXNvbHZhYmxlVHlwZSYgb3Bl
cmF0b3I9KFJlc29sdmFibGVUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNSZXNvbHZh
YmxlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc051bGxMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIGNhblJlc29sdmUoY29uc3Qg
VHlwZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3QgPSAwOworCisgICAgY29uc3QgVW5uYW1lZFR5cGUqIHJl
c29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJnN0YXRpY19jYXN0
PGNvbnN0IFVubmFtZWRUeXBlJj4oKm1fcmVzb2x2ZWRUeXBlKSA6IG51bGxwdHI7IH0KKyAgICBV
bm5hbWVkVHlwZSogcmVzb2x2ZWRUeXBlKCkgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmc3Rh
dGljX2Nhc3Q8VW5uYW1lZFR5cGUmPigqbV9yZXNvbHZlZFR5cGUpIDogbnVsbHB0cjsgfQorCisg
ICAgdm9pZCByZXNvbHZlKFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlKQorICAgIHsKKyAg
ICAgICAgbV9yZXNvbHZlZFR5cGUgPSBXVEZNb3ZlKHR5cGUpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3Jlc29sdmVkVHlwZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX1JFU09MVkFCTEVfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0
ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpU
b1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRl
OyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9UWVBFKFJlc29sdmFibGVUeXBlLCBpc1Jlc29sdmFibGVUeXBlKCkpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDQwOTYw
YzZlM2I0ODcyZDllOTM0NDNmYjg4YzczNThlZDM2Y2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRp
Yy5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgorI2luY2x1ZGUgIldITFNMSW5mZXJUeXBl
cy5oIgorI2luY2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgorI2luY2x1ZGUgIldITFNMUmVmZXJl
bmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitib29s
IFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKSBjb25zdAoreworICAgIHN3
aXRjaCAobV9tb2RlKSB7CisgICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NWaWV3OgorICAg
ICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKSB7CisgICAgICAgICAgICBh
dXRvJiByZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
OworICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgPT0gUmVm
ZXJlbmNlVHlwZTo6QWRkcmVzc1NwYWNlOjpDb25zdGFudCB8fCByZWZlcmVuY2VUeXBlLmFkZHJl
c3NTcGFjZSgpID09IFJlZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOworICAgICAg
ICB9CisgICAgICAgIGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBpZiAoaXM8VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUp
KSB7CisgICAgICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOworICAgICAgICAgICAgaWYgKGlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
KnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKS5pc1RleHR1cmUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Y2FzZSBNb2RlOjpUZXh0dXJlOgorICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1l
ZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFt
ZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3BhY2U6OkNv
bnN0YW50OworICAgICAgICBpZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRU
eXBlKSkgeworICAgICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PFR5cGVS
ZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KCp0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZl
ZFR5cGUoKSkuaXNUZXh0dXJlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGNhc2UgTW9kZTo6QnVmZmVyOgorICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVu
bmFtZWRUeXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3BhY2U6
OkNvbnN0YW50OworICAgICAgICByZXR1cm4gaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Cisg
ICAgY2FzZSBNb2RlOjpTYW1wbGVyOgorICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgaW50cmluc2ljcy5zYW1wbGVyVHlwZSgpKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVzb3VyY2VT
ZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OworfQorCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VT
ZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMDJiZTAyMDdiYzNjODFmZDI5MjliYmIwZTFlNTk4YjMy
Y2RkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBSZXNvdXJjZVNlbWFudGljIDogcHVibGljIEJhc2VTZW1hbnRpYyB7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7CisgICAgICAgIFVub3JkZXJlZEFjY2Vzc1ZpZXcs
CisgICAgICAgIFRleHR1cmUsCisgICAgICAgIEJ1ZmZlciwKKyAgICAgICAgU2FtcGxlcgorICAg
IH07CisKKyAgICBSZXNvdXJjZVNlbWFudGljKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgTW9kZSBt
b2RlLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3BhY2UpCisgICAgICAgIDogQmFzZVNlbWFu
dGljKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX21vZGUobW9kZSkKKyAgICAgICAgLCBt
X2luZGV4KGluZGV4KQorICAgICAgICAsIG1fc3BhY2Uoc3BhY2UpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgflJlc291cmNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBSZXNvdXJj
ZVNlbWFudGljKGNvbnN0IFJlc291cmNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBSZXNvdXJj
ZVNlbWFudGljKFJlc291cmNlU2VtYW50aWMmJikgPSBkZWZhdWx0OworCisgICAgTW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2luZGV4OyB9CisgICAgdW5zaWduZWQgc3BhY2UoKSBjb25zdCB7IHJldHVybiBt
X3NwYWNlOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VTZW1hbnRpYyYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tb2RlID09IG90aGVyLm1fbW9k
ZSAmJiBtX2luZGV4ID09IG90aGVyLm1faW5kZXggJiYgbV9zcGFjZSA9PSBvdGhlci5tX3NwYWNl
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
ICB9CisKKyAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25z
dCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVm
aW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIE1vZGUgbV9tb2RlOwor
ICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9zcGFjZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3
ZWIyNDY4NGYwNDcyMjQ4NTY0NGRhZjQ5YjcyMDc4MzAzY2Y0NWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaApA
QCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgUmV0dXJuIDogcHVibGlj
IFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgUmV0dXJuKExleGVyOjpUb2tlbiYmIG9yaWdpbiwg
T3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIHZhbHVlKQorICAgICAgICA6IFN0YXRl
bWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmV0dXJuKCkgPSBkZWZhdWx0OworCisgICAg
UmV0dXJuKGNvbnN0IFJldHVybiYpID0gZGVsZXRlOworICAgIFJldHVybihSZXR1cm4mJikgPSBk
ZWZhdWx0OworCisgICAgYm9vbCBpc1JldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZSA/ICZzdGF0
aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1fdmFsdWUpIDogbnVsbHB0cjsgfQorCisgICAgRnVuY3Rp
b25EZWZpbml0aW9uKiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICB2b2lk
IHNldEZ1bmN0aW9uKEZ1bmN0aW9uRGVmaW5pdGlvbiogZnVuY3Rpb25EZWZpbml0aW9uKSB7IG1f
ZnVuY3Rpb24gPSBmdW5jdGlvbkRlZmluaXRpb247IH0KKworcHJpdmF0ZToKKyAgICBPcHRpb25h
bDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fdmFsdWU7CisgICAgRnVuY3Rpb25EZWZpbml0aW9u
KiBtX2Z1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChSZXR1cm4sIGlzUmV0dXJuKCkpCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFNlbWFudGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYjgwNmI1YmY5YjE5YmY1MDAyNDMy
MThlNTYzYTNlYmFiMTRlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNlbWFudGljLmgKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMQnVpbHRJblNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKyNp
bmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK3VzaW5nIFNlbWFudGljID0gVmFyaWFudDxCdWlsdEluU2VtYW50aWMsIFJl
c291cmNlU2VtYW50aWMsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgU3RhZ2VJbk91
dFNlbWFudGljPjsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0NzcyZTcxYmVkM2Q3ZmZjZDA3MGQ2ZmFjZGE4ZTk5YzVhYTZhM2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTEludHJpbnNpY3MuaCIKKyNp
bmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworYm9vbCBTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3QKK3sKKyAgICBpZiAoIWlzPFR5cGVS
ZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8m
IHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Cisg
ICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgIGlmICghaXM8TmF0
aXZlVHlwZURlY2xhcmF0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8TmF0aXZlVHlwZURlY2xhcmF0
aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNOdW1iZXIoKTsKK30KKworYm9v
bCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0
ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9u
RGVmaW5pdGlvbiYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVt
RGlyZWN0aW9uOjpJbnB1dDsKK30KKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDYyYWJiY2ViZTU1MGUyYjgxOTAxOTgyYzY4OTNiMzhiYzRjZjI0
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKworY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIDogcHVibGljIEJhc2VT
ZW1hbnRpYyB7CitwdWJsaWM6CisgICAgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKExl
eGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBCYXNlU2VtYW50aWMoV1RGTW92ZShvcmln
aW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMoY29uc3QgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikgPSBkZWxldGU7CisgICAg
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljJikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMmKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IElu
dHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRl
ckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmIyM2I0YmM0ZTVhYzY1ZTUwY2YyZTNkOTQ0NzBhZTI2NWJmYTM5Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRp
Yy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgi
CisjaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExT
TEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgorI2lu
Y2x1ZGUgIldITFNMSW50cmluc2ljcy5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25z
dCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdAorewor
ICAgIGlmIChpczxBcnJheVR5cGU+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKCFpczxUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5j
ZT4odW5uYW1lZFR5cGUpOworICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KTsKKyAgICBhdXRvJiByZXNvbHZlZFR5cGUgPSAqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUo
KTsKKyAgICBpZiAoaXM8RW51bWVyYXRpb25EZWZpbml0aW9uPihyZXNvbHZlZFR5cGUpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWlzPE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVz
b2x2ZWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVu
Y2UucmVzb2x2ZWRUeXBlKCkpOworICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNO
dW1iZXIoKQorICAgICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNWZWN0b3IoKQorICAg
ICAgICB8fCBuYXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKK30KKworYm9vbCBTdGFn
ZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVy
SXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rp
b25EZWZpbml0aW9uKSBjb25zdAoreworICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5l
bnRyeVBvaW50VHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBv
aW50VHlwZTo6VmVydGV4OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZ1bmN0aW9u
RGVjbGFyYXRpb246OkVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKKyAgICAgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKKyAgICBjYXNlIEZ1bmN0aW9u
RGVjbGFyYXRpb246OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhZ2VJbk91dFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWU4NTMyYWQ3Yzdl
MmNlOGU4NTA2NjdjYWNmNzg4NjE1ZjYwNjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgK
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hM
U0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTdGFnZUluT3V0U2VtYW50aWMgOiBwdWJsaWMgQmFz
ZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBTdGFnZUluT3V0U2VtYW50aWMoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgOiBCYXNlU2VtYW50aWMoV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflN0YWdlSW5PdXRTZW1hbnRpYygpID0gZGVmYXVsdDsKKworICAgIFN0YWdlSW5P
dXRTZW1hbnRpYyhjb25zdCBTdGFnZUluT3V0U2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBTdGFn
ZUluT3V0U2VtYW50aWMoU3RhZ2VJbk91dFNlbWFudGljJiYpID0gZGVmYXVsdDsKKworICAgIHVu
c2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0YWdlSW5PdXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdGFnZUluT3V0U2VtYW50aWMmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgaXNB
Y2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24o
U2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1NmMxOWMyNGMzYmU1MTc4OGM0MWQ4NDI2MzJhMjI4YjE5YzRhNTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1l
bnQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNM
VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN0YXRl
bWVudCA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RhdGVtZW50KExleGVyOjpUb2tl
biYmIG9yaWdpbikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgflN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIFN0YXRl
bWVudChjb25zdCBTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdGF0ZW1lbnQoU3RhdGVtZW50
JiYpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFwKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
V2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToKKyAgICBMZXhl
cjo6VG9rZW4gbV9vcmlnaW47Cit9OworCit1c2luZyBTdGF0ZW1lbnRzID0gVmVjdG9yPFVuaXF1
ZVJlZjxTdGF0ZW1lbnQ+PjsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZGVm
aW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRvVmFsdWVUeXBlTmFt
ZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkgeyByZXR1cm4gc3Rh
dGVtZW50LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NmM2
ZTEyMzhiY2I1N2U3Y2ZlMWUwMTc4NjlmMGY0MTQ0MGE3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJX
SExTTE5hbWVkVHlwZS5oIgorI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKworY2xhc3MgU3RydWN0dXJlRGVmaW5pdGlvbiA6IHB1YmxpYyBOYW1lZFR5cGUgeworcHVi
bGljOgorICAgIFN0cnVjdHVyZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJp
bmcmJiBuYW1lLCBTdHJ1Y3R1cmVFbGVtZW50cyYmIHN0cnVjdHVyZUVsZW1lbnRzKQorICAgICAg
ICA6IE5hbWVkVHlwZShXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUobmFtZSkpCisgICAgICAgICwg
bV9zdHJ1Y3R1cmVFbGVtZW50cyhXVEZNb3ZlKHN0cnVjdHVyZUVsZW1lbnRzKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+U3RydWN0dXJlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKwor
ICAgIFN0cnVjdHVyZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVs
ZXRlOworICAgIFN0cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRl
ZmF1bHQ7CisKKyAgICBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0cnVjdHVyZUVsZW1lbnRzJiBzdHJ1Y3R1cmVFbGVt
ZW50cygpIHsgcmV0dXJuIG1fc3RydWN0dXJlRWxlbWVudHM7IH0KKworcHJpdmF0ZToKKyAgICBT
dHJ1Y3R1cmVFbGVtZW50cyBtX3N0cnVjdHVyZUVsZW1lbnRzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVEX1RZ
UEUoU3RydWN0dXJlRGVmaW5pdGlvbiwgaXNTdHJ1Y3R1cmVEZWZpbml0aW9uKCkpCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3RydWN0dXJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZDY0ZTJlMjhhZmU1
NmNiYjhjZjAzMmMxNDlmYTY5NmFjNGU2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKQEAg
LTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIK
KyNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIK
KyNpbmNsdWRlICJXSExTTFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIFN0cnVjdHVyZUVsZW1lbnQgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAg
U3RydWN0dXJlRWxlbWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFs
aWZpZXJzLCBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgT3B0
aW9uYWw8U2VtYW50aWM+IHNlbWFudGljKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX3F1YWxpZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzKSkKKyAgICAg
ICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1l
KSkKKyAgICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUoc2VtYW50aWMpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5TdHJ1Y3R1cmVFbGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgU3Ry
dWN0dXJlRWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7CisgICAgU3Ry
dWN0dXJlRWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKKworICAgIGNvbnN0
IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBV
bm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4obV90
eXBlKTsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorICAg
IE9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CisK
K3ByaXZhdGU6CisgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIFF1YWxpZmllcnMgbV9x
dWFsaWZpZXJzOworICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOworICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2VtYW50aWM7Cit9OworCit1c2lu
ZyBTdHJ1Y3R1cmVFbGVtZW50cyA9IFZlY3RvcjxTdHJ1Y3R1cmVFbGVtZW50PjsKKworfSAvLyBu
YW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZTlmOGE4ZWI1NzU2ZDYzZjkyMmVhNmE5MjM5YThjMmI1N2U0NmZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dp
dGNoQ2FzZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAi
V0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgU3dpdGNoQ2FzZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIFN3
aXRjaENhc2UoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Np
b24+JiYgdmFsdWUsIEJsb2NrJiYgYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgICAgICAsIG1f
YmxvY2soV1RGTW92ZShibG9jaykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN3aXRj
aENhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9
IGRlbGV0ZTsKKyAgICBTd2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OworCisgICAg
Ym9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7
IH0KKyAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CisKK3ByaXZhdGU6Cisg
ICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworICAgIEJsb2NrIG1fYmxv
Y2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFN3aXRjaENhc2UsIGlzU3dpdGNoQ2FzZSgpKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN3aXRjaFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIxOWQ3MDQyMmM5
NGQ5OWVkMTM5MDQyMDUwNjNkZTEyMTQ4YjUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFN3aXRj
aENhc2UuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFN3aXRj
aFN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIFN3aXRjaFN0YXRl
bWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHZhbHVl
LCBWZWN0b3I8U3dpdGNoQ2FzZT4mJiBzd2l0Y2hDYXNlcykKKyAgICAgICAgOiBTdGF0ZW1lbnQo
V1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAg
ICAgICwgbV9zd2l0Y2hDYXNlcyhXVEZNb3ZlKHN3aXRjaENhc2VzKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+U3dpdGNoU3RhdGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgU3dpdGNo
U3RhdGVtZW50KGNvbnN0IFN3aXRjaFN0YXRlbWVudCYpID0gZGVsZXRlOworICAgIFN3aXRjaFN0
YXRlbWVudChTd2l0Y2hTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1N3aXRj
aFN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJl
c3Npb24mIHZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fdmFsdWUp
OyB9CisgICAgVmVjdG9yPFN3aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dp
dGNoQ2FzZXM7IH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV92YWx1
ZTsKKyAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gbV9zd2l0Y2hDYXNlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFU
RU1FTlQoU3dpdGNoU3RhdGVtZW50LCBpc1N3aXRjaFN0YXRlbWVudCgpKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRl
cm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MWQxMmI1ZDIyOWZkN2Q0
OWQwZjg1OTBlOWZkZTFhNTA4MDZjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUZXJuYXJ5RXhw
cmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBUZXJuYXJ5RXhwcmVz
c2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHByZWRp
Y2F0ZSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYm9keUV4cHJlc3Npb24sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGVsc2VFeHByZXNzaW9uKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92
ZShvcmlnaW4pKQorICAgICAgICAsIG1fcHJlZGljYXRlKFdURk1vdmUocHJlZGljYXRlKSkKKyAg
ICAgICAgLCBtX2JvZHlFeHByZXNzaW9uKFdURk1vdmUoYm9keUV4cHJlc3Npb24pKQorICAgICAg
ICAsIG1fZWxzZUV4cHJlc3Npb24oV1RGTW92ZShlbHNlRXhwcmVzc2lvbikpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgflRlcm5hcnlFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAg
VGVybmFyeUV4cHJlc3Npb24oY29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAg
ICBUZXJuYXJ5RXhwcmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBFeHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxF
eHByZXNzaW9uJj4obV9wcmVkaWNhdGUpOyB9CisgICAgRXhwcmVzc2lvbiYgYm9keUV4cHJlc3Np
b24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9ib2R5RXhwcmVzc2lvbik7
IH0KKyAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEV4cHJlc3Npb24mPihtX2Vsc2VFeHByZXNzaW9uKTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bV9ib2R5RXhwcmVzc2lvbjsKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9lbHNlRXhwcmVz
c2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFRlcm5hcnlFeHByZXNzaW9uLCBpc1Rlcm5hcnlF
eHByZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHJhcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODBlNzE3YzA4ZTExNzQ3
MWFlNzYxMjhkMGU1OGM0M2JlYjBiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitj
bGFzcyBUcmFwIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgVHJhcChMZXhlcjo6
VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VHJhcCgpID0gZGVmYXVsdDsKKworICAgIFRyYXAo
Y29uc3QgVHJhcCYpID0gZGVsZXRlOworICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzVHJhcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0
ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoVHJhcCwgaXNUcmFwKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1OWU0OTY0NjQzOGY4NTNhYzkwOGY4YTYzY2M0NDBkMGQ1M2I1MDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOb2RlIHsKK3B1Ymxp
YzoKKyAgICBUeXBlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+VHlwZSgpID0gZGVmYXVs
dDsKKworICAgIGV4cGxpY2l0IFR5cGUoY29uc3QgVHlwZSYpID0gZGVsZXRlOworICAgIFR5cGUo
VHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlJiBvcGVyYXRvcj0oY29uc3QgVHlwZSYpID0g
ZGVsZXRlOworICAgIFR5cGUmIG9wZXJhdG9yPShUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc05hbWVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVW5uYW1lZFR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwor
cHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2RlZmluZSBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNh
dGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yM2VmOTEwOTZiNTk1YTBjNzAxNjc5MDEzNjZmNmUzZmIyZWI1ODUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworVHlwZUFyZ3VtZW50cyBjbG9u
ZShjb25zdCBUeXBlQXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKQoreworICAgIFR5cGVBcmd1bWVu
dHMgcmVzdWx0OworICAgIGZvciAoY29uc3QgYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZUFyZ3Vt
ZW50cykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjbG9uZSh0eXBlQXJndW1lbnQpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitUeXBlQXJndW1lbnQgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50
JiB0eXBlQXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRv
cihbXShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgLT4gVHlw
ZUFyZ3VtZW50IHsKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi5jbG9uZSgpOwor
ICAgIH0sIFtdKGNvbnN0IFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkg
LT4gVHlwZUFyZ3VtZW50IHsKKyAgICAgICAgcmV0dXJuIHR5cGVSZWZlcmVuY2UtPmNsb25lVHlw
ZVJlZmVyZW5jZSgpOworICAgIH0pLCB0eXBlQXJndW1lbnQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZTY3MDlkN2FkYjk3YmZkNDAzZDIyZTE0OTgxYmRiN2I0NDQxZDk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFy
Z3VtZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwor
Y2xhc3MgVHlwZVJlZmVyZW5jZTsKKwordXNpbmcgVHlwZUFyZ3VtZW50ID0gVmFyaWFudDxDb25z
dGFudEV4cHJlc3Npb24sIFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPj47Cit1c2luZyBUeXBlQXJn
dW1lbnRzID0gVmVjdG9yPFR5cGVBcmd1bWVudD47CisKK1R5cGVBcmd1bWVudCBjbG9uZShjb25z
dCBUeXBlQXJndW1lbnQmKTsKK1R5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50
cyYpOworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmlu
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5
cGVEZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUzZmYzNjRkNmJkNjA2MzA1MmZjM2FmMWI1ZmM0
NmYzMWVmNjRlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTE5hbWVkVHlwZS5oIgorI2luY2x1ZGUgIldI
TFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2Ns
YXNzIFR5cGVEZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgVHlw
ZURlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBVbmlxdWVS
ZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSkKKyAgICAgICAgOiBOYW1lZFR5cGUoV1RGTW92ZShvcmln
aW4pLCBXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UeXBlRGVmaW5pdGlvbigpID0gZGVmYXVsdDsKKwor
ICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAg
VHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBp
c1R5cGVEZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
VW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1f
dHlwZSk7IH0KKworICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsKKyAgICB9CisKKyAgICBU
eXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHlwZS0+
dW5pZnlOb2RlKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlw
ZT4gbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVEX1RZUEUoVHlwZURlZmluaXRpb24sIGlzVHlwZURl
ZmluaXRpb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyZDhmZTQ1MmFmNGI4YmFlNWQ2MTM5ZjE5YTdmYWExMGQzMTAyNDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBl
UmVmZXJlbmNlLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4gVHlw
ZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIE5hbWVkVHlwZSYgcmVzb2x2
ZWRUeXBlKQoreworICAgIFR5cGVBcmd1bWVudHMgdHlwZUFyZ3VtZW50czsKKyAgICBpZiAoaXM8
TmF0aXZlVHlwZURlY2xhcmF0aW9uPihyZXNvbHZlZFR5cGUpKQorICAgICAgICB0eXBlQXJndW1l
bnRzID0gQVNUOjpjbG9uZShkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHJlc29sdmVk
VHlwZSkudHlwZUFyZ3VtZW50cygpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWVSZWY8
VHlwZVJlZmVyZW5jZT4oV1RGTW92ZShvcmlnaW4pLCBTdHJpbmcocmVzb2x2ZWRUeXBlLm5hbWUo
KSksIFdURk1vdmUodHlwZUFyZ3VtZW50cykpOworICAgIHJlc3VsdC0+c2V0UmVzb2x2ZWRUeXBl
KHJlc29sdmVkVHlwZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYjY5ZjAzNmRmNGFlMjM0M2RiZTUwN2Q4N2FhNTk5MGJiNzE2M2M4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJl
ZmVyZW5jZS5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUg
IldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNs
dWRlICJXSExTTFVubmFtZWRUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOYW1lZFR5cGU7CisK
K2NsYXNzIFR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgVW5uYW1lZFR5cGUgeworcHVibGljOgorICAg
IFR5cGVSZWZlcmVuY2UoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBUeXBl
QXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykKKyAgICAgICAgOiBVbm5hbWVkVHlwZShXVEZNb3Zl
KG9yaWdpbikpCisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV90
eXBlQXJndW1lbnRzKFdURk1vdmUodHlwZUFyZ3VtZW50cykpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflR5cGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlUmVmZXJlbmNl
KGNvbnN0IFR5cGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKKyAgICBUeXBlUmVmZXJlbmNlKFR5cGVS
ZWZlcmVuY2UmJikgPSBkZWZhdWx0OworCisgICAgc3RhdGljIFVuaXF1ZVJlZjxUeXBlUmVmZXJl
bmNlPiB3cmFwKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUp
OworCisgICAgYm9vbCBpc1R5cGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KKyAgICBUeXBl
QXJndW1lbnRzJiB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gbV90eXBlQXJndW1lbnRzOyB9Cisg
ICAgTmFtZWRUeXBlKiByZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkVHlw
ZTsgfQorCisgICAgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7CisgICAgICAgIHJldHVybiBtX3Jlc29s
dmVkVHlwZS0+dW5pZnlOb2RlKCk7CisgICAgfQorCisgICAgVHlwZSYgdW5pZnlOb2RlKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkVHlwZSk7CisgICAgICAgIHJl
dHVybiBtX3Jlc29sdmVkVHlwZS0+dW5pZnlOb2RlKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRS
ZXNvbHZlZFR5cGUoTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCisgICAgeworICAgICAgICBtX3Jl
c29sdmVkVHlwZSA9ICZyZXNvbHZlZFR5cGU7CisgICAgfQorCisgICAgVW5pcXVlUmVmPFR5cGVS
ZWZlcmVuY2U+IGNsb25lVHlwZVJlZmVyZW5jZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBT
dHJpbmcobV9uYW1lKSwgQVNUOjpjbG9uZShtX3R5cGVBcmd1bWVudHMpKTsKKyAgICB9CisKKyAg
ICBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjbG9uZVR5cGVSZWZlcmVuY2UoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBUeXBlQXJndW1lbnRzIG1fdHlwZUFyZ3VtZW50czsKKyAg
ICBOYW1lZFR5cGUqIG1fcmVzb2x2ZWRUeXBlIHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFN
RURfVFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5uYW1lZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzdjNTE3NGRhNTA5Mjc1Mzk2NzQ2ZTZlNmUyMjUx
ZjM3ZTdhYzBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5uYW1lZFR5cGUuaApAQCAtMCwwICsxLDg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgVW5uYW1lZFR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6
CisgICAgVW5uYW1lZFR5cGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQorICAgICAgICA6IG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VW5uYW1l
ZFR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBVbm5hbWVkVHlwZShjb25zdCBVbm5hbWVkVHlwZSYp
ID0gZGVsZXRlOworICAgIFVubmFtZWRUeXBlKFVubmFtZWRUeXBlJiYpID0gZGVmYXVsdDsKKwor
ICAgIGJvb2wgaXNVbm5hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNUeXBlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5vZGUoKSBjb25z
dCB7IHJldHVybiAqdGhpczsgfQorICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2RlKCkgeyByZXR1
cm4gKnRoaXM7IH0KKworICAgIHZpcnR1YWwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBjbG9uZSgp
IGNvbnN0ID0gMDsKKworICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNh
dGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShVbm5hbWVkVHlwZSwgaXNVbm5hbWVkVHlwZSgpKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhm
NTQxOTE3MzgyMGVhMjllMTJiZmRmY2Y5OGNjZDI4YmIxMWVjMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24u
aCIKKyNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworaW50NjRfdCBVbnNp
Z25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9
IGRvd25jYXN0PFR5cGVSZWZlcmVuY2U+KCptX3R5cGUucmVzb2x2ZWRUeXBlKCkpOworICAgIEFT
U0VSVCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICBhdXRvJiBuYXRpdmVUeXBl
RGVjbGFyYXRpb24gPSBkb3duY2FzdDxOYXRpdmVUeXBlRGVjbGFyYXRpb24+KCp0eXBlUmVmZXJl
bmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICByZXR1cm4gbmF0aXZlVHlwZURlY2xhcmF0aW9uLmZv
cm1hdFZhbHVlRnJvbVVuc2lnbmVkSW50ZWdlcigpKG1fdmFsdWUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YjllMjViNjA5MGE2Nzg0ZTFlZDI0YWVlYTdhYmNm
ZTVmOTA3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw4NSBA
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
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIHZh
bHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuKG9yaWdpbikpCisgICAgICAg
ICwgbV90eXBlKFdURk1vdmUob3JpZ2luKSwgdmFsdWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgp
ID0gZGVmYXVsdDsKKworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoY29uc3QgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwoVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBVbnNpZ25lZEludGVnZXJM
aXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYpID0gZGVsZXRl
OworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShVbnNpZ25lZEludGVnZXJM
aXRlcmFsJiYpID0gZGVmYXVsdDsKKworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJiB0
eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CisKKyAgICBib29sIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWwgY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBy
ZXN1bHQoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgbV92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1
bHQubV90eXBlLnJlc29sdmVkVHlwZSgpKQorICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNv
bHZlKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCktPmNsb25lKCkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIGludDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSBtX3R5cGU7
CisgICAgdW5zaWduZWQgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYjBlNjgzZGZmNDRjOTJmMDc5MGM5MTE5MzliNjZhYjI3ZGMyMDdhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3Bh
Y2UgQVNUIHsKKworVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgdW5zaWduZWQgdmFsdWUpCisgICAgOiBt
X3ZhbHVlKHZhbHVlKQorICAgICwgbV9wcmVmZXJyZWRUeXBlKG1ha2VVbmlxdWVSZWY8VHlwZVJl
ZmVyZW5jZT4oV1RGTW92ZShvcmlnaW4pLCBTdHJpbmcoInVpbnQiLCBTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSwgVHlwZUFyZ3VtZW50cygpKSkKK3sKK30KKworVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU6On5VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKKwor
fSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ODM3ZTY1MWQxOGYy
NmIzNDEyZDU3MDMzZjc3YjhiNGNiMWE1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBUeXBlUmVmZXJlbmNlOworCitjbGFzcyBVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZSA6IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CitwdWJsaWM6CisgICAgVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSk7
CisKKyAgICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpOworCisgICAgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUm
KSA9IGRlbGV0ZTsKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSYgb3BlcmF0b3I9KGNvbnN0IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxl
dGU7CisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIG9wZXJhdG9yPShVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBU
eXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZVJl
ZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSk7IH0KKworICAgIGJvb2wgY2FuUmVzb2x2ZShjb25z
dCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29u
c3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX3ZhbHVlOworICAgIC8vIFRoaXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJj
dWxhciBkZXBlbmRlbmN5IGJldHdlZW4KKyAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0
ZXJhbFR5cGUgLT4gVHlwZVJlZmVyZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhw
cmVzc2lvbgorICAgIFVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfUkVTT0xWQUJMRV9UWVBFKFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLCBpc1Vu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhbHVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmZkOWM4ZWY3MjNmNWEyNTdiYjI3ZmM2NzRkMGEzZjM1MGU0N2VhNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhbHVlLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBWYWx1ZSA6
IHB1YmxpYyBOb2RlIHsKK3B1YmxpYzoKKyAgICBWYWx1ZSgpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflZhbHVlKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgVmFsdWUoY29uc3Qg
VmFsdWUmKSA9IGRlZmF1bHQ7CisgICAgVmFsdWUoVmFsdWUmJikgPSBkZWZhdWx0OworCisgICAg
VmFsdWUmIG9wZXJhdG9yPShjb25zdCBWYWx1ZSYpID0gZGVmYXVsdDsKKyAgICBWYWx1ZSYgb3Bl
cmF0b3I9KFZhbHVlJiYpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNw
YWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjQ0OTQ2MDJjZmJhYWIxMTM1ZDcxNjIzNTZhMGEyMDg3MDEyMmVi
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaApAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNM
UXVhbGlmaWVyLmgiCisjaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNM
VHlwZS5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlv
biA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbihMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBPcHRpb25hbDxVbmlx
dWVSZWY8VW5uYW1lZFR5cGU+PiYmIHR5cGUsIFN0cmluZyYmIG5hbWUsIE9wdGlvbmFsPFNlbWFu
dGljPiYmIHNlbWFudGljLCBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlh
bGl6ZXIpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1f
cXVhbGlmaWVycyhXVEZNb3ZlKHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3Zl
KHR5cGUpKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2Vt
YW50aWMoV1RGTW92ZShzZW1hbnRpYykpCisgICAgICAgICwgbV9pbml0aWFsaXplcihXVEZNb3Zl
KGluaXRpYWxpemVyKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VmFyaWFibGVEZWNs
YXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oY29uc3QgVmFy
aWFibGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oVmFy
aWFibGVEZWNsYXJhdGlvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgU3RyaW5nJiBuYW1lKCkg
eyByZXR1cm4gbV9uYW1lOyB9CisKKyAgICBjb25zdCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1l
ZFR5cGU+PiYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfSAvLyBBbm9ueW1vdXMgdmFy
aWFibGVzIGluc2lkZSBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9ucyBoYXZlIHRoZWlyIHR5cGUg
c2V0IGJ5IHRoZSB0eXBlIGNoZWNrZXIuCisgICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVy
biBtX3R5cGUgPyAmc3RhdGljX2Nhc3Q8VW5uYW1lZFR5cGUmPigqbV90eXBlKSA6IG51bGxwdHI7
IH0KKyAgICBPcHRpb25hbDxTZW1hbnRpYz4mIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRp
YzsgfQorICAgIEV4cHJlc3Npb24qIGluaXRpYWxpemVyKCkgeyByZXR1cm4gbV9pbml0aWFsaXpl
ciA/ICZzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1faW5pdGlhbGl6ZXIpIDogbnVsbHB0cjsg
fQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBRdWFsaWZpZXJz
IG1fcXVhbGlmaWVyczsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3R5
cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBPcHRpb25hbDxTZW1hbnRpYz4gbV9zZW1hbnRp
YzsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5pdGlhbGl6ZXI7Cit9
OworCit1c2luZyBWYXJpYWJsZURlY2xhcmF0aW9ucyA9IFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0
aW9uPjsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4ZTFmYzdmNWIyMzhkYmIwNDAzZTlmNDAyNzgwNGE3MGE3ZTg4MWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50IDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6
CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
LCBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mJiB2YXJpYWJsZURlY2xhcmF0aW9ucykKKyAg
ICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fdmFyaWFibGVE
ZWNsYXJhdGlvbnMoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9ucykpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgflZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgPSBkZWZhdWx0
OworCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoY29uc3QgVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CisKKyAg
ICBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mIHZhcmlh
YmxlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiBtX3ZhcmlhYmxlRGVjbGFy
YXRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCwgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZVJlZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNTJmZGYxZTQ3Y2JkNTFjYzY5YmI1
NTk0NjQ2NGY0M2QzZGZjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEs
OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisj
aW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsK
KworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGljIEV4
cHJlc3Npb24geworcHVibGljOgorICAgIFZhcmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYm
IG9yaWdpbiwgU3RyaW5nJiYgbmFtZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3Jp
Z2luKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+VmFyaWFibGVSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJs
ZVJlZmVyZW5jZShjb25zdCBWYXJpYWJsZVJlZmVyZW5jZSYpID0gZGVsZXRlOworICAgIFZhcmlh
YmxlUmVmZXJlbmNlKFZhcmlhYmxlUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKKworICAgIHN0YXRp
YyBWYXJpYWJsZVJlZmVyZW5jZSB3cmFwKFZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVj
bGFyYXRpb24pCisgICAgeworICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZSByZXN1bHQoTGV4ZXI6
OlRva2VuKHZhcmlhYmxlRGVjbGFyYXRpb24ub3JpZ2luKCkpKTsKKyAgICAgICAgcmVzdWx0Lm1f
dmFyaWFibGUgPSAmdmFyaWFibGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBib29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0K
KworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIHZhcmlhYmxlKCkgeyByZXR1cm4gbV92YXJpYWJs
ZTsgfQorCisgICAgdm9pZCBzZXRWYXJpYWJsZShWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJs
ZURlY2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV92YXJpYWJsZSA9ICZ2YXJpYWJsZURlY2xh
cmF0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6
VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisg
ICAgeworICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgVmFyaWFibGVEZWNsYXJhdGlv
biogbV92YXJpYWJsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFZhcmlhYmxlUmVmZXJlbmNlLCBp
c1ZhcmlhYmxlUmVmZXJlbmNlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hN2U4NjgyYWY5ZGUyMGM2MmU0NWFlMDMxYWQyMTA4NGQ0MWZjOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVM
b29wLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgV2hpbGVMb29wIDogcHVibGljIFN0YXRlbWVu
dCB7CitwdWJsaWM6CisgICAgV2hpbGVMb29wKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVl
UmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9k
eSkKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fY29u
ZGl0aW9uYWwoV1RGTW92ZShjb25kaXRpb25hbCkpCisgICAgICAgICwgbV9ib2R5KFdURk1vdmUo
Ym9keSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfldoaWxlTG9vcCgpID0gZGVmYXVs
dDsKKworICAgIFdoaWxlTG9vcChjb25zdCBXaGlsZUxvb3AmKSA9IGRlbGV0ZTsKKyAgICBXaGls
ZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBjb25kaXRp
b25hbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2NvbmRpdGlvbmFsKTsg
fQorICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+
KG1fYm9keSk7IH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25k
aXRpb25hbDsKKyAgICBVbmlxdWVSZWY8U3RhdGVtZW50PiBtX2JvZHk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RB
VEVNRU5UKFdoaWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCmluZGV4IDNiMTkz
NGU5MzE2NTQ5MjRlMWU0YzhkZWY1OWY3NDhkMjEyMDRhNTMuLmU5YWVhZTdiNTQyMjM4ZTk4MzZh
NTQ4MDdkYTFmMDExNzViMjg5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCkBAIC0yMyw4ICsyMyw2IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCi0KICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXSExTTExleGVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MmQ3OTA1NzdhNDE0ZDYwOTRjYTBhODE0OTJlZmZiYjY4YmMxYjhmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV0hMU0xQYXJzZXIuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmNjZjZWQyMjBmNjMy
YTk3YzNhNDFlOWQ4OTVmZDVmMTJiYWYzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKQEAgLTAsMCArMSwxMTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBl
LmgiCisjaW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJh
bC5oIgorI2luY2x1ZGUgIldITFNMQnJlYWsuaCIKKyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1h
bnRpYy5oIgorI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TENvbW1hRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNs
dWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJl
c3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
IgorI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hM
U0xGbG9hdExpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJX
SExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2lj
YWxOb3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUg
IldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKKyNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgor
I2luY2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisjaW5jbHVk
ZSAiV0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKKyNp
bmNsdWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgor
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xTd2l0Y2hDYXNlLmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNp
bmNsdWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUcmFwLmgi
CisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIK
KyNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5j
bHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKKyNpbmNs
dWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3Au
aCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBQYXJz
ZXIgeworCit9OworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkY2YzZjViODkz
M2ViNGVkYWE3M2ExYTVmMWE4MjQwNTdlOGE3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaApAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hbWVDb250ZXh0LmgiCisjaW5j
bHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xO
YXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFN0cnVjdHVyZURlZmluaXRp
b24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK2Ns
YXNzIFByb2dyYW0geworcHVibGljOgorICAgIFByb2dyYW0oKSA9IGRlZmF1bHQ7CisgICAgUHJv
Z3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgYXBwZW5kKEFTVDo6VHlwZURl
ZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKKyAgICB7CisgICAgICAgIG1fdHlwZURlZmluaXRp
b25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+KFdURk1vdmUodHlw
ZURlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0aWNf
Y2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uJj4obV90eXBlRGVmaW5pdGlvbnMubGFzdCgpKSk7Cisg
ICAgfQorCisgICAgYm9vbCBhcHBlbmQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiYgc3RydWN0
dXJlRGVmaW5pdGlvbikKKyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlRGVmaW5pdGlvbnMuYXBw
ZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihXVEZNb3ZlKHN0cnVj
dHVyZURlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0
aWNfY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mPihtX3N0cnVjdHVyZURlZmluaXRpb25z
Lmxhc3QoKSkpOworICAgIH0KKworICAgIGJvb2wgYXBwZW5kKEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgbV9lbnVtZXJh
dGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uPihXVEZNb3ZlKGVudW1lcmF0aW9uRGVmaW5pdGlvbikpKTsKKyAgICAgICAgcmV0dXJu
IG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9u
Jj4obV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmxhc3QoKSkpOworICAgIH0KKworICAgIGJvb2wg
YXBwZW5kKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQorICAg
IHsKKyAgICAgICAgbV9mdW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpKTsKKyAg
ICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJj4obV9mdW5jdGlvbkRlZmluaXRpb25zLmxhc3QoKSkpOworICAgIH0KKworICAg
IGJvb2wgYXBwZW5kKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYmIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4o
V1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpOworICAgICAgICByZXR1cm4gbV9u
YW1lQ29udGV4dC5hZGQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Jj4obV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5sYXN0KCkpKTsKKyAgICB9CisKKyAgICBi
b29sIGFwcGVuZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYmIG5hdGl2ZVR5cGVEZWNsYXJh
dGlvbikKKyAgICB7CisgICAgICAgIG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5hcHBlbmQobWFr
ZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oV1RGTW92ZShuYXRpdmVUeXBl
RGVjbGFyYXRpb24pKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0aWNf
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiY+KG1fbmF0aXZlVHlwZURlY2xhcmF0aW9u
cy5sYXN0KCkpKTsKKyAgICB9CisKKyAgICBOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQoKSB7IHJl
dHVybiBtX25hbWVDb250ZXh0OyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZp
bml0aW9uPj4mIHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9
CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+PiYgc3RydWN0
dXJlRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX3N0cnVjdHVyZURlZmluaXRpb25zOyB9CisgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+JiBlbnVtZXJhdGlv
bkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb25zOyB9CisgICAg
Y29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlv
bkRlZmluaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9Cisg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRl
ZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9CisgICAgY29uc3Qg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4+JiBuYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9u
YXRpdmVUeXBlRGVjbGFyYXRpb25zOyB9CisKK3ByaXZhdGU6CisgICAgTmFtZUNvbnRleHQgbV9u
YW1lQ29udGV4dDsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6VHlwZURlZmluaXRpb24+PiBt
X3R5cGVEZWZpbml0aW9uczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4+IG1fc3RydWN0dXJlRGVmaW5pdGlvbnM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4+IG1fZW51bWVyYXRpb25EZWZpbml0aW9uczsKKyAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gbV9mdW5jdGlvbkRl
ZmluaXRpb25zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uPj4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsKKyAgICBWZWN0b3I8VW5pcXVl
UmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPj4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25z
OworfTsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2Q5MzRhZDI3ZjFi
ZmE5MTIzMWUxZDg2ZGYwYjc0MTlkODM4YjkwLi4xMmUzMGViMzAxMjk2M2Y4YzEyMTVhYmQ2NGZj
NTQzYjQ0ZmU0YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzA0LDYgKzMwNCwxOSBAQCBNb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiAKIE1vZHVs
ZXMvd2ViZ3B1L0RPTVdpbmRvd1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TGV4ZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKK01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc291cmNlU2VtYW50aWMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TnVsbExpdGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlUmVmZXJlbmNlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWwuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkZTQ1MmMwNjJhNmJhMjZmNDczMjcwNzdmYzFmOTlhY2ZjZmQ4Y2ViLi5hZTM2ZWRkMzVi
ZjUyZGVmM2VhMGJjYWY5MDk0M2NlOThhMDYxMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDAzLDYgKzY0MDMsOSBAQAog
CQkxQzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ZvbnRGYWNlU2V0Lmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAw
N0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzMzMjc2QzIxQ0VEQTQyMDAwREM5RjIgLyogV0hMU0xFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMzMzI3NzEyMUNGMEJFMTAwMERD
OUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmFtZWRUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAv
KiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8q
IEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDE1LDYgKzY0MTgsMTUgQEAKIAkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0Yw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzMjIxREVE
NDBCMDA2RTg0NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFJlc29sdmFibGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjY5QjM0
MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xGbG9hdExpdGVyYWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQjY5QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0I2OUIzNjIxREVENjU3MDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJh
bFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNjlCMzcyMURFRDY2QjAwNkU4NDZBIC8qIFdITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIz
ODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjY5QjNBMjFERjA0MDMwMDZFODQ2QSAv
KiBXSExTTE51bGxMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTE51bGxM
aXRlcmFsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjY5QjNCMjFE
RjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4
dERlY29yYXRpb25UaGlja25lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlj
a25lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RkIyMTdCODM5NDAw
OTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVy
bGluZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAz
MzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjE1LDggKzEzMjI3LDg0IEBACiAJCUMxMUE5RUQy
MjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzFFMUQyMzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyZWVuUHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnRWYXJpYW50QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVHlwZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJM
aXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyog
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTBFOTExMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMTGV4ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjEw
RTkxMjIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TExleGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTM4QTEzMjFEREVDRDMw
MEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTEJ1aWx0SW5TZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MTM4QTE1MjFEREVDRTkwMEY1MTZCQSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxMzhBMTYyMURERUNGQjAwRjUxNkJBIC8qIFdITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxMzhBMTcyMURERUQwRDAwRjUxNkJBIC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjMyMUNEODlBRDAwMjI3OTc5IC8qIFdITFNM
VHJhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFRyYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkY1MjFDRDg5QjUwMDIyNzk3OSAvKiBXSExTTENv
bnRpbnVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ29udGludWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdITFNMQm9vbGVhbkxp
dGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCb29sZWFuTGl0ZXJhbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRl
eEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJbmRleEV4cHJlc3Npb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjgyMUNEODlCQjAwMjI3OTc5IC8qIFdI
TFNMSW50ZWdlckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGOTIxQ0Q4OUJEMDAyMjc5Nzkg
LyogV0hMU0xTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFNlbWFudGljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExT
TEJhc2VTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJhc2VTZW1hbnRpYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjZGQjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hM
U0xEb1doaWxlTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERvV2hpbGVMb29wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkZDMjFDRDg5QkYwMDIyNzk3OSAvKiBXSExT
TFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWNs
YXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5IC8qIFdI
TFNMU3RydWN0dXJlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0cnVjdHVyZUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RkYyMUNEODlDMjAwMjI3
OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5
NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3
OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFC
RjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFJldHVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcw
NDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xXaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDUyMUNE
ODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xDb21tYUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY3MDcyMUNEODlDODAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xOdWxsTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBX
SExTTFF1YWxpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFF1YWxpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xF
eHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZl
cmVuY2VUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVmZXJlbmNlVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTAyMUNEODlEMDAwMjI3
OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3
MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMVHlwZUFyZ3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzEyMjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxMzIx
Q0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTUyMUNEODlENDAwMjI3
OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xM
b2dpY2FsTm90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFC
RjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTENhbGxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xEb3RFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzE5MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMQnJlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUIyMUNE
ODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4
cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5NzkgLyogV0hM
U0xUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNzFGMjFDRDg5REMwMDIyNzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xUeXBlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1U
aHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOdW1UaHJlYWRz
RnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3
MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMQnVpbHRJblNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI0MjFDRDg5RTEwMDIyNzk3OSAvKiBX
SExTTE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVmZXJl
bmNlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVt
YmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI3MjFDRDg5RTQwMDIy
Nzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3OSAvKiBX
SExTTFR5cGVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVHlwZURlZmluaXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5
IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmF0
aXZlVHlwZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzJCMjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VQb2lu
dGVyRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5
NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkYyMUNEODlFQzAwMjI3
OTc5IC8qIFdITFNMUG9pbnRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQb2ludGVyVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5
NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFz
c2lnbm1lbnRFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFN3aXRjaFN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhw
cmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hM
U0xGb3JMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRm9yTG9vcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExp
dGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVyYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczQTIxQ0Q4RDcw
MDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvZ3JhbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFERjJFNzFEOUU0RTk5MDBGNUIyNEMg
LyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlvblZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDU4RTYxMUZFODk3OUUwMDU5
NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2FjaGVDb3Jl
VGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMjYsNiArMTMzMTQsNyBA
QAogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNw
ZWNpZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9u
QWxnb3JpdGhtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFC
MEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250
U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MjQ1LDEyICsyNTMz
NCwxMDkgQEAKIAkJQzIxMEU5MEQyMUI0QkNBNDAwQjdGODNEIC8qIFdITFNMICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjFCRjZGMTIxQ0Q4OThEMDAy
Mjc5NzkgLyogQVNUICovLAogCQkJCUMyMTBFOTExMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExl
eGVyLmNwcCAqLywKIAkJCQlDMjEwRTkxMjIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5o
ICovLAorCQkJCUMyMUJGNzM3MjFDRDhBMDIwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5jcHAgKi8s
CisJCQkJQzIxQkY3MzgyMUNEOEEwMzAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8sCisJCQkJ
QzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBXSExTTDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUMyMUJG
NkYxMjFDRDg5OEQwMDIyNzk3OSAvKiBBU1QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUMyMUJGNzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5
UmVmZXJlbmNlVHlwZS5oICovLAorCQkJCUMyMUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExT
TEFycmF5VHlwZS5oICovLAorCQkJCUMyMUJGNzMwMjFDRDg5RUQwMDIyNzk3OSAvKiBXSExTTEFz
c2lnbm1lbnRFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8q
IFdITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmggKi8sCisJCQkJQzIxQkY2RkEyMUNEODlCRTAw
MjI3OTc5IC8qIFdITFNMQmFzZVNlbWFudGljLmggKi8sCisJCQkJQzIxQkY3MUUyMUNEODlEQzAw
MjI3OTc5IC8qIFdITFNMQmxvY2suaCAqLywKKwkJCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5Nzkg
LyogV0hMU0xCb29sZWFuTGl0ZXJhbC5oICovLAorCQkJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3
OSAvKiBXSExTTEJyZWFrLmggKi8sCisJCQkJQzIxMzhBMTMyMURERUNEMzAwRjUxNkJBIC8qIFdI
TFNMQnVpbHRJblNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5Nzkg
LyogV0hMU0xCdWlsdEluU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5
NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIy
Nzk3OSAvKiBXSExTTENvbW1hRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzMzMjFDRDg5RjAw
MDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzAyMjFD
RDg5QzQwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29u
dGludWUuaCAqLywKKwkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVy
ZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hM
U0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdI
TFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hM
U0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3MjAyMUNEODlE
RDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY3
MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKKwkJCQkx
QzMzMjc2QzIxQ0VEQTQyMDAwREM5RjIgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
aCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmgg
Ki8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAq
LywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAq
LywKKwkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBl
LmNwcCAqLywKKwkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9yTG9v
cC5oICovLAorCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0
cmlidXRlLmggKi8sCisJCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExT
TEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMUJGNkZGMjFDRDg5QzIwMDIyNzk3OSAv
KiBXSExTTElmU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8q
IFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8sCisJCQkJQzIwRjRGNjYyMURGRjIzNjAwNzBDNDVB
IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNkY4MjFDRDg5QkIwMDIy
Nzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCMzkyMURGMDNGMzAw
NkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNTIx
REVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFC
RjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oICovLAorCQkJ
CUMyMUJGNzE1MjFDRDg5RDQwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgg
Ki8sCisJCQkJQzIxQkY3MkQyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExT
TE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovLAorCQkJCTFDMzMyNzcxMjFDRjBCRTEwMDBEQzlG
MiAvKiBXSExTTE5hbWVkVHlwZS5oICovLAorCQkJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3OSAv
KiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcyQTIxQ0Q4
OUU3MDAyMjc5NzkgLyogV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFC
RjcyNDIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOb2RlLmggKi8sCisJCQkJQzIxQkY3MDcyMUNE
ODlDODAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzQTIxREYw
NDAzMDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuY3BwICovLAorCQkJCTFDQjY5QjM2
MjFERUQ2NTcwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5oICovLAorCQkJCUMyMUJG
NzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5o
ICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBlLmgg
Ki8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NF
eHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMUXVh
bGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3OSAv
KiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKKwkJCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0NkEg
LyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovLAorCQkJCUMyMTM4QTE1MjFEREVDRTkwMEY1MTZC
QSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwICovLAorCQkJCUMyMUJGNzA4MjFDRDg5Qzkw
MDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcwMzIxQ0Q4
OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLywKKwkJCQlDMjFCRjZGOTIxQ0Q4OUJEMDAy
Mjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICovLAorCQkJCUMyMTM4QTE2MjFEREVDRkIwMEY1MTZC
QSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIx
QkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmggKi8sCisJCQkJQzIxMzhBMTcyMURERUQwRDAwRjUxNkJBIC8qIFdITFNMU3RhZ2VJbk91
dFNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hMU0xT
dGFnZUluT3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxMjIxQ0Q4OUQxMDAyMjc5NzkgLyog
V0hMU0xTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3OTc5
IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNzE5MjFDRDg5RDcwMDIy
Nzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjczMTIxQ0Q4OUVFMDAyMjc5
NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxQzIxQ0Q4OURBMDAy
Mjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkYzMjFDRDg5
QUQwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAyMjc5
NzkgLyogV0hMU0xUeXBlLmggKi8sCisJCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8qIFdI
TFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKKwkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5NzkgLyog
V0hMU0xUeXBlQXJndW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5NzkgLyog
V0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcwQzQ1QSAv
KiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAorCQkJCUMyMUJGNzFGMjFDRDg5REMwMDIyNzk3
OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKKwkJCQkxQzMzMjc3MjIxQ0YwRDJFMDAwREM5
RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICovLAorCQkJCUMyMEY0RjY3MjFERkYzQTcwMDcwQzQ1
QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNzJCMjFD
RDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAqLywKKwkJCQkx
Q0I2OUIzQjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5jcHAgKi8sCisJCQkJMUNCNjlCMzcyMURFRDY2QjAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjZGQzIxQ0Q4OUJGMDAyMjc5NzkgLyog
V0hMU0xWYWx1ZS5oICovLAorCQkJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBXSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcxNDIxQ0Q4OUQzMDAyMjc5NzkgLyog
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzEzMjFD
RDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCisJCQkJQzIxQkY3
MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmggKi8sCisJCQkpOworCQkJcGF0
aCA9IEFTVDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM5NkY1RUJGMUI1
ODcyMjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358820</attachid>
            <date>2019-01-10 12:45:30 -0800</date>
            <delta_ts>2019-01-10 12:45:30 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-192991-20190110124529.patch</filename>
            <type>text/plain</type>
            <size>324849</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgzMjcwYzBlMmM2Njdj
OTM1N2U0NDVjOTdiZjBiYjgxYzJmMTVkYy4uMGI1NGVlNTdlMjE0YzM0YWVmNTNlZjk3ZGJlYzBj
NjY1MDU3OTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1OCBAQAorMjAxOS0wMS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
SW1wbGVtZW50IHBhcnNlciBBU1Qgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5Mjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIGFsbCB0aGUgQVNUIG5vZGVz
IHdoaWNoIHdpbGwgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBwYXJzZXIuCisgICAgICAg
IFRoaXMgcGF0Y2ggdXNlZCB0byBiZSBhIHBhcnQgb2YgdGhlICJjcmVhdGUgYSBXSExTTCBwYXJz
ZXIiIHBhdGNoIGJ1dCBJIHNwbGl0IHRoZW0KKyAgICAgICAgb3V0IGluIG9yZGVyIHRvIGFpZCBy
ZXZpZXdpbmcuCisKKyAgICAgICAgVGhlIGNsYXNzZXMgd2VyZSBtZWNoYW5pY2FsbHkgY3JlYXRl
ZCB0byBtYXRjaCB0aGUgcmVzdWx0IG9mIHRoZSBwYXJzZXIuIFRoZXJlIGFyZQorICAgICAgICBu
b2RlcyBmb3IgdGhpbmdzIGxpa2UgRm9yTG9vcHMsIExvZ2ljYWxOb3RFeHByZXNzaW9ucywgRGVy
ZWZlcmVuY2VFeHByZXNzaW9ucywKKyAgICAgICAgU3RydWN0dXJlRGVmaW5pdGlvbnMsIGFuZCB0
aGluZ3MgbGlrZSB0aGF0LiBUaGUgY2xhc3NlcyBkb24ndCBhY3R1YWxseSBoYXZlIGFueSBsb2dp
YworICAgICAgICBpbiB0aGVtIC0gdGhleSBhcmUgY3VycmVudGx5IGp1c3QgY29udGFpbmVycyB0
byBob2xkIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHBhcnNlZAorICAgICAgICBwcm9ncmFtLiBTb21l
IG9mIHRoZXNlIG5vZGVzIChsaWtlIGNvbnN0ZXhwcnMpIGFyZSBqdXN0IFZhcmlhbnRzIG9mIHRo
ZSB2YXJpb3VzIHRoaW5ncworICAgICAgICB0aGV5IGNhbiBpbiB0aGUgZm9ybSBvZi4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGUgcGFyc2VyIGRvZXNuJ3QgZXhpc3QgdG8gY3Jl
YXRlIHRoZSBuZXcgQVNUIG5vZGVzIHlldC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZTo6QXJyYXlSZWZlcmVuY2VUeXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OkFycmF5VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6OnR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXJyYXlUeXBlOjp0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5VHlwZTo6bnVtRWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4cHJl
c3Npb246OkFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uOjpyaWdodCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QmFzZUZ1bmN0aW9uQXR0cmlidXRlOjpCYXNlRnVu
Y3Rpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJh
c2VTZW1hbnRpYzo6QmFzZVNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCbG9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkJsb2NrOjpCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6c3Rh
dGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVh
bkxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCb29sZWFu
TGl0ZXJhbDo6Qm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
Qm9vbGVhbkxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkJvb2xlYW5MaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnJlYWsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpCcmVhazo6QnJlYWspOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp2YXJpYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCdWlsdEluU2VtYW50aWM6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDYWxsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNhbGxFeHByZXNzaW9uOjpDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpzZXRDYXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aXNDYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpjYXN0UmV0dXJuVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6aGFzT3ZlcmxvYWRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNhbGxFeHByZXNzaW9uOjpvdmVybG9hZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q2FsbEV4cHJlc3Npb246OnNldE92ZXJsb2Fk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6c2V0RnVu
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhw
cmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhw
cmVzc2lvbjo6Q29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjpDb25zdGFudEV4cHJlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjppbnRlZ2VyTGl0
ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246
OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
bjo6dmlzaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpD
b25zdGFudEV4cHJlc3Npb246Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OkNvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpsZWZ0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlOjpyaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51bWVyYXRpb25EZWZpbml0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlOjplbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTo6ZW51
bWVyYXRpb25NZW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U6OnNldEVudW1lcmF0aW9u
TWVtYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250aW51
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnRpbnVlOjpDb250
aW51ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvV2hpbGVMb29wOjpEb1doaWxlTG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Ym9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb1doaWxlTG9vcDo6Y29uZGl0aW9uYWwpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpEb3RFeHByZXNzaW9uOjpEb3RFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkRvdEV4cHJlc3Npb246OmZp
ZWxkTmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ6OkVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudDo6ZWZmZWN0ZnVsRXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uRGVmaW5pdGlvbjo6bWVtYmVyQnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6ZW51bWVyYXRpb25NZW1iZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
OjpFbnVtZXJhdGlvbk1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVt
ZXJhdGlvbk1lbWJlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkVudW1lcmF0aW9uTWVtYmVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlcjo6c2V0VmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6RW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246Om9yaWdpbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0Fzc2lnbm1lbnRFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzQm9v
bGVhbkxpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNDYWxsRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFeHByZXNzaW9uOjppc0NvbW1hRXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RlcmVmZXJlbmNlRXhwcmVzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0RvdEV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNGbG9hdExpdGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhw
cmVzc2lvbjo6aXNJbmRleEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNJbnRlZ2VyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0xvZ2ljYWxFeHByZXNzaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTG9naWNhbE5v
dEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVz
c2lvbjo6aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTWFrZVBvaW50ZXJFeHByZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzTnVsbExp
dGVyYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzVGVybmFyeUV4cHJl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6
aXNVbnNpZ25lZEludGVnZXJMaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkV4cHJlc3Npb246OmlzVmFyaWFibGVSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZhbGx0
aHJvdWdoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmFsbHRocm91
Z2g6OkZhbGx0aHJvdWdoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGbG9hdExpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OkZsb2F0TGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGbG9hdExpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rmxv
YXRMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWw6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpGbG9hdExpdGVyYWxUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6Y29u
dmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpGbG9hdExpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGb3JMb29wOjp+Rm9yTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjppbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjpjb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9y
TG9vcDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6
OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OmlzRnVuY3Rpb25E
ZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb246OmlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjphdHRyaWJ1dGVCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpl
bnRyeVBvaW50VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjppc0Nhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6cGFyYW1ldGVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
OjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb246OnNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb246OmlzT3BlcmF0b3IgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6RnVuY3Rpb25EZWZpbml0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbjo6
YmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
OjpyZXN0cmljdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJZlN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OklmU3RhdGVtZW50OjpJZlN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpJZlN0YXRlbWVudDo6Y29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SWZTdGF0ZW1lbnQ6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZT
dGF0ZW1lbnQ6OmVsc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xJbmRleEV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbmRleEV4cHJlc3Npb246OkluZGV4RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpJbmRleEV4cHJlc3Npb246OmluZGV4RXhwcmVzc2lvbik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjp2YWx1ZUZv
clNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpJbnRlZ2VyTGl0ZXJhbDo6SW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6SW50ZWdlckxpdGVyYWw6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVn
ZXJMaXRlcmFsVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbnRlZ2VyTGl0
ZXJhbFR5cGU6OmNhblJlc29sdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6SW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWxUeXBlOjpwcmVm
ZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Okxv
Z2ljYWxFeHByZXNzaW9uOjpMb2dpY2FsRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6bGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6cmlnaHQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb246Okxv
Z2ljYWxOb3RFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uOjpvcGVyYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6TWFr
ZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsVmFsdWUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbjo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQ
b2ludGVyRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xOYW1lZFR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpOYW1lZFR5cGU6Ok5hbWVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYW1lZFR5cGU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRU
eXBlOjppc1R5cGVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hbWVkVHlwZTo6aXNTdHJ1Y3R1cmVEZWZpbml0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZTo6aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmFtZWRUeXBlOjppc05hdGl2ZVR5
cGVEZWNsYXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYW1l
ZFR5cGU6OnVuaWZ5Tm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YW1lZFR5cGU6OnVuaWZ5Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb246Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbjo6cmVzdHJpY3RlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc0ludCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OmlzTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbjo6aXNGbG9hdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OmlzVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6aXNNYXRyaXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjppc1RleHR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uOjppc1NpZ25lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rpb248Ym9vbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnN0ZDo6ZnVuY3Rp
b248aW50NjRfdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb246Oml0ZXJhdGVBbGxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc0ludCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldElzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNG
bG9hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb246OnNldElzVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbjo6c2V0SXNNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJc1NpZ25lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb246OnNldENh
blJlcHJlc2VudEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZl
VHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRDYW5SZXBy
ZXNlbnRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb246OnNldFN1Y2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246OnNldEZvcm1hdFZhbHVlRnJvbUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRGb3JtYXRW
YWx1ZUZyb21VbnNpZ25lZEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpzZXRJdGVyYXRlQWxsVmFsdWVzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWw6Ok51bGxMaXRlcmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6Ok51bGxMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpOdWxsTGl0ZXJhbFR5cGU6OmNhblJlc29s
dmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVsbExpdGVyYWxUeXBl
Ojpjb252ZXJzaW9uQ29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZTo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTo6d2lkdGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlOjpoZWln
aHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlOjpkZXB0aCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpQb2ludGVyVHlwZTo6UG9pbnRlclR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6UHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6cG9zc2libGVHZXRPdmVybG9hZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpwb3NzaWJsZVNl
dE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb246OnBvc3NpYmxlQW5kT3ZlcmxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6c2V0UG9zc2libGVHZXRPdmVybG9h
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOjpzZXRQb3NzaWJsZVNldE92ZXJsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OnNldFBvc3NpYmxlQW5kT3ZlcmxvYWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjo6
YmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVy
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6c2V0TmV3VmFsdWVFeHBy
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb246OnNldFJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6b2xkVmFyaWFibGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6
bmV3VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om9sZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246Om5ld1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246
Om5ld1ZhbHVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpyZXN1bHRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
ZmVyZW5jZVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZl
cmVuY2VUeXBlOjpSZWZlcmVuY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlZmVyZW5jZVR5cGU6OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpSZWZlcmVuY2VUeXBlOjplbGVtZW50VHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNGbG9hdExp
dGVyYWxUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc29sdmFi
bGVUeXBlOjppc0ludGVnZXJMaXRlcmFsVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6aXNOdWxsTGl0ZXJhbFR5cGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OmlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b2x2YWJsZVR5cGU6OnJlc29sdmVkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6cmVzb2x2ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlJlc29sdmFibGVUeXBlOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc291cmNlU2VtYW50
aWM6Om1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb3VyY2VT
ZW1hbnRpYzo6aW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVz
b3VyY2VTZW1hbnRpYzo6c3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6UmVzb3VyY2VTZW1hbnRpYzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OlJldHVybik6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZXR1cm46OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlJldHVybjo6ZnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmV0dXJuOjpzZXRGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6
OmlzQWNjZXB0YWJsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVt
RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OlNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJs
ZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6U3RhZ2VJbk91dFNlbWFudGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYzo6aW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhZ2VJbk91dFNlbWFu
dGljOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0
YWdlSW5PdXRTZW1hbnRpYzo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50OjpTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzQ29udGludWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc0RvV2hpbGVMb29wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVu
dDo6aXNGYWxsdGhyb3VnaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpT
dGF0ZW1lbnQ6OmlzRm9yTG9vcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdGF0ZW1lbnQ6OmlzSWZTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6U3RhdGVtZW50Ojppc1JldHVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoQ2FzZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzU3dpdGNoU3RhdGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNUcmFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNWYXJpYWJsZURlY2xhcmF0
aW9uc1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0
ZW1lbnQ6OmlzV2hpbGVMb29wIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbjo6U3RydWN0dXJlRGVmaW5pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uOjpzdHJ1
Y3R1cmVFbGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RydWN0dXJlRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0cnVjdHVyZUVsZW1lbnQ6OlN0cnVjdHVyZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3RydWN0dXJlRWxlbWVudDo6bmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6dmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoQ2FzZTo6YmxvY2spOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6U3dpdGNoU3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6dmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNoU3RhdGVtZW50Ojpzd2l0Y2hDYXNl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJl
c3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhw
cmVzc2lvbjo6VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6VGVybmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VFeHByZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHJhcDo6VHJhcCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzTmFtZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlR5cGU6OmlzVW5uYW1lZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNSZXNvbHZhYmxlVHlwZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpjbG9uZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJl
bmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJlZmVyZW5j
ZTo6VHlwZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVm
ZXJlbmNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVSZWZlcmVu
Y2U6OnR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJl
ZmVyZW5jZTo6cmVzb2x2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlR5cGVSZWZlcmVuY2U6OnNldFJlc29sdmVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjpjbG9uZVR5cGVSZWZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OlVubmFtZWRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc1R5cGVSZWZl
cmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6
OmlzUG9pbnRlclR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5u
YW1lZFR5cGU6OmlzQXJyYXlSZWZlcmVuY2VUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjppc0FycmF5VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6aXNSZWZlcmVuY2VUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVubmFtZWRUeXBlOjp1bmlmeU5vZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5cGU6OnVuaWZ5Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbm5hbWVkVHlwZTo6b3JpZ2luIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZElu
dGVnZXJMaXRlcmFsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZUZvclNlbGVjdGVkVHlwZSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWw6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjp2YWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsOjpjbG9uZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZTo6Y2FuUmVzb2x2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFsdWU6OlZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6VmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjpvcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6
bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbjo6c2VtYW50aWMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbjo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQ6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Ojp2YXJpYWJsZURlY2xhcmF0
aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVS
ZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZVJlZmVyZW5jZTo6VmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVSZWZlcmVuY2U6OnZhcmlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjpzZXRWYXJpYWJsZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpXaGlsZUxvb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTGV4ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmFtZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmludHJpbnNpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OnR5cGVEZWZpbml0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6UHJvZ3JhbTo6c3RydWN0dXJlRGVmaW5pdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlByb2dyYW06OmVudW1lcmF0aW9uRGVmaW5pdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06Om5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQcm9ncmFtOjpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6bmF0aXZl
VHlwZURlY2xhcmF0aW9ucyk6CisKIDIwMTktMDEtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBjdXJy
ZW50IHRleHQgc2VsZWN0aW9uIGFzIHRoZSBmaW5kIHN0cmluZyBvbiBpT1MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJl
bmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QXJyYXlSZWZlcmVuY2VUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzZGM4ODU5NGFkODZkYmU2NWQ0MzFl
ZTgzNmVkNjgzNDNhZDkyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgUmVmZXJlbmNl
VHlwZSB7CitwdWJsaWM6CisgICAgQXJyYXlSZWZlcmVuY2VUeXBlKExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYm
IGVsZW1lbnRUeXBlKQorICAgICAgICA6IFJlZmVyZW5jZVR5cGUoV1RGTW92ZShvcmlnaW4pLCBh
ZGRyZXNzU3BhY2UsIFdURk1vdmUoZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5BcnJheVJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBBcnJheVJlZmVy
ZW5jZVR5cGUoY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJikgPSBkZWxldGU7CisgICAgQXJyYXlS
ZWZlcmVuY2VUeXBlKEFycmF5UmVmZXJlbmNlVHlwZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBcnJheVJlZmVyZW5jZVR5cGU+KExleGVy
OjpUb2tlbihvcmlnaW4oKSksIGFkZHJlc3NTcGFjZSgpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkp
OworICAgIH0KKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlSZWZlcmVu
Y2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODk3OTRiODA4MGFkNTFhNGNiNjY3NjU0MGFiNGVkZDQ4YjRjY2YzZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFycmF5VHlwZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5j
bHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFVubmFtZWRUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5cGUgeworcHVi
bGljOgorICAgIEFycmF5VHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxVbm5h
bWVkVHlwZT4mJiBlbGVtZW50VHlwZSwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgICAgIDog
VW5uYW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fZWxlbWVudFR5cGUoV1RG
TW92ZShlbGVtZW50VHlwZSkpCisgICAgICAgICwgbV9udW1FbGVtZW50cyhudW1FbGVtZW50cykK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+QXJyYXlUeXBlKCkgPSBkZWZhdWx0OworCisg
ICAgQXJyYXlUeXBlKGNvbnN0IEFycmF5VHlwZSYpID0gZGVsZXRlOworICAgIEFycmF5VHlwZShB
cnJheVR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1lZFR5cGUmPihtX2VsZW1lbnRU
eXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5u
YW1lZFR5cGUmPihtX2VsZW1lbnRUeXBlKTsgfQorICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1FbGVtZW50czsgfQorCisgICAgVW5pcXVlUmVmPFVubmFtZWRU
eXBlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxBcnJheVR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIG1fZWxlbWVudFR5cGUt
PmNsb25lKCksIG1fbnVtRWxlbWVudHMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVS
ZWY8VW5uYW1lZFR5cGU+IG1fZWxlbWVudFR5cGU7CisgICAgdW5zaWduZWQgbV9udW1FbGVtZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9VTk5BTUVEX1RZUEUoQXJyYXlUeXBlLCBpc0FycmF5VHlwZSgpKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
ZWIxYWVjMjIxMGI0NzZkMzUwMWYwZTk5NWE3MDU3ODBkNDkwMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiYmIGxlZnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJpZ2h0KQor
ICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbGVmdChX
VEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdodCkpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFzc2lnbm1lbnRFeHByZXNzaW9uKCkgPSBkZWZhdWx0Owor
CisgICAgQXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9
IGRlbGV0ZTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbGVmdCk7IH0KKyAgICBFeHByZXNzaW9uJiBy
aWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3JpZ2h0KTsgfQorCitw
cml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7CisgICAgVW5pcXVlUmVm
PEV4cHJlc3Npb24+IG1fcmlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3NpZ25tZW50RXhw
cmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlv
bkF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMWVkMTEwZjgyODgyMGM5
Y2I2NzU2MjhiOWIyZTQxOWZlMGIzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSA6IHB1YmxpYyBOb2RlIHsKK3B1
YmxpYzoKKyAgICBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQor
ICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+QmFzZUZ1bmN0aW9uQXR0cmlidXRlKCkgPSBkZWZhdWx0OworCisgICAgQmFzZUZ1
bmN0aW9uQXR0cmlidXRlKGNvbnN0IEJhc2VGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOwor
ICAgIEJhc2VGdW5jdGlvbkF0dHJpYnV0ZShCYXNlRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTlkYTI0ZjY0ZjlkNmVkNjA2MDQ2NzRjZWI4NzU2MzRmYjBmZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCYXNlU2VtYW50aWMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK2NsYXNzIEludHJpbnNpY3M7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBG
dW5jdGlvbkRlZmluaXRpb247CitjbGFzcyBVbm5hbWVkVHlwZTsKKworY2xhc3MgQmFzZVNlbWFu
dGljIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIEJhc2VTZW1hbnRpYyhMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5CYXNlU2VtYW50aWMoKSA9IGRlZmF1bHQ7CisKKyAgICBC
YXNlU2VtYW50aWMoY29uc3QgQmFzZVNlbWFudGljJikgPSBkZWxldGU7CisgICAgQmFzZVNlbWFu
dGljKEJhc2VTZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
cHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCA9
IDA7CisKKyAgICBlbnVtIGNsYXNzIFNoYWRlckl0ZW1EaXJlY3Rpb24gOiB1aW50OF90IHsKKyAg
ICAgICAgSW5wdXQsCisgICAgICAgIE91dHB1dAorICAgIH07CisgICAgdmlydHVhbCBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIExleGVy
OjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmxvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJhMTc4NjExMTM5NDRhYjVjYTNmYjE2MjgzMDU2
OTVlMzRmZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhl
ci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RhdGVtZW50cyYmIHN0YXRlbWVudHMpCisg
ICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3N0YXRlbWVu
dHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qmxv
Y2soKSA9IGRlZmF1bHQ7CisKKyAgICBCbG9jayhjb25zdCBCbG9jayYpID0gZGVsZXRlOworICAg
IEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsKKworICAgIFN0YXRlbWVudHMmIHN0YXRlbWVudHMo
KSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KKworICAgIGJvb2wgaXNCbG9jaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBTdGF0ZW1lbnRzIG1fc3Rh
dGVtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQmxvY2ssIGlzQmxvY2soKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjNkOTQ1ZjY0N2EyYzUwNDMx
YjZlMTZmYzRlNzYwY2ZiMGU0NDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBCb29sZWFuTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBCb29sZWFuTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGJvb2wgdmFsdWUp
CisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Qm9vbGVhbkxpdGVyYWwoKSA9
IGRlZmF1bHQ7CisKKyAgICBCb29sZWFuTGl0ZXJhbChjb25zdCBCb29sZWFuTGl0ZXJhbCYpID0g
ZGVsZXRlOworICAgIEJvb2xlYW5MaXRlcmFsKEJvb2xlYW5MaXRlcmFsJiYpID0gZGVmYXVsdDsK
KworICAgIEJvb2xlYW5MaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSA9
IGRlbGV0ZTsKKyAgICBCb29sZWFuTGl0ZXJhbCYgb3BlcmF0b3I9KEJvb2xlYW5MaXRlcmFsJiYp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisKKyAgICBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBCb29sZWFuTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gQm9vbGVhbkxpdGVyYWwoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgbV92YWx1ZSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNT
SU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5MaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnJlYWsu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTY1YzAwZmI2Yzc3MmQwOTAwYzI5NjE1YTEyYTQ5MGEzMTRiYTg5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEJyZWFrLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRl
ICJXSExTTFN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBX
SExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBCcmVhayA6IHB1YmxpYyBTdGF0ZW1l
bnQgeworcHVibGljOgorICAgIEJyZWFrKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAg
OiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5CcmVhaygpID0gZGVmYXVsdDsKKworICAgIEJyZWFrKGNvbnN0IEJyZWFrJikgPSBkZWxldGU7
CisgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0JyZWFrKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChCcmVhaywgaXNCcmVhaygpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlM2M3OGUyOGJkMzc3ODcwOWNmNzNmNWFiYWI5NGFjNzUzZjdi
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMu
aCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCit9IC8vIG5h
bWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYmRlMWQwODRmZDM3NzIxNzJhNGY3ZjUzN2EzMzBmMGExNjEwODUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQnVpbHRJblNlbWFudGljLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQmFzZVNl
bWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVz
cGFjZSBBU1QgeworCitjbGFzcyBCdWlsdEluU2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGlj
IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFZhcmlhYmxlIDogdWludDhfdCB7CisgICAgICAg
IFNWSW5zdGFuY2VJRCwKKyAgICAgICAgU1ZWZXJ0ZXhJRCwKKyAgICAgICAgUFNpemUsCisgICAg
ICAgIFNWUG9zaXRpb24sCisgICAgICAgIFNWSXNGcm9udEZhY2UsCisgICAgICAgIFNWU2FtcGxl
SW5kZXgsCisgICAgICAgIFNWSW5uZXJDb3ZlcmFnZSwKKyAgICAgICAgU1ZUYXJnZXQsCisgICAg
ICAgIFNWRGVwdGgsCisgICAgICAgIFNWQ292ZXJhZ2UsCisgICAgICAgIFNWRGlzcGF0Y2hUaHJl
YWRJRCwKKyAgICAgICAgU1ZHcm91cElELAorICAgICAgICBTVkdyb3VwSW5kZXgsCisgICAgICAg
IFNWR3JvdXBUaHJlYWRJRAorICAgIH07CisKKyAgICBCdWlsdEluU2VtYW50aWMoTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFy
Z2V0SW5kZXggPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogQmFzZVNlbWFudGljKFdURk1vdmUo
b3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQorICAgICAgICAsIG1fdGFy
Z2V0SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgfkJ1aWx0SW5TZW1hbnRpYygpID0gZGVmYXVsdDsKKworICAgIEJ1aWx0SW5TZW1hbnRpYyhj
b25zdCBCdWlsdEluU2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBCdWlsdEluU2VtYW50aWMoQnVp
bHRJblNlbWFudGljJiYpID0gZGVmYXVsdDsKKworICAgIFZhcmlhYmxlIHZhcmlhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV92YXJpYWJsZTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1
aWx0SW5TZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YXJp
YWJsZSA9PSBvdGhlci5tX3ZhcmlhYmxlICYmIG1fdGFyZ2V0SW5kZXggPT0gb3RoZXIubV90YXJn
ZXRJbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQnVpbHRJblNlbWFu
dGljJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKKyAgICB9CisKKyAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUm
LCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2VwdGFi
bGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1bmN0
aW9uRGVmaW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFZhcmlhYmxl
IG1fdmFyaWFibGU7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFyZ2V0SW5kZXg7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHBy
ZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0NmFkYTgyNWE0NGMzOGM5MjVkYzNhNjcxOGU4NWJjYzlm
NWZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNp
bmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBOYW1lZFR5cGU7CisKK2NsYXNzIENhbGxFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworcHVibGljOgorICAgIENhbGxFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdp
biwgU3RyaW5nJiYgbmFtZSwgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBhcmd1bWVu
dHMpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9u
YW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICwgbV9hcmd1bWVudHMoV1RGTW92ZShhcmd1bWVu
dHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5DYWxsRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxl
dGU7CisgICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisg
ICAgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0
dXJuIG1fYXJndW1lbnRzOyB9CisKKyAgICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7
IH0KKworICAgIHZvaWQgc2V0Q2FzdERhdGEoTmFtZWRUeXBlJiBuYW1lZFR5cGUpCisgICAgewor
ICAgICAgICBtX2Nhc3RSZXR1cm5UeXBlID0geyBuYW1lZFR5cGUgfTsKKyAgICB9CisKKyAgICBi
b29sIGlzQ2FzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY2FzdFJldHVyblR5cGUp
OyB9CisgICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOYW1lZFR5cGU+PiYgY2Fz
dFJldHVyblR5cGUoKSB7IHJldHVybiBtX2Nhc3RSZXR1cm5UeXBlOyB9CisgICAgYm9vbCBoYXNP
dmVybG9hZHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX292ZXJsb2Fkcyk7
IH0KKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRl
Y2xhcmF0aW9uPiwgMT4+JiBvdmVybG9hZHMoKSB7IHJldHVybiBtX292ZXJsb2FkczsgfQorICAg
IHZvaWQgc2V0T3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1
bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQorICAgIHsKKyAgICAgICAgYXNzZXJ0
KCFoYXNPdmVybG9hZHMoKSk7CisgICAgICAgIG1fb3ZlcmxvYWRzID0gb3ZlcmxvYWRzOworICAg
IH0KKworICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25E
ZWNsYXJhdGlvbikKKyAgICB7CisgICAgICAgIGFzc2VydCghbV9mdW5jdGlvbik7CisgICAgICAg
IG1fZnVuY3Rpb24gPSAmZnVuY3Rpb25EZWNsYXJhdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2Fy
Z3VtZW50czsKKyAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5j
dGlvbkRlY2xhcmF0aW9uPiwgMT4+IG1fb3ZlcmxvYWRzOworICAgIEZ1bmN0aW9uRGVjbGFyYXRp
b24qIG1fZnVuY3Rpb24geyBudWxscHRyIH07CisgICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxOYW1lZFR5cGU+PiBtX2Nhc3RSZXR1cm5UeXBlIHsgV1RGOjpudWxsb3B0IH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVzc2lvbiwgaXNDYWxsRXhwcmVzc2lvbigpKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcwMmMyODY0
ODhjNGYwZmNiNjM2ODcyNjIwYmNiYjIzOTZiNjFmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgQ29tbWFFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24g
eworcHVibGljOgorICAgIENvbW1hRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZl
Y3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiYgbGlzdCkKKyAgICAgICAgOiBFeHByZXNzaW9u
KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2xpc3QoV1RGTW92ZShsaXN0KSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB+Q29tbWFFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisg
ICAgQ29tbWFFeHByZXNzaW9uKGNvbnN0IENvbW1hRXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAg
IENvbW1hRXhwcmVzc2lvbihDb21tYUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgYm9v
bCBpc0NvbW1hRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIFZlY3RvcjxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+JiBsaXN0KCkgeyByZXR1cm4gbV9saXN0
OyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9saXN0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQ29tbWFFeHByZXNzaW9uLCBpc0NvbW1hRXhwcmVzc2lv
bigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGY2OGMyYTEzMzRkMjllOTEzYmFkNDVmY2M0MWEyNTc5MzFjMDg3YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0
YW50RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJh
bC5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgorI2luY2x1ZGUgIldI
TFNMSW50ZWdlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bGxMaXRlcmFsLmgiCisjaW5j
bHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworLy8gRklYTUU6IG1hY09TIFNpZXJyYSBkb2Vzbid0IHNlZW0gdG8gc3Vw
cG9ydCBwdXR0aW5nIFZhcmlhbnRzIGluc2lkZSBWYXJpYW50cywKKy8vIHNvIHRoaXMgaXMgYSB3
cmFwcGVyIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFwcGVuLiBBcyBzb29uIGFz
IHdlIGRvbid0CisvLyBoYXZlIHRvIHN1cHBvcnQgU2llcnJhLCB0aGlzIGNhbiBiZSBtaWdyYXRl
ZCB0byBhIFZhcmlhbnQgcHJvcGVyLgorY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uIHsKK3B1Ymxp
YzoKKyAgICBDb25zdGFudEV4cHJlc3Npb24oSW50ZWdlckxpdGVyYWwmJiBpbnRlZ2VyTGl0ZXJh
bCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0ZXJhbCkpCisgICAgewor
ICAgIH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYg
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh1bnNp
Z25lZEludGVnZXJMaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNz
aW9uKEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0ZXJhbCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RG
TW92ZShmbG9hdExpdGVyYWwpKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Np
b24oTnVsbExpdGVyYWwmJiBudWxsTGl0ZXJhbCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZShudWxsTGl0ZXJhbCkpCisgICAgeworICAgIH0KKworICAgIENvbnN0YW50RXhwcmVzc2lvbihC
b29sZWFuTGl0ZXJhbCYmIGJvb2xlYW5MaXRlcmFsKQorICAgICAgICA6IG1fdmFyaWFudChXVEZN
b3ZlKGJvb2xlYW5MaXRlcmFsKSkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RhbnRFeHByZXNz
aW9uKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiYgY29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpCisgICAgICAgIDogbV92YXJp
YW50KFdURk1vdmUoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2Up
KQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24oY29uc3QgQ29uc3RhbnRF
eHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgQ29uc3RhbnRFeHByZXNzaW9uKENvbnN0YW50RXhw
cmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBDb25zdGFudEV4cHJlc3Npb24mIG9wZXJhdG9y
PShjb25zdCBDb25zdGFudEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBDb25zdGFudEV4cHJl
c3Npb24mIG9wZXJhdG9yPShDb25zdGFudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAg
SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpKTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PEludGVnZXJMaXRlcmFsPihtX3ZhcmlhbnQpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQoVCYmIHQpCisgICAgeworICAgICAg
ICBXVEY6OnZpc2l0KFdURk1vdmUodCksIG1fdmFyaWFudCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCB2aXNpdChUJiYgdCkgY29uc3QKKyAgICB7CisgICAgICAgIFdU
Rjo6dmlzaXQoV1RGTW92ZSh0KSwgbV92YXJpYW50KTsKKyAgICB9CisKKyAgICBDb25zdGFudEV4
cHJlc3Npb24gY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgSW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KSAtPiBDb25zdGFudEV4cHJlc3Npb24geworICAgICAgICAgICAgcmV0dXJuIGludGVnZXJMaXRl
cmFsLmNsb25lKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFs
JiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Npb24geworICAgICAg
ICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY2xvbmUoKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IEZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Np
b24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbC5jbG9uZSgpOworICAgICAgICB9
LCBbJl0oY29uc3QgTnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSAtPiBDb25zdGFudEV4cHJlc3Np
b24geworICAgICAgICAgICAgcmV0dXJuIG51bGxMaXRlcmFsLmNsb25lKCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIC0+IENvbnN0YW50RXhw
cmVzc2lvbiB7CisgICAgICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVyYWwuY2xvbmUoKTsKKyAg
ICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkgLT4g
Q29uc3RhbnRFeHByZXNzaW9uIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zdGFudEV4cHJlc3Np
b25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5jbG9uZSgpOworICAgICAgICB9KSwgbV92YXJp
YW50KTsKKyAgICB9CisKKyAgICBib29sIG1hdGNoZXMoY29uc3QgQ29uc3RhbnRFeHByZXNzaW9u
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKKyAg
ICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICB2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShj
b25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKKyAgICAgICAgICAgIHZh
bHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICB9LCBbJl0oY29u
c3QgRmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZmxv
YXRMaXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBOdWxsTGl0ZXJhbCYpIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TnVsbExpdGVyYWw+
KG90aGVyLm1fdmFyaWFudCk7CisgICAgICAgIH0sIFsmXShjb25zdCBCb29sZWFuTGl0ZXJhbCYg
Ym9vbGVhbkxpdGVyYWwpIHsKKyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEJvb2xlYW5MaXRlcmFsPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgb3RoZXJCb29sZWFuTGl0ZXJhbCA9IFdURjo6Z2V0PEJvb2xlYW5MaXRlcmFsPihv
dGhlci5tX3ZhcmlhbnQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJvb2xlYW5MaXRlcmFs
LnZhbHVlKCkgPT0gb3RoZXJCb29sZWFuTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0sIFsmXShjb25z
dCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYgY29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpIHsKKyAgICAgICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlPihvdGhlci5tX3ZhcmlhbnQpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0
byYgb3RoZXJNZW1iZXJSZWZlcmVuY2UgPSBXVEY6OmdldDxDb25zdGFudEV4cHJlc3Npb25FbnVt
ZXJhdGlvbk1lbWJlclJlZmVyZW5jZT4ob3RoZXIubV92YXJpYW50KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5l
bnVtZXJhdGlvbk1lbWJlcigpID09IG90aGVyTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVt
YmVyKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxz
ZTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gKnJlc3VsdDsKKworICAgICAgICBvdGhlci52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShj
b25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHZhbHVlID09IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7CisgICAgICAgIH0sIFsmXShjb25z
dCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSB2YWx1ZSA9PSB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7
CisgICAgICAgIH0sIFsmXShjb25zdCBGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgeworICAg
ICAgICAgICAgcmVzdWx0ID0gdmFsdWUgPT0gZmxvYXRMaXRlcmFsLnZhbHVlKCk7CisgICAgICAg
IH0sIFsmXShjb25zdCBOdWxsTGl0ZXJhbCYpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNl
OworICAgICAgICB9LCBbJl0oY29uc3QgQm9vbGVhbkxpdGVyYWwmKSB7CisgICAgICAgICAgICBy
ZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7
CisgICAgICAgIH0pKTsKKworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
ICpyZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhcmlhbnQ8CisgICAgICAgIEludGVn
ZXJMaXRlcmFsLAorICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAorICAgICAgICBGbG9h
dExpdGVyYWwsCisgICAgICAgIE51bGxMaXRlcmFsLAorICAgICAgICBCb29sZWFuTGl0ZXJhbCwK
KyAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAg
ICAgICAgPiBtX3ZhcmlhbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhw
cmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg1N2Q5NDcy
ODViOTY3YWQxMWQ5MTZlMGVlMDJmYmE1ZjE1MGQwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TExleGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNz
IEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKK2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyOworCitjbGFz
cyBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSA6IHB1YmxpYyBF
eHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1l
bWJlclJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIGxlZnQsIFN0cmlu
ZyYmIHJpZ2h0KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgICAg
ICAsIG1fbGVmdChXVEZNb3ZlKGxlZnQpKQorICAgICAgICAsIG1fcmlnaHQoV1RGTW92ZShyaWdo
dCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoY29uc3QgQ29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmKSA9IGRlZmF1bHQ7CisgICAgQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJikgPSBkZWZhdWx0OworCisgICAgQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIG9wZXJhdG9yPShjb25zdCBDb25z
dGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYpID0gZGVsZXRlOworICAg
IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBvcGVyYXRvcj0o
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmJikgPSBkZWZhdWx0
OworCisgICAgY29uc3QgU3RyaW5nJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Cisg
ICAgY29uc3QgU3RyaW5nJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKworICAg
IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlIGNsb25lKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29uc3RhbnRFeHByZXNzaW9uRW51bWVy
YXRpb25NZW1iZXJSZWZlcmVuY2UoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgU3RyaW5nKG1fbGVm
dCksIFN0cmluZyhtX3JpZ2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVtYmVy
ID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247CisgICAgfQorCisgICAg
RW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgIH0KKworICAg
IEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJl
ciogZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW51
bWVyYXRpb25NZW1iZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhdGlvbk1lbWJlcihF
bnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRpb25N
ZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQorICAgIHsKKyAgICAgICAgbV9lbnVtZXJhdGlvbkRl
ZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgICAgICBtX2VudW1lcmF0aW9u
TWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJp
bmcgbV9sZWZ0OworICAgIFN0cmluZyBtX3JpZ2h0OworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlv
biogbV9lbnVtZXJhdGlvbkRlZmluaXRpb24geyBudWxscHRyIH07CisgICAgRW51bWVyYXRpb25N
ZW1iZXIqIG1fZW51bWVyYXRpb25NZW1iZXIgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI5
ZTdiNmE2OWFkMWU3ZTAzMjA2OGRlZWI5NDQ4MjZhYmY3Y2UxNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnRpbnVlLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBDb250aW51ZSA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVi
bGljOgorICAgIENvbnRpbnVlKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAgICAgOiBTdGF0
ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db250
aW51ZSgpID0gZGVmYXVsdDsKKworICAgIENvbnRpbnVlKGNvbnN0IENvbnRpbnVlJikgPSBkZWxl
dGU7CisgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0Nv
bnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorfTsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ1OTEyYWIzOGY3
ZjhhYzIxNDRmYWZiN2M0ZjJmYTU4NGE5NDVhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lv
bi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBE
ZXJlZmVyZW5jZUV4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4
cHJlc3Npb24+JiYgcG9pbnRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2lu
KSkKKyAgICAgICAgLCBtX3BvaW50ZXIoV1RGTW92ZShwb2ludGVyKSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAg
RGVyZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IERlcmVmZXJlbmNlRXhwcmVzc2lvbiYpID0gZGVs
ZXRlOworICAgIERlcmVmZXJlbmNlRXhwcmVzc2lvbihEZXJlZmVyZW5jZUV4cHJlc3Npb24mJikg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIHBvaW50ZXIoKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wb2ludGVyKTsgfQorCitwcml2YXRlOgor
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3BvaW50ZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRG9XaGlsZUxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTERvV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0NzgzNzc1ZTMzZTFjNzc0OWJi
YjNkNTNjZDIyZjAzNzczOTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgKQEAgLTAsMCArMSw3MyBA
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
Y2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsK
KworY2xhc3MgRG9XaGlsZUxvb3AgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAgICBE
b1doaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYg
Ym9keSwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgY29uZGl0aW9uYWwpCisgICAgICAgIDogU3Rh
dGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkK
KyAgICAgICAgLCBtX2NvbmRpdGlvbmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5Eb1doaWxlTG9vcCgpID0gZGVmYXVsdDsKKworICAgIERvV2hp
bGVMb29wKGNvbnN0IERvV2hpbGVMb29wJikgPSBkZWxldGU7CisgICAgRG9XaGlsZUxvb3AoRG9X
aGlsZUxvb3AmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0RvV2hpbGVMb29wKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQorICAgIEV4cHJlc3Npb24mIGNv
bmRpdGlvbmFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fY29uZGl0aW9u
YWwpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OworICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChEb1doaWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvdEV4cHJl
c3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMmMxOWRiYjJkYmVjYTM4NDlhMmI0ZDgwMTg4ZGRlZGViNzJm
MGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRG90RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIERvdEV4cHJlc3Npb24gOiBwdWJs
aWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBEb3RFeHByZXNzaW9u
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgYmFzZSwgU3Ry
aW5nJiYgZmllbGROYW1lKQorICAgICAgICA6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihXVEZN
b3ZlKG9yaWdpbiksIFdURk1vdmUoYmFzZSkpCisgICAgICAgICwgbV9maWVsZE5hbWUoV1RGTW92
ZShmaWVsZE5hbWUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Eb3RFeHByZXNzaW9u
KCkgPSBkZWZhdWx0OworCisgICAgRG90RXhwcmVzc2lvbihjb25zdCBEb3RFeHByZXNzaW9uJikg
PSBkZWxldGU7CisgICAgRG90RXhwcmVzc2lvbihEb3RFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsK
KworICAgIGJvb2wgaXNEb3RFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgU3RyaW5nIGdldEZ1bmN0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm9wZXJhdG9yLiVzIiwgbV9maWVsZE5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgU3RyaW5nIHNldEZ1bmN0aW9uTmFtZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm9w
ZXJhdG9yLiVzPSIsIG1fZmllbGROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKworICAgIFN0
cmluZyBhbmRGdW5jdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJvcGVyYXRvciYuJXMiLCBtX2ZpZWxkTmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICB9CisKKyAgICBTdHJpbmcmIGZpZWxkTmFtZSgpIHsgcmV0dXJuIG1fZmllbGRO
YW1lOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZmllbGROYW1lOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oRG90RXhwcmVzc2lvbiwgaXNEb3RFeHByZXNzaW9uKCkpCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZm
ZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0ZDA4M2E1YzA2ODBiNzU0OTNiZjQzOThkNmIzNTNlNmQ5Zjc1OTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRl
bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWZm
ZWN0ZnVsRXhwcmVzc2lvbikKKyAgICAgICAgOiBTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuKGVmZmVj
dGZ1bEV4cHJlc3Npb24tPm9yaWdpbigpKSkKKyAgICAgICAgLCBtX2VmZmVjdGZ1bEV4cHJlc3Np
b24oV1RGTW92ZShlZmZlY3RmdWxFeHByZXNzaW9uKSkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCYpID0gZGVsZXRlOworICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24oKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFeHByZXNzaW9uJj4obV9lZmZlY3RmdWxFeHByZXNzaW9uKTsgfQorCitwcml2YXRlOgor
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJlc3Npb247Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQsIGlzRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25E
ZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUwODlhMWFiN2QxZjBmYTE4NDBiZmExY2IxYWNiZjcz
ODRiZGMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qg
eworCitjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKK3B1
YmxpYzoKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBT
dHJpbmcmJiBuYW1lLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiYmIHR5cGUpCisg
ICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShuYW1lKSkKKyAgICAg
ICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+
RW51bWVyYXRpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRW51bWVyYXRpb25EZWZp
bml0aW9uKGNvbnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEVudW1l
cmF0aW9uRGVmaW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisg
ICAgYm9vbCBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbV90eXBlID8gJnN0
YXRpY19jYXN0PFVubmFtZWRUeXBlJj4oKm1fdHlwZSkgOiBudWxscHRyOyB9CisKKyAgICBib29s
IGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEVudW1l
cmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgcmV0dXJuICFyZXN1bHQu
aXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJlciogbWVtYmVyQnlOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX21l
bWJlcnMuZmluZChuYW1lKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fbWVtYmVycy5lbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlLmdldCgpOworICAgIH0KKworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PEVudW1lcmF0aW9uTWVtYmVyPj4gZW51bWVyYXRpb25NZW1iZXJzKCkKKyAgICB7CisgICAgICAg
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEVudW1lcmF0aW9uTWVtYmVyPj4gcmVzdWx0
OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX21lbWJlcnMpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCpwYWlyLnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBlPj4gbV90eXBlOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBt
X21lbWJlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShFbnVtZXJhdGlvbkRlZmluaXRpb24sIGlz
RW51bWVyYXRpb25EZWZpbml0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9u
TWVtYmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2MWE3MjJiNjZmNGQ4ZjBkNzA2NzExNDM5YTAxODMzZWQ0
MDRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xh
c3MgRW51bWVyYXRpb25NZW1iZXIgOiBwdWJsaWMgTm9kZSB7CitwdWJsaWM6CisgICAgRW51bWVy
YXRpb25NZW1iZXIoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25h
bDxDb25zdGFudEV4cHJlc3Npb24+JiYgdmFsdWUgPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDog
bV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUp
KQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfkVudW1lcmF0aW9uTWVtYmVyKCkgPSBkZWZhdWx0OworCisgICAgRW51bWVyYXRp
b25NZW1iZXIoY29uc3QgRW51bWVyYXRpb25NZW1iZXImKSA9IGRlbGV0ZTsKKyAgICBFbnVtZXJh
dGlvbk1lbWJlcihFbnVtZXJhdGlvbk1lbWJlciYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBM
ZXhlcjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgU3Ry
aW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHBy
ZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIHNldFZhbHVl
KENvbnN0YW50RXhwcmVzc2lvbiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Zh
bHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IFdURk1vdmUodmFsdWUpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBP
cHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+IG1fdmFsdWU7Cit9OworCit1c2luZyBFbnVtZXJh
dGlvbk1lbWJlcnMgPSBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+OworCit9IC8vIG5hbWVzcGFj
ZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTY0MzAzODAyYjFiNWE0MTk3ZDk5MTZjMWExNTIw
YjIwZjYwY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBFbnVtZXJhdGlvbk1l
bWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9y
aWdpbikpCisgICAgICAgICwgbV9lbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlcikK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkg
PSBkZWZhdWx0OworCisgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bChFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0Vu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcigpIHsgcmV0dXJuIG1f
ZW51bWVyYXRpb25NZW1iZXI7IH0KKworcHJpdmF0ZToKKyAgICBFbnVtZXJhdGlvbk1lbWJlciYg
bV9lbnVtZXJhdGlvbk1lbWJlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCwgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoKSkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHBy
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
eHByZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQxMzAwZGJlYWM0YzlmMjYyNzg4OTkwODAxMGMxYTg1
MzUyMzcyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xM
ZXhlci5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRXhwcmVzc2lv
biA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4m
JiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5FeHByZXNzaW9uKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGlj
aXQgRXhwcmVzc2lvbihjb25zdCBFeHByZXNzaW9uJikgPSBkZWZhdWx0OworICAgIEV4cHJlc3Np
b24oRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0o
Y29uc3QgRXhwcmVzc2lvbiYpID0gZGVmYXVsdDsKKyAgICBFeHByZXNzaW9uJiBvcGVyYXRvcj0o
RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBc3Np
Z25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRG90RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRleEV4cHJlc3Npb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsRXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTG9naWNh
bE5vdEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01ha2VQb2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBt
X29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2RlZmluZSBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVG9WYWx1ZVR5cGVOYW1lLCBw
cmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24pIHsgcmV0dXJuIGV4cHJl
c3Npb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmFsbHRocm91Z2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmJjZjQxNDU0MDVjYjVjZjUwMjYw
YjdkZGQ4NmJhY2Y5NmI2ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmFsbHRocm91Z2guaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K2NsYXNzIEZhbGx0aHJvdWdoIDogcHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgRmFs
bHRocm91Z2goTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQorICAgICAgICA6IFN0YXRlbWVudChXVEZN
b3ZlKG9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkZhbGx0aHJvdWdoKCkg
PSBkZWZhdWx0OworCisgICAgRmFsbHRocm91Z2goY29uc3QgRmFsbHRocm91Z2gmKSA9IGRlbGV0
ZTsKKyAgICBGYWxsdGhyb3VnaChGYWxsdGhyb3VnaCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29s
IGlzRmFsbHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZh
dGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBpc0ZhbGx0aHJvdWdoKCkpCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRmxvYXRMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWZiMTNmZWNhNWIyNDQ4
YzQzNDFiOGU3MzcwZDVmZGRiMTE4NWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsLmgKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRmxvYXRMaXRl
cmFsVHlwZS5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRmxvYXRM
aXRlcmFsIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIEZsb2F0TGl0ZXJhbChM
ZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24o
TGV4ZXI6OlRva2VuKG9yaWdpbikpCisgICAgICAgICwgbV90eXBlKFdURk1vdmUob3JpZ2luKSwg
dmFsdWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+RmxvYXRMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgRmxvYXRMaXRlcmFsKGNvbnN0
IEZsb2F0TGl0ZXJhbCYpID0gZGVsZXRlOworICAgIEZsb2F0TGl0ZXJhbChGbG9hdExpdGVyYWwm
JikgPSBkZWZhdWx0OworCisgICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRvcj0oY29uc3QgRmxvYXRM
aXRlcmFsJikgPSBkZWxldGU7CisgICAgRmxvYXRMaXRlcmFsJiBvcGVyYXRvcj0oRmxvYXRMaXRl
cmFsJiYpID0gZGVmYXVsdDsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVy
biBtX3R5cGU7IH0KKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KworICAgIGJvb2wgaXNGbG9hdExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBGbG9hdExpdGVyYWwgY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgRmxv
YXRMaXRlcmFsIHJlc3VsdChMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBtX3ZhbHVlKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBlKCkpCisgICAgICAgICAgICByZXN1bHQu
bV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUoKS0+Y2xvbmUoKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIEZsb2F0TGl0ZXJh
bFR5cGUgbV90eXBlOworICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihG
bG9hdExpdGVyYWwsIGlzRmxvYXRMaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9h
dExpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjgwOTMyZjY1OTljZmRmZGQwYzY0MTNjMzEx
NDU3N2FiNWI3MGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTEZsb2F0
TGl0ZXJhbFR5cGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFR5
cGVSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworRmxvYXRMaXRlcmFsVHlwZTo6RmxvYXRMaXRlcmFsVHlw
ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1
ZSkKKyAgICAsIG1fcHJlZmVycmVkVHlwZShtYWtlVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+KFdU
Rk1vdmUob3JpZ2luKSwgU3RyaW5nKCJmbG9hdCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpLCBUeXBlQXJndW1lbnRzKCkpKQoreworfQorCitGbG9hdExpdGVyYWxUeXBlOjp+RmxvYXRM
aXRlcmFsVHlwZSgpID0gZGVmYXVsdDsKKworYm9vbCBGbG9hdExpdGVyYWxUeXBlOjpjYW5SZXNv
bHZlKGNvbnN0IFR5cGUmKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcwor
ICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBGbG9hdExpdGVyYWxUeXBlOjpjb252ZXJz
aW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNh
NDQzMjY4MzhkNTA5ODQzM2I0ZGUwODQ0ZDNlYmMzZjU2ZGZlOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJh
bFR5cGUuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2Ug
QVNUIHsKKworY2xhc3MgVHlwZVJlZmVyZW5jZTsKKworY2xhc3MgRmxvYXRMaXRlcmFsVHlwZSA6
IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CitwdWJsaWM6CisgICAgRmxvYXRMaXRlcmFsVHlwZShM
ZXhlcjo6VG9rZW4mJiBvcmlnaW4sIGZsb2F0IHZhbHVlKTsKKworICAgIHZpcnR1YWwgfkZsb2F0
TGl0ZXJhbFR5cGUoKTsKKworICAgIEZsb2F0TGl0ZXJhbFR5cGUoY29uc3QgRmxvYXRMaXRlcmFs
VHlwZSYpID0gZGVsZXRlOworICAgIEZsb2F0TGl0ZXJhbFR5cGUoRmxvYXRMaXRlcmFsVHlwZSYm
KSA9IGRlZmF1bHQ7CisKKyAgICBGbG9hdExpdGVyYWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgRmxv
YXRMaXRlcmFsVHlwZSYpID0gZGVsZXRlOworICAgIEZsb2F0TGl0ZXJhbFR5cGUmIG9wZXJhdG9y
PShGbG9hdExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNGbG9hdExpdGVy
YWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgVHlwZVJlZmVy
ZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVSZWZlcmVuY2Um
PihtX3ByZWZlcnJlZFR5cGUpOyB9CisKKyAgICBib29sIGNhblJlc29sdmUoY29uc3QgVHlwZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFt
ZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworICAgIC8vIFRo
aXMgaXMgYSB1bmlxdWVfcHRyIHRvIHJlc29sdmUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdl
ZW4KKyAgICAvLyBDb25zdGFudEV4cHJlc3Npb24gLT4gTGl0ZXJhbFR5cGUgLT4gVHlwZVJlZmVy
ZW5jZSAtPiBUeXBlQXJndW1lbnRzIC0+IENvbnN0YW50RXhwcmVzc2lvbgorICAgIFVuaXF1ZVJl
ZjxUeXBlUmVmZXJlbmNlPiBtX3ByZWZlcnJlZFR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVTT0xWQUJMRV9U
WVBFKEZsb2F0TGl0ZXJhbFR5cGUsIGlzRmxvYXRMaXRlcmFsVHlwZSgpKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZv
ckxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZv
ckxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MTNlZGM5MmRmN2I1MjQ2NzhjYjhhODEzYjM1ZGM2NDcxZGY0
NmQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRm9yTG9vcC5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQu
aCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCisjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgRm9yTG9v
cCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAgIEZvckxvb3AoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4+JiYgaW5pdGlhbGl6YXRpb24sIE9wdGlvbmFsPFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPj4mJiBjb25kaXRpb24sIE9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mJiBp
bmNyZW1lbnQsIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+JiYgYm9keSkKKyAgICAgICAgOiBTdGF0ZW1l
bnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1faW5pdGlhbGl6YXRpb24oV1RGTW92ZShp
bml0aWFsaXphdGlvbikpCisgICAgICAgICwgbV9jb25kaXRpb24oV1RGTW92ZShjb25kaXRpb24p
KQorICAgICAgICAsIG1faW5jcmVtZW50KFdURk1vdmUoaW5jcmVtZW50KSkKKyAgICAgICAgLCBt
X2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Rm9yTG9v
cCgpCisgICAgeworICAgIH0KKworICAgIEZvckxvb3AoY29uc3QgRm9yTG9vcCYpID0gZGVsZXRl
OworICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzRm9yTG9v
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFZhcmlhbnQ8VmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4mIGluaXRpYWxp
emF0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsaXphdGlvbjsgfQorICAgIEV4cHJlc3Npb24qIGNv
bmRpdGlvbigpIHsgcmV0dXJuIG1fY29uZGl0aW9uID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PigqbV9jb25kaXRpb24pIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgp
IHsgcmV0dXJuIG1faW5jcmVtZW50ID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24mPigqbV9pbmNy
ZW1lbnQpIDogbnVsbHB0cjsgfQorICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KKworcHJpdmF0ZToKKyAgICBWYXJpYW50PFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5p
dGlhbGl6YXRpb247CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2NvbmRp
dGlvbjsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5jcmVtZW50Owor
ICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFT
VAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRm9y
TG9vcCwgaXNGb3JMb29wKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uQXR0cmlidXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzJiMGIwYzRmNjIwN2Y0OTcwODc1MDMwMmY3OTk0ZWQ1YzdkODg1OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK3VzaW5nIEZ1bmN0aW9uQXR0cmlidXRlID0g
VmFyaWFudDxOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU+OwordXNpbmcgQXR0cmlidXRlQmxv
Y2sgPSBWZWN0b3I8RnVuY3Rpb25BdHRyaWJ1dGU+OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5MGJiYjgwYzMwYjM1OTE2YWMyYWJjMzg1YjNiZDU5NGQzYzY3MmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9k
ZS5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFVubmFtZWRU
eXBlLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAg
IGVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgVmVydGV4LAor
ICAgICAgICBGcmFnbWVudCwKKyAgICAgICAgQ29tcHV0ZSwKKyAgICAgICAgLy8gRklYTUU6IEFk
ZCBhbiBlbnRyeSBwb2ludCB0eXBlIGZvciB0ZXN0aW5nCisgICAgfTsKKworICAgIEZ1bmN0aW9u
RGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJp
YnV0ZUJsb2NrLCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFVuaXF1
ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0
aW9ucyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBib29sIGlz
T3BlcmF0b3IpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAs
IG1fYXR0cmlidXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVCbG9jaykpCisgICAgICAgICwgbV9l
bnRyeVBvaW50VHlwZShlbnRyeVBvaW50VHlwZSkKKyAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0
eXBlKSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICAgICAgLCBtX3NlbWFudGljKFdURk1vdmUo
c2VtYW50aWMpKQorICAgICAgICAsIG1faXNPcGVyYXRvcihXVEZNb3ZlKGlzT3BlcmF0b3IpKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5GdW5jdGlvbkRlY2xhcmF0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihjb25zdCBGdW5jdGlvbkRlY2xhcmF0aW9u
JikgPSBkZWxldGU7CisgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRlY2xhcmF0aW9u
JiYpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmN0aW9uRGVmaW5pdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBdHRyaWJ1dGVC
bG9jayYgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJsb2NrOyB9CisgICAg
Y29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZW50cnlQb2ludFR5cGU7IH0KKyAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVubmFtZWRUeXBlJj4obV90eXBlKTsg
fQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5uYW1lZFR5
cGUmPihtX3R5cGUpOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CisgICAgYm9vbCBpc0Nhc3QoKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gIm9w
ZXJhdG9yIGNhc3QiOyB9CisgICAgY29uc3QgVmFyaWFibGVEZWNsYXJhdGlvbnMmIHBhcmFtZXRl
cnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICBWYXJpYWJsZURlY2xhcmF0
aW9ucyYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIE9wdGlvbmFs
PFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CisgICAgYm9vbCBp
c09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09wZXJhdG9yOyB9CisKK3ByaXZhdGU6Cisg
ICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOworICAgIEF0dHJpYnV0ZUJsb2NrIG1fYXR0cmlidXRl
QmxvY2s7CisgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQb2ludFR5cGU7Cisg
ICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAg
ICBWYXJpYWJsZURlY2xhcmF0aW9ucyBtX3BhcmFtZXRlcnM7CisgICAgT3B0aW9uYWw8U2VtYW50
aWM+IG1fc2VtYW50aWM7CisgICAgYm9vbCBtX2lzT3BlcmF0b3I7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9GVU5DVElPTl9ERUNMQVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlw
ZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0g
XAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1OGI2YTdmOTg5NjVlMjA2NWMzNDJiZTQ0
NzhlNWUwYTZlYTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK2NsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRl
Y2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRlZmluaXRpb24oRnVuY3Rpb25EZWNs
YXJhdGlvbiYmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIEJsb2NrJiYgYmxvY2ssIGJvb2wgcmVzdHJp
Y3RlZCkKKyAgICAgICAgOiBGdW5jdGlvbkRlY2xhcmF0aW9uKFdURk1vdmUoZnVuY3Rpb25EZWNs
YXJhdGlvbikpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkKKyAgICAgICAgLCBt
X3Jlc3RyaWN0ZWQocmVzdHJpY3RlZCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RnVu
Y3Rpb25EZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgRnVuY3Rpb25EZWZpbml0aW9uKGNv
bnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOworICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bihGdW5jdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc0Z1bmN0aW9u
RGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEJsb2Nr
JiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KKyAgICBib29sIHJlc3RyaWN0ZWQoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3RyaWN0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayBtX2Jsb2Nr
OworICAgIGJvb2wgbV9yZXN0cmljdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30K
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9O
KEZ1bmN0aW9uRGVmaW5pdGlvbiwgaXNGdW5jdGlvbkRlZmluaXRpb24oKSkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJ
ZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMSWZTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjdjZjRiMzdhZjZkZjBiZDk0ZWEyNzliNDgw
YjEzYWJlY2IzMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
V0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldI
TFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1l
c3BhY2UgQVNUIHsKKworY2xhc3MgSWZTdGF0ZW1lbnQgOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1
YmxpYzoKKyAgICBJZlN0YXRlbWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHksIE9w
dGlvbmFsPFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+PiYmIGVsc2VCb2R5KQorICAgICAgICA6IFN0YXRl
bWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9jb25kaXRpb25hbChXVEZNb3ZlKGNv
bmRpdGlvbmFsKSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBt
X2Vsc2VCb2R5KFdURk1vdmUoZWxzZUJvZHkpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5JZlN0YXRlbWVudCgpID0gZGVmYXVsdDsKKworICAgIElmU3RhdGVtZW50KGNvbnN0IElmU3Rh
dGVtZW50JikgPSBkZWxldGU7CisgICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikgPSBkZWZh
dWx0OworCisgICAgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFeHByZXNzaW9uJj4obV9jb25kaXRpb25hbCk7IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHko
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPihtX2JvZHkpOyB9CisgICAgU3RhdGVt
ZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkgPyAmc3RhdGljX2Nhc3Q8U3RhdGVt
ZW50Jj4oKm1fZWxzZUJvZHkpIDogbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJl
ZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOworICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1f
Ym9keTsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8U3RhdGVtZW50Pj4gbV9lbHNlQm9keTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9TVEFURU1FTlQoSWZTdGF0ZW1lbnQsIGlzSWZTdGF0ZW1lbnQoKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiODk3NzQwZjNmMmZkZjRj
M2RjYzZiZTg2ZWYzYTBjMmQ3YTQ4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaApAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFz
cyBJbmRleEV4cHJlc3Npb24gOiBwdWJsaWMgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBJbmRleEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVS
ZWY8RXhwcmVzc2lvbj4mJiBiYXNlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBpbmRleCkKKyAg
ICAgICAgOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3Zl
KGJhc2UpKQorICAgICAgICAsIG1faW5kZXgoV1RGTW92ZShpbmRleCkpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgfkluZGV4RXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIEluZGV4
RXhwcmVzc2lvbihjb25zdCBJbmRleEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBJbmRleEV4
cHJlc3Npb24oSW5kZXhFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNJbmRl
eEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTdHJp
bmcgZ2V0RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBTdHJpbmcoIm9wZXJhdG9yW10iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICB9CisKKyAgICBTdHJpbmcgc2V0RnVuY3Rpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJpbmcoIm9wZXJhdG9yJltdIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgfQorCisgICAgU3RyaW5nIGFuZEZ1bmN0aW9uTmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nKCJvcGVyYXRvcltdPSIsIFN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0KKworICAgIEV4cHJlc3Npb24mIGlu
ZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2luZGV4
KTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2luZGV4OworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oSW5kZXhFeHByZXNzaW9uLCBpc0luZGV4RXhwcmVzc2lvbigpKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2Y2ODVh
NTI1MGQ1ODdiYzJjNzY4ZjA1ZGVmNjM4NzE3NTFlMGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwu
Y3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xU
eXBlUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2ludDY0X3QgSW50ZWdlckxpdGVyYWw6OnZhbHVlRm9y
U2VsZWN0ZWRUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlLnJlc29sdmVkVHlwZSgp
KTsKKyAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5jZT4oKm1f
dHlwZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0PE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgIHJl
dHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tSW50ZWdlcigpKG1fdmFs
dWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdl
ckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5YWViZGNkYmVhOGNiMjgzYzIxZWUyYTFm
N2M0ZGQ5YjhkNjNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBl
LmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBJbnRlZ2VyTGl0ZXJh
bCA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBJbnRlZ2VyTGl0ZXJhbChMZXhl
cjo6VG9rZW4mJiBvcmlnaW4sIGludCB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKExleGVy
OjpUb2tlbihvcmlnaW4pKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKG9yaWdpbiksIHZhbHVl
KQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
fkludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgSW50ZWdlckxpdGVyYWwoY29uc3Qg
SW50ZWdlckxpdGVyYWwmKSA9IGRlbGV0ZTsKKyAgICBJbnRlZ2VyTGl0ZXJhbChJbnRlZ2VyTGl0
ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRlZ2VyTGl0ZXJhbCYgb3BlcmF0b3I9KGNvbnN0
IEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7CisgICAgSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9y
PShJbnRlZ2VyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRlZ2VyTGl0ZXJhbFR5cGUm
IHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisKKyAgICBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBJbnRlZ2VyTGl0ZXJhbCByZXN1bHQoTGV4ZXI6OlRva2VuKG9yaWdpbigp
KSwgbV92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1bHQubV90eXBlLnJlc29sdmVkVHlwZSgpKQor
ICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZS5yZXNvbHZlKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRU
eXBlKCktPmNsb25lKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlu
dDY0X3QgdmFsdWVGb3JTZWxlY3RlZFR5cGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJbnRl
Z2VyTGl0ZXJhbFR5cGUgbV90eXBlOworICAgIGludCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVyYWwoKSkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ1MWVlZjViZGQx
YzFmYmRiNmQwYjE3MTBmMjhkMmM1MWJiODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitJbnRlZ2VyTGl0ZXJhbFR5cGU6OkludGVnZXJMaXRlcmFsVHlwZShMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIGludCB2YWx1ZSkKKyAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgLCBtX3By
ZWZlcnJlZFR5cGUobWFrZVVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPihXVEZNb3ZlKG9yaWdpbiks
IFN0cmluZygiaW50IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFR5cGVBcmd1bWVu
dHMoKSkpCit7Cit9CisKK0ludGVnZXJMaXRlcmFsVHlwZTo6fkludGVnZXJMaXRlcmFsVHlwZSgp
ID0gZGVmYXVsdDsKKworYm9vbCBJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3Qg
VHlwZSYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3Vuc2lnbmVkIEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3Qo
Y29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTdkMGVj
NTg3NDE1ZDI1NDIzZmVkODkwZmJlYWMxYmI4MWFmMDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxU
eXBlLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFT
VCB7CisKK2NsYXNzIFR5cGVSZWZlcmVuY2U7CisKK2NsYXNzIEludGVnZXJMaXRlcmFsVHlwZSA6
IHB1YmxpYyBSZXNvbHZhYmxlVHlwZSB7CitwdWJsaWM6CisgICAgSW50ZWdlckxpdGVyYWxUeXBl
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgaW50IHZhbHVlKTsKKworICAgIHZpcnR1YWwgfkludGVn
ZXJMaXRlcmFsVHlwZSgpOworCisgICAgSW50ZWdlckxpdGVyYWxUeXBlKGNvbnN0IEludGVnZXJM
aXRlcmFsVHlwZSYpID0gZGVsZXRlOworICAgIEludGVnZXJMaXRlcmFsVHlwZShJbnRlZ2VyTGl0
ZXJhbFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgSW50ZWdlckxpdGVyYWxUeXBlJiBvcGVyYXRv
cj0oY29uc3QgSW50ZWdlckxpdGVyYWxUeXBlJikgPSBkZWxldGU7CisgICAgSW50ZWdlckxpdGVy
YWxUeXBlJiBvcGVyYXRvcj0oSW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAg
IGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSk7IH0KKworICAgIGJvb2wgY2Fu
UmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29udmVy
c2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGludCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV92
YWx1ZTsKKyAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBiZXR3ZWVuCisgICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxU
eXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Np
b24KKyAgICBVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1JFU09MVkFCTEVfVFlQRShJbnRlZ2VyTGl0ZXJhbFR5cGUsIGlzSW50ZWdlckxpdGVyYWxU
eXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQzNWU4OGExYjBlZmMxNjg3ZDRhZTdlYjVhMjVmOWQzNGJjMGFlMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2lj
YWxFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgor
I2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7
CisKK2NsYXNzIExvZ2ljYWxFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGlj
OgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBbmQsCisgICAgICAg
IE9yCisgICAgfTsKKworICAgIExvZ2ljYWxFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdp
biwgVHlwZSB0eXBlLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4mJiBsZWZ0LCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4mJiByaWdodCkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkK
KyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkK
KyAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5Mb2dpY2FsRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIExvZ2ljYWxFeHBy
ZXNzaW9uKGNvbnN0IExvZ2ljYWxFeHByZXNzaW9uJikgPSBkZWxldGU7CisgICAgTG9naWNhbEV4
cHJlc3Npb24oTG9naWNhbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGlzTG9naWNhbEV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBs
ZWZ0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbGVmdCk7IH0KKyAgICBF
eHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3Jp
Z2h0KTsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworICAgIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiBtX2xlZnQ7CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcmlnaHQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwgaXNMb2dpY2FsRXhwcmVzc2lvbigp
KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFhOTcyYmU2YjJkNmE0YjA3NWYxNWIyYTI5NjE0ZjE0Yzg0M2E1OTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBB
U1QgeworCitjbGFzcyBMb2dpY2FsTm90RXhwcmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsK
K3B1YmxpYzoKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIG9wZXJhbmQpCisgICAgICAgIDogRXhwcmVzc2lvbihX
VEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9vcGVyYW5kKFdURk1vdmUob3BlcmFuZCkpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkxvZ2ljYWxOb3RFeHByZXNzaW9uKCkgPSBkZWZh
dWx0OworCisgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Np
b24mKSA9IGRlbGV0ZTsKKyAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVz
c2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBvcGVyYW5k
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fb3BlcmFuZCk7IH0KKworcHJp
dmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9vcGVyYW5kOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oTG9naWNhbE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmMwMTk1MzFkZjYzMGVhNGNmZDVkM2JlYzQ0NWUwNmQyY2E4ZWEy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
V0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Np
b24+JiYgbFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAg
ICAgICAsIG1fbFZhbHVlKFdURk1vdmUobFZhbHVlKSkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oY29uc3QgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbiYpID0gZGVsZXRlOworICAgIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIEV4cHJlc3Npb24mIGxWYWx1ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Np
b24mPihtX2xWYWx1ZSk7IH0KKworcHJpdmF0ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bV9sVmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSkKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9p
bnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OGE0NDQwMWVhNmIx
NDkyYzUxZDRlMDkwYTZkNGIwOWU1NGFkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24u
aApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTWFr
ZVBvaW50ZXJFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24geworcHVibGljOgorICAgIE1h
a2VQb2ludGVyRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxFeHBy
ZXNzaW9uPiYmIGxWYWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uKFdURk1vdmUob3JpZ2luKSkK
KyAgICAgICAgLCBtX2xWYWx1ZShXVEZNb3ZlKGxWYWx1ZSkpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgfk1ha2VQb2ludGVyRXhwcmVzc2lvbigpID0gZGVmYXVsdDsKKworICAgIE1ha2VQ
b2ludGVyRXhwcmVzc2lvbihjb25zdCBNYWtlUG9pbnRlckV4cHJlc3Npb24mKSA9IGRlbGV0ZTsK
KyAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oTWFrZVBvaW50ZXJFeHByZXNzaW9uJiYpID0gZGVm
YXVsdDsKKworICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9sVmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgVW5p
cXVlUmVmPEV4cHJlc3Npb24+IG1fbFZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisK
K30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZVBv
aW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5h
bWVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TmFtZWRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFhN2M1ZTM4NGI4Mzg4M2I2ODhhYjdlMmVhMDAwMmRl
MGFmYjM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hbWVkVHlwZS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExl
eGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE5hbWVkVHlwZSA6
IHB1YmxpYyBUeXBlIHsKK3B1YmxpYzoKKyAgICBOYW1lZFR5cGUoTGV4ZXI6OlRva2VuJiYgb3Jp
Z2luLCBTdHJpbmcmJiBuYW1lKQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkK
KyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+TmFtZWRUeXBlKCkgPSBkZWZhdWx0OworCisgICAgTmFtZWRUeXBlKGNvbnN0IE5hbWVk
VHlwZSYpID0gZGVsZXRlOworICAgIE5hbWVkVHlwZShOYW1lZFR5cGUmJikgPSBkZWZhdWx0Owor
CisgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdp
bjsgfQorICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorCisgICAgYm9vbCBp
c05hbWVkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzU3RydWN0dXJlRGVmaW5pdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBjb25zdCBUeXBlJiB1bmlmeU5v
ZGUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgIHZpcnR1YWwgVHlwZSYgdW5pZnlOb2Rl
KCkgeyByZXR1cm4gKnRoaXM7IH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmln
aW47CisgICAgU3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX05BTUVEX1RZUEUoVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6Ok5hbWVkVHlwZSYgdHlwZSkgeyByZXR1
cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoTmFtZWRUeXBlLCBpc05hbWVkVHlwZSgp
KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kODFhMzhjMjhmODRiMzkxM2E0OTU1NmEzNjVhM2RkOTc5OGFkYTM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiA6IHB1YmxpYyBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRpb24mJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uLCBib29sIHJlc3RyaWN0ZWQpCisgICAgICAgIDogRnVuY3Rpb25EZWNsYXJhdGlv
bihXVEZNb3ZlKGZ1bmN0aW9uRGVjbGFyYXRpb24pKQorICAgICAgICAsIG1fcmVzdHJpY3RlZChy
ZXN0cmljdGVkKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5OYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihj
b25zdCBOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgPSBkZWxldGU7CisgICAgTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiYpID0gZGVmYXVsdDsK
KworICAgIGJvb2wgaXNOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9vbCByZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9yZXN0cmljdGVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Jlc3RyaWN0ZWQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRlVOQ1RJT05fREVDTEFSQVRJT04oTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGJjNTA0YjE4ZDNmZjhkZGNhMTdiNjlk
OGUzNTdjYmNiOGJiNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIK
KyNpbmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwdWJsaWMgTmFt
ZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBUeXBlQXJndW1lbnRzJiYgdHlwZUFyZ3VtZW50cykK
KyAgICAgICAgOiBOYW1lZFR5cGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKG5hbWUpKQorICAg
ICAgICAsIG1fdHlwZUFyZ3VtZW50cyhXVEZNb3ZlKHR5cGVBcmd1bWVudHMpKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5OYXRpdmVUeXBlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CisK
KyAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oY29uc3QgTmF0aXZlVHlwZURlY2xhcmF0aW9uJikg
PSBkZWxldGU7CisgICAgTmF0aXZlVHlwZURlY2xhcmF0aW9uKE5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9u
YW1lOyB9CisgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlw
ZUFyZ3VtZW50czsgfQorCisgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnQ7
IH0KKyAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWJlcjsgfQorICAg
IGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNGbG9hdGluZzsgfQorICAgIGJv
b2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzVmVjdG9yOyB9CisgICAgYm9vbCBpc01h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXRyaXg7IH0KKyAgICBib29sIGlzVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0dXJlOyB9CisgICAgYm9vbCBpc1NpZ25lZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTaWduZWQ7IH0KKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woaW50
KT4mIGNhblJlcHJlc2VudEludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudElu
dGVnZXI7IH0KKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiYgY2FuUmVw
cmVzZW50VW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SZXByZXNlbnRVbnNp
Z25lZEludGVnZXI7IH0KKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiYgY2Fu
UmVwcmVzZW50RmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2NhblJlcHJlc2VudEZsb2F0OyB9Cisg
ICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludDY0X3QpPiYgc3VjY2Vzc29yKCkgY29u
c3QgeyByZXR1cm4gbV9zdWNjZXNzb3I7IH0KKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0
X3QoaW50KT4mIGZvcm1hdFZhbHVlRnJvbUludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1h
dFZhbHVlRnJvbUludGVnZXI7IH0KKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5z
aWduZWQpPiYgZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXI7IH0KKyAgICB2b2lkIGl0ZXJhdGVBbGxW
YWx1ZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYgY2FsbGJhY2spIHsgbV9p
dGVyYXRlQWxsVmFsdWVzKGNhbGxiYWNrKTsgfQorCisgICAgdm9pZCBzZXRJc0ludCgpIHsgbV9p
c0ludCA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzTnVtYmVyKCkgeyBtX2lzTnVtYmVyID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0SXNGbG9hdGluZygpIHsgbV9pc0Zsb2F0aW5nID0gdHJ1ZTsgfQor
ICAgIHZvaWQgc2V0SXNWZWN0b3IoKSB7IG1faXNWZWN0b3IgPSB0cnVlOyB9CisgICAgdm9pZCBz
ZXRJc01hdHJpeCgpIHsgbV9pc01hdHJpeCA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzVGV4dHVy
ZSgpIHsgbV9pc1RleHR1cmUgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJc1NpZ25lZCgpIHsgbV9p
c1NpZ25lZCA9IHRydWU7IH0KKyAgICB2b2lkIHNldENhblJlcHJlc2VudEludGVnZXIoc3RkOjpm
dW5jdGlvbjxib29sKGludCk+JiYgY2FuUmVwcmVzZW50KSB7IG1fY2FuUmVwcmVzZW50SW50ZWdl
ciA9IFdURk1vdmUoY2FuUmVwcmVzZW50KTsgfQorICAgIHZvaWQgc2V0Q2FuUmVwcmVzZW50VW5z
aWduZWRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248Ym9vbCh1bnNpZ25lZCk+JiYgY2FuUmVwcmVzZW50
KSB7IG1fY2FuUmVwcmVzZW50VW5zaWduZWRJbnRlZ2VyID0gV1RGTW92ZShjYW5SZXByZXNlbnQp
OyB9CisgICAgdm9pZCBzZXRDYW5SZXByZXNlbnRGbG9hdChzdGQ6OmZ1bmN0aW9uPGJvb2woZmxv
YXQpPiYmIGNhblJlcHJlc2VudCkgeyBtX2NhblJlcHJlc2VudEZsb2F0ID0gV1RGTW92ZShjYW5S
ZXByZXNlbnQpOyB9CisgICAgdm9pZCBzZXRTdWNjZXNzb3Ioc3RkOjpmdW5jdGlvbjxpbnQ2NF90
KGludDY0X3QpPiYmIHN1Y2Nlc3NvcikgeyBtX3N1Y2Nlc3NvciA9IFdURk1vdmUoc3VjY2Vzc29y
KTsgfQorICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tSW50ZWdlcihzdGQ6OmZ1bmN0aW9uPGlu
dDY0X3QoaW50KT4mJiBmb3JtYXRWYWx1ZSkgeyBtX2Zvcm1hdFZhbHVlRnJvbUludGVnZXIgPSBX
VEZNb3ZlKGZvcm1hdFZhbHVlKTsgfQorICAgIHZvaWQgc2V0Rm9ybWF0VmFsdWVGcm9tVW5zaWdu
ZWRJbnRlZ2VyKHN0ZDo6ZnVuY3Rpb248aW50NjRfdCh1bnNpZ25lZCk+JiYgZm9ybWF0VmFsdWUp
IHsgbV9mb3JtYXRWYWx1ZUZyb21VbnNpZ25lZEludGVnZXIgPSBXVEZNb3ZlKGZvcm1hdFZhbHVl
KTsgfQorICAgIHZvaWQgc2V0SXRlcmF0ZUFsbFZhbHVlcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sKGludDY0X3QpPiYpPiYmIGl0ZXJhdGVBbGxWYWx1ZXMpIHsg
bV9pdGVyYXRlQWxsVmFsdWVzID0gV1RGTW92ZShpdGVyYXRlQWxsVmFsdWVzKTsgfQorCitwcml2
YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgVHlwZUFyZ3VtZW50cyBtX3R5cGVBcmd1bWVu
dHM7CisgICAgc3RkOjpmdW5jdGlvbjxib29sKGludCk+IG1fY2FuUmVwcmVzZW50SW50ZWdlcjsK
KyAgICBzdGQ6OmZ1bmN0aW9uPGJvb2wodW5zaWduZWQpPiBtX2NhblJlcHJlc2VudFVuc2lnbmVk
SW50ZWdlcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woZmxvYXQpPiBtX2NhblJlcHJlc2VudEZs
b2F0OworICAgIHN0ZDo6ZnVuY3Rpb248aW50NjRfdChpbnQ2NF90KT4gbV9zdWNjZXNzb3I7Cisg
ICAgc3RkOjpmdW5jdGlvbjxpbnQ2NF90KGludCk+IG1fZm9ybWF0VmFsdWVGcm9tSW50ZWdlcjsK
KyAgICBzdGQ6OmZ1bmN0aW9uPGludDY0X3QodW5zaWduZWQpPiBtX2Zvcm1hdFZhbHVlRnJvbVVu
c2lnbmVkSW50ZWdlcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGludDY0X3QpPiYpPiBtX2l0ZXJhdGVBbGxWYWx1ZXM7CisgICAgYm9vbCBtX2lzSW50
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNOdW1iZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0Zsb2F0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNWZWN0b3IgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc01hdHJpeCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVGV4dHVyZSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzU2lnbmVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9OQU1FRF9UWVBF
KE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgaXNOYXRpdmVUeXBlRGVjbGFyYXRpb24oKSkKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQyOWI3ODE4MDA0ZTk4ZmRmOTFkNTBkY2JiZDY2NzcwNWZh
NTg0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE5vZGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOb2RlIHsKK3B1Ymxp
YzoKKyAgICBOb2RlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB+Tm9kZSgpID0gZGVmYXVs
dDsKKworICAgIGV4cGxpY2l0IE5vZGUoY29uc3QgTm9kZSYpID0gZGVmYXVsdDsKKyAgICBOb2Rl
KE5vZGUmJikgPSBkZWZhdWx0OworCisgICAgTm9kZSYgb3BlcmF0b3I9KGNvbnN0IE5vZGUmKSA9
IGRlZmF1bHQ7CisgICAgTm9kZSYgb3BlcmF0b3I9KE5vZGUmJikgPSBkZWZhdWx0OworCitwcml2
YXRlOgorfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxM
aXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xO
dWxsTGl0ZXJhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYjAxNTAzOTRlYTE3MWU2YmVjNjc5MjEyOWZjOTRl
ODZkYzE1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xO
dWxsTGl0ZXJhbFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgTnVsbExpdGVyYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CitwdWJsaWM6CisgICAgTnVsbExpdGVyYWwoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
KQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5OdWxsTGl0ZXJhbCgpID0gZGVmYXVsdDsKKworICAgIE51bGxMaXRlcmFs
KGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWxldGU7CisgICAgTnVsbExpdGVyYWwoTnVsbExpdGVy
YWwmJikgPSBkZWZhdWx0OworCisgICAgTnVsbExpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBOdWxs
TGl0ZXJhbCYpID0gZGVsZXRlOworICAgIE51bGxMaXRlcmFsJiBvcGVyYXRvcj0oTnVsbExpdGVy
YWwmJikgPSBkZWZhdWx0OworCisgICAgTnVsbExpdGVyYWxUeXBlJiB0eXBlKCkgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICBib29sIGlzTnVsbExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICBOdWxsTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IE51bGxMaXRlcmFsKExleGVyOjpUb2tlbihvcmlnaW4oKSkpOwor
ICAgICAgICBpZiAocmVzdWx0Lm1fdHlwZS5yZXNvbHZlZFR5cGUoKSkKKyAgICAgICAgICAgIHJl
c3VsdC5tX3R5cGUucmVzb2x2ZShyZXN1bHQubV90eXBlLnJlc29sdmVkVHlwZSgpLT5jbG9uZSgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTnVsbExp
dGVyYWxUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKE51bGxMaXRlcmFsLCBpc051
bGxMaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWxUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFsVHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTVkMDkwNWE1YmI5MDJkMWQyODE2MWI4MWFmZGE2NGNlMGNjYjM4MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE51bGxMaXRlcmFsVHlwZS5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTE51bGxMaXRlcmFsVHlwZS5oIgorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
Citib29sIE51bGxMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25z
dAoreworICAgIGlmICghaXM8VW5uYW1lZFR5cGU+KHR5cGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2FzdDxVbm5hbWVkVHlwZT4odHlwZSk7
CisgICAgaWYgKCFpczxSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgTnVsbExpdGVyYWxUeXBl
Ojpjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0Cit7CisgICAgcmV0dXJu
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0
ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE51bGxMaXRlcmFsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NTY4ZmE0YzQwMDI3Nzc4NzY5ODI1Y2Ux
NzRkMmY2MDc1YzA0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xSZXNvbHZhYmxlVHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBOdWxsTGl0ZXJhbFR5
cGUgOiBwdWJsaWMgUmVzb2x2YWJsZVR5cGUgeworcHVibGljOgorICAgIE51bGxMaXRlcmFsVHlw
ZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgfk51bGxMaXRlcmFsVHlwZSgpID0gZGVmYXVs
dDsKKworICAgIE51bGxMaXRlcmFsVHlwZShjb25zdCBOdWxsTGl0ZXJhbFR5cGUmKSA9IGRlbGV0
ZTsKKyAgICBOdWxsTGl0ZXJhbFR5cGUoTnVsbExpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKwor
ICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KGNvbnN0IE51bGxMaXRlcmFsVHlwZSYpID0g
ZGVsZXRlOworICAgIE51bGxMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KE51bGxMaXRlcmFsVHlwZSYm
KSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTnVsbExpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVk
VHlwZSYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1JFU09MVkFCTEVf
VFlQRShOdWxsTGl0ZXJhbFR5cGUsIGlzTnVsbExpdGVyYWxUeXBlKCkpCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVt
VGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOGUyOThmYzBkMmYyYzQ0ZmQ5MGNjYjQ0MzgzNzY4N2E1ZTcwMWY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVtVGhy
ZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMQmFzZUZ1
bmN0aW9uQXR0cmlidXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZSA6IHB1YmxpYyBCYXNlRnVuY3Rpb25BdHRyaWJ1dGUgeworcHVibGljOgorICAgIE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGRlcHRoKQorICAgICAgICA6IEJhc2VGdW5j
dGlvbkF0dHJpYnV0ZShXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkK
KyAgICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9kZXB0aChkZXB0aCkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKCkg
PSBkZWZhdWx0OworCisgICAgTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKGNvbnN0IE51bVRo
cmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpID0gZGVsZXRlOworICAgIE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZShOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmJikgPSBkZWZhdWx0OworCisg
ICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdW5zaWdu
ZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1bnNpZ25lZCBkZXB0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGg7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBt
X3dpZHRoOworICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgIHVuc2lnbmVkIG1fZGVwdGg7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJU
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWU2OTJkMGFiN2Q1MGM4ZjRhYzA4YmIwMzY5MWJlYjNiNjllZDE4
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFBvaW50ZXJUeXBlLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMTGV4ZXIu
aCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFBv
aW50ZXJUeXBlIDogcHVibGljIFJlZmVyZW5jZVR5cGUgeworcHVibGljOgorICAgIFBvaW50ZXJU
eXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSwgVW5p
cXVlUmVmPFVubmFtZWRUeXBlPiBlbGVtZW50VHlwZSkKKyAgICAgICAgOiBSZWZlcmVuY2VUeXBl
KFdURk1vdmUob3JpZ2luKSwgYWRkcmVzc1NwYWNlLCBXVEZNb3ZlKGVsZW1lbnRUeXBlKSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UG9pbnRlclR5cGUoKSA9IGRlZmF1bHQ7CisKKyAg
ICBQb2ludGVyVHlwZShjb25zdCBQb2ludGVyVHlwZSYpID0gZGVsZXRlOworICAgIFBvaW50ZXJU
eXBlKFBvaW50ZXJUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNQb2ludGVyVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFVuaXF1ZVJlZjxVbm5hbWVk
VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8UG9pbnRlclR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIGFkZHJlc3NTcGFj
ZSgpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkpOworICAgIH0KKworcHJpdmF0ZToKK307CisKK30g
Ly8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9VTk5BTUVEX1RZUEUoUG9pbnRlclR5cGUsIGlzUG9pbnRlclR5cGUoKSkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUy
ODc1NWVkYjJiYjliOTBkZWUwYWU3NjJhMzgzMWQwYTAzYWRlZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFj
Y2Vzc0V4cHJlc3Npb24uaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKworY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24g
eworcHVibGljOgorICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihMZXhlcjo6VG9rZW4mJiBv
cmlnaW4sIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiYmIGJhc2UpCisgICAgICAgIDogRXhwcmVzc2lv
bihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwgbV9iYXNlKFdURk1vdmUoYmFzZSkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgflByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRGdW5jdGlvbk5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgc2V0RnVuY3Rpb25OYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGFuZEZ1bmN0aW9uTmFtZSgpIGNvbnN0ID0gMDsKKworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiYgcG9zc2libGVHZXRPdmVybG9hZHMo
KSB7IHJldHVybiBtX3Bvc3NpYmxlR2V0T3ZlcmxvYWRzOyB9CisgICAgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBwb3NzaWJsZVNldE92ZXJs
b2FkcygpIHsgcmV0dXJuIG1fcG9zc2libGVTZXRPdmVybG9hZHM7IH0KKyAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIHBvc3NpYmxlQW5k
T3ZlcmxvYWRzKCkgeyByZXR1cm4gbV9wb3NzaWJsZUFuZE92ZXJsb2FkczsgfQorCisgICAgdm9p
ZCBzZXRQb3NzaWJsZUdldE92ZXJsb2Fkcyhjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4mIG92ZXJsb2FkcykKKyAgICB7CisgICAgICAg
IG1fcG9zc2libGVHZXRPdmVybG9hZHMgPSBvdmVybG9hZHM7CisgICAgfQorICAgIHZvaWQgc2V0
UG9zc2libGVTZXRPdmVybG9hZHMoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
RnVuY3Rpb25EZWNsYXJhdGlvbj4sIDE+JiBvdmVybG9hZHMpCisgICAgeworICAgICAgICBtX3Bv
c3NpYmxlU2V0T3ZlcmxvYWRzID0gb3ZlcmxvYWRzOworICAgIH0KKyAgICB2b2lkIHNldFBvc3Np
YmxlQW5kT3ZlcmxvYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0
aW9uRGVjbGFyYXRpb24+LCAxPiYgb3ZlcmxvYWRzKQorICAgIHsKKyAgICAgICAgbV9wb3NzaWJs
ZUFuZE92ZXJsb2FkcyA9IG92ZXJsb2FkczsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uJiBiYXNl
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fYmFzZSk7IH0KKworcHJpdmF0
ZToKKyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9iYXNlOworICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bvc3NpYmxlR2V0T3Zl
cmxvYWRzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFy
YXRpb24+LCAxPiBtX3Bvc3NpYmxlU2V0T3ZlcmxvYWRzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPEZ1bmN0aW9uRGVjbGFyYXRpb24+LCAxPiBtX3Bvc3NpYmxlQW5kT3Zlcmxv
YWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLCBpc1By
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1YWxpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUXVhbGlmaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjk1ZDZkZDE4Mjk3ZDMxOWQ4YjVjNjJjZGIxMjBiZDRlMDk1NTZhOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFF1
YWxpZmllci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAi
V0hMU0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitlbnVtIGNsYXNzIFF1YWxpZmllciA6IHVpbnQ4X3Qgewor
ICAgIE5vaW50ZXJwb2xhdGlvbiwKKyAgICBOb3BlcnNwZWN0aXZlLAorICAgIFVuaWZvcm0sCisg
ICAgQ2VudHJvaWQsCisgICAgU2FtcGxlCit9OworCit1c2luZyBRdWFsaWZpZXJzID0gVmVjdG9y
PFF1YWxpZmllcj47CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjI5YjI5MzkzZWFlMjI0YWEyZDY3NGVjMjVhODE2NTkwNmEyZTZiOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24uaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworLyoKKyAqICAx
LiBFdmFsdWF0ZSBtX2xWYWx1ZQorICogIDIuIEFzc2lnbiB0aGUgcmVzdWx0IHRvIG1fb2xkVmFs
dWUKKyAqICAzLiBFdmFsdWF0ZSBtX25ld1ZhbHVlRXhwcmVzc2lvbgorICogIDQuIEFzc2lnbiB0
aGUgcmVzdWx0IHRvIG1fbmV3VmFsdWUKKyAqICA1LiBBc3NpZ24gdGhlIHJlc3VsdCB0byBtX2xW
YWx1ZQorICogIDYuIEV2YWx1YXRlIG1fcmVzdWx0RXhwcmVzc2lvbgorICogIDcuIFJldHVybiB0
aGUgcmVzdWx0CisgKi8KK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24gOiBwdWJsaWMg
RXhwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxSZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uPiBjcmVhdGUoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhw
cmVzc2lvbj4gbFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGxWYWx1ZSkp
OworICAgIH0KKworICAgIHZpcnR1YWwgflJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSA9IGRl
ZmF1bHQ7CisKKyAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKGNvbnN0IFJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKKyAgICBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
KFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZXRO
ZXdWYWx1ZUV4cHJlc3Npb24oVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgbmV3VmFsdWVFeHByZXNz
aW9uKQorICAgIHsKKyAgICAgICAgbV9uZXdWYWx1ZUV4cHJlc3Npb24gPSBXVEZNb3ZlKG5ld1Zh
bHVlRXhwcmVzc2lvbik7CisgICAgfQorCisgICAgdm9pZCBzZXRSZXN1bHRFeHByZXNzaW9uKFVu
aXF1ZVJlZjxFeHByZXNzaW9uPiYmIHJlc3VsdEV4cHJlc3Npb24pCisgICAgeworICAgICAgICBt
X3Jlc3VsdEV4cHJlc3Npb24gPSBXVEZNb3ZlKHJlc3VsdEV4cHJlc3Npb24pOworICAgIH0KKwor
ICAgIFVuaXF1ZVJlZjxWYXJpYWJsZVJlZmVyZW5jZT4gb2xkVmFyaWFibGVSZWZlcmVuY2UoKQor
ICAgIHsKKyAgICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIHdlIGRvbid0IGdldCB1c2UtYWZ0ZXIt
ZnJlZXMgaXMgdGhlIGZhY3QgdGhhdCBldmVyeSBpbnN0YW5jZSBvZiBSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uIGlzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcC4KKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+KFZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKG1fb2xk
VmFsdWUpKTsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8VmFyaWFibGVSZWZlcmVuY2U+IG5ld1Zh
cmlhYmxlUmVmZXJlbmNlKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBk
b24ndCBnZXQgdXNlLWFmdGVyLWZyZWVzIGlzIHRoZSBmYWN0IHRoYXQgZXZlcnkgaW5zdGFuY2Ug
b2YgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFZhcmlhYmxlUmVmZXJlbmNlPihWYXJpYWJsZVJl
ZmVyZW5jZTo6d3JhcChtX25ld1ZhbHVlKSk7CisgICAgfQorCisgICAgYm9vbCBpc1JlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4o
bV9sVmFsdWUpOyB9CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFsdWUoKSB7IHJldHVy
biBtX29sZFZhbHVlOyB9CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgbmV3VmFsdWUoKSB7IHJl
dHVybiBtX25ld1ZhbHVlOyB9CisgICAgRXhwcmVzc2lvbiogbmV3VmFsdWVFeHByZXNzaW9uKCkg
eyByZXR1cm4gbV9uZXdWYWx1ZUV4cHJlc3Npb24gPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+
KCptX25ld1ZhbHVlRXhwcmVzc2lvbikgOiBudWxscHRyOyB9CisgICAgRXhwcmVzc2lvbiogcmVz
dWx0RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fcmVzdWx0RXhwcmVzc2lvbiA/ICZzdGF0aWNfY2Fz
dDxFeHByZXNzaW9uJj4oKm1fcmVzdWx0RXhwcmVzc2lvbikgOiBudWxscHRyOyB9CisKK3ByaXZh
dGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJl
ZjxVPiBXVEY6Om1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKworICAgIFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bFZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuKG9yaWdpbikpCisgICAg
ICAgICwgbV9sVmFsdWUoV1RGTW92ZShsVmFsdWUpKQorICAgICAgICAsIG1fb2xkVmFsdWUoTGV4
ZXI6OlRva2VuKG9yaWdpbiksIFF1YWxpZmllcnMoKSwgV1RGOjpudWxsb3B0LCBTdHJpbmcoKSwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpCisgICAgICAgICwgbV9uZXdWYWx1ZShXVEZNb3Zl
KG9yaWdpbiksIFF1YWxpZmllcnMoKSwgV1RGOjpudWxsb3B0LCBTdHJpbmcoKSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQpCisgICAgeworICAgIH0KKworICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX2xWYWx1ZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uIG1fb2xkVmFsdWU7CisgICAg
VmFyaWFibGVEZWNsYXJhdGlvbiBtX25ld1ZhbHVlOworICAgIE9wdGlvbmFsPFVuaXF1ZVJlZjxF
eHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247CisgICAgT3B0aW9uYWw8VW5pcXVlUmVm
PEV4cHJlc3Npb24+PiBtX3Jlc3VsdEV4cHJlc3Npb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjODRiY2I0YzM5
NWVkMzc2NmMzN2JjNzFiYzA1YmVlZDI3OWFmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5
cGUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgVW5uYW1lZFR5
cGUgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWRkcmVzc1NwYWNlIDogdWludDhfdCB7Cisg
ICAgICAgIENvbnN0YW50LAorICAgICAgICBEZXZpY2UsCisgICAgICAgIFRocmVhZGdyb3VwLAor
ICAgICAgICBUaHJlYWQKKyAgICB9OworCisgICAgUmVmZXJlbmNlVHlwZShMZXhlcjo6VG9rZW4m
JiBvcmlnaW4sIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UsIFVuaXF1ZVJlZjxVbm5hbWVkVHlw
ZT4mJiBlbGVtZW50VHlwZSkKKyAgICAgICAgOiBVbm5hbWVkVHlwZShXVEZNb3ZlKG9yaWdpbikp
CisgICAgICAgICwgbV9hZGRyZXNzU3BhY2UoYWRkcmVzc1NwYWNlKQorICAgICAgICAsIG1fZWxl
bWVudFR5cGUoV1RGTW92ZShlbGVtZW50VHlwZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgflJlZmVyZW5jZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICBSZWZlcmVuY2VUeXBlKGNvbnN0
IFJlZmVyZW5jZVR5cGUmKSA9IGRlbGV0ZTsKKyAgICBSZWZlcmVuY2VUeXBlKFJlZmVyZW5jZVR5
cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1JlZmVyZW5jZVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc1NwYWNlOyB9CisgICAgY29uc3QgVW5uYW1lZFR5cGUm
IGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1lZFR5
cGUmPihtX2VsZW1lbnRUeXBlKTsgfQorICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4obV9lbGVtZW50VHlwZSk7IH0KKworcHJp
dmF0ZToKKyAgICBBZGRyZXNzU3BhY2UgbV9hZGRyZXNzU3BhY2U7CisgICAgVW5pcXVlUmVmPFVu
bmFtZWRUeXBlPiBtX2VsZW1lbnRUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30K
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VOTkFNRURfVFlQRShSZWZlcmVu
Y2VUeXBlLCBpc1JlZmVyZW5jZVR5cGUoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZDcxYmQ0Y2M0Yjg0MmZkZmVlZTEyNDlhMzY3Mzg0MTczZGRkNjQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xUeXBl
LmgiCisjaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNU
IHsKKworY2xhc3MgUmVzb2x2YWJsZVR5cGUgOiBwdWJsaWMgVHlwZSB7CitwdWJsaWM6CisgICAg
UmVzb2x2YWJsZVR5cGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIH5SZXNvbHZhYmxlVHlw
ZSgpID0gZGVmYXVsdDsKKworICAgIFJlc29sdmFibGVUeXBlKGNvbnN0IFJlc29sdmFibGVUeXBl
JikgPSBkZWxldGU7CisgICAgUmVzb2x2YWJsZVR5cGUoUmVzb2x2YWJsZVR5cGUmJikgPSBkZWZh
dWx0OworCisgICAgUmVzb2x2YWJsZVR5cGUmIG9wZXJhdG9yPShjb25zdCBSZXNvbHZhYmxlVHlw
ZSYpID0gZGVsZXRlOworICAgIFJlc29sdmFibGVUeXBlJiBvcGVyYXRvcj0oUmVzb2x2YWJsZVR5
cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1Jlc29sdmFibGVUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zsb2F0TGl0ZXJhbFR5
cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ludGVnZXJM
aXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
TnVsbExpdGVyYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdCA9IDA7CisKKyAgICBjb25zdCBVbm5hbWVkVHlwZSogcmVzb2x2ZWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1lZFR5cGUm
PigqbV9yZXNvbHZlZFR5cGUpIDogbnVsbHB0cjsgfQorICAgIFVubmFtZWRUeXBlKiByZXNvbHZl
ZFR5cGUoKSB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICZzdGF0aWNfY2FzdDxVbm5hbWVkVHlw
ZSY+KCptX3Jlc29sdmVkVHlwZSkgOiBudWxscHRyOyB9CisKKyAgICB2b2lkIHJlc29sdmUoVW5p
cXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUpCisgICAgeworICAgICAgICBtX3Jlc29sdmVkVHlw
ZSA9IFdURk1vdmUodHlwZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFVuaXF1
ZVJlZjxVbm5hbWVkVHlwZT4+IG1fcmVzb2x2ZWRUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
QVNUCisKK30KKworfQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfUkVT
T0xWQUJMRV9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZh
YmxlVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoUmVz
b2x2YWJsZVR5cGUsIGlzUmVzb2x2YWJsZVR5cGUoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNjU4ODg2OGIxMDM3MGU4OTBlYzNlNDEy
ODIxNTk3ZTE4NjIxOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMUmVz
b3VyY2VTZW1hbnRpYy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
QXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisjaW5jbHVkZSAi
V0hMU0xUeXBlUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIw
MmJlMDIwN2JjM2M4MWZkMjkyOWJiYjBlMWU1OThiMzJjZGRkOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2Vt
YW50aWMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFJlc291cmNlU2VtYW50aWMgOiBwdWJs
aWMgQmFzZVNlbWFudGljIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90
IHsKKyAgICAgICAgVW5vcmRlcmVkQWNjZXNzVmlldywKKyAgICAgICAgVGV4dHVyZSwKKyAgICAg
ICAgQnVmZmVyLAorICAgICAgICBTYW1wbGVyCisgICAgfTsKKworICAgIFJlc291cmNlU2VtYW50
aWMoTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBNb2RlIG1vZGUsIHVuc2lnbmVkIGluZGV4LCB1bnNp
Z25lZCBzcGFjZSkKKyAgICAgICAgOiBCYXNlU2VtYW50aWMoV1RGTW92ZShvcmlnaW4pKQorICAg
ICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICwg
bV9zcGFjZShzcGFjZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVzb3VyY2VTZW1h
bnRpYygpID0gZGVmYXVsdDsKKworICAgIFJlc291cmNlU2VtYW50aWMoY29uc3QgUmVzb3VyY2VT
ZW1hbnRpYyYpID0gZGVsZXRlOworICAgIFJlc291cmNlU2VtYW50aWMoUmVzb3VyY2VTZW1hbnRp
YyYmKSA9IGRlZmF1bHQ7CisKKyAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7
IH0KKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB1
bnNpZ25lZCBzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZXNvdXJjZVNlbWFudGljJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21vZGUgPT0gb3RoZXIubV9tb2RlICYmIG1faW5kZXggPT0gb3RoZXIubV9p
bmRleCAmJiBtX3NwYWNlID09IG90aGVyLm1fc3BhY2U7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlc291cmNlU2VtYW50aWMmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgaXNBY2NlcHRh
YmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVy
SXRlbURpcmVjdGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisKK3ByaXZhdGU6CisgICAgTW9kZSBtX21vZGU7CisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAg
ICB1bnNpZ25lZCBtX3NwYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJldHVybi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmV0dXJuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdlYjI0Njg0ZjA0NzIyNDg1NjQ0ZGFmNDli
NzIwNzgzMDNjZjQ1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xT
dGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCitjbGFzcyBSZXR1cm4gOiBwdWJsaWMgU3RhdGVtZW50IHsKK3B1YmxpYzoKKyAg
ICBSZXR1cm4oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVz
c2lvbj4+JiYgdmFsdWUpCisgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAg
ICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5SZXR1cm4oKSA9IGRlZmF1bHQ7CisKKyAgICBSZXR1cm4oY29uc3QgUmV0dXJuJikgPSBk
ZWxldGU7CisgICAgUmV0dXJuKFJldHVybiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzUmV0
dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiog
dmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24mPigqbV92
YWx1ZSkgOiBudWxscHRyOyB9CisKKyAgICBGdW5jdGlvbkRlZmluaXRpb24qIGZ1bmN0aW9uKCkg
eyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25EZWZp
bml0aW9uKiBmdW5jdGlvbkRlZmluaXRpb24pIHsgbV9mdW5jdGlvbiA9IGZ1bmN0aW9uRGVmaW5p
dGlvbjsgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4g
bV92YWx1ZTsKKyAgICBGdW5jdGlvbkRlZmluaXRpb24qIG1fZnVuY3Rpb247Cit9OworCit9IC8v
IG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKFJldHVybiwgaXNSZXR1cm4oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTZW1hbnRpYy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU2VtYW50aWMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NGNiODA2YjViZjliMTliZjUwMDI0MzIxOGU1NjNhM2ViYWIxNGVkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U2VtYW50aWMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIK
KyNpbmNsdWRlICJXSExTTFJlc291cmNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNl
bWFudGljLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKwordXNpbmcgU2VtYW50
aWMgPSBWYXJpYW50PEJ1aWx0SW5TZW1hbnRpYywgUmVzb3VyY2VTZW1hbnRpYywgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLCBTdGFnZUluT3V0U2VtYW50aWM+OworCit9IC8vIG5hbWVz
cGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU3ZGNjYzUzNmUx
ZTlhNjlhNGZlZjM4OWMzYTZjYmNkMzIwMmZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5o
IgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFj
ZSBBU1QgeworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjJhYmJjZWJlNTUwZTJiODE5MDE5ODJjNjg5M2IzOGJjNGNmMjQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
QmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMgOiBwdWJsaWMgQmFzZVNlbWFudGljIHsKK3B1
YmxpYzoKKyAgICBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoTGV4ZXI6OlRva2VuJiYg
b3JpZ2luKQorICAgICAgICA6IEJhc2VTZW1hbnRpYyhXVEZNb3ZlKG9yaWdpbikpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgflNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpID0g
ZGVmYXVsdDsKKworICAgIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhjb25zdCBTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSA9IGRlbGV0ZTsKKyAgICBTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiYpID0gZGVm
YXVsdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMmKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyYp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBp
c0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlv
bihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBv
dmVycmlkZTsKKworcHJpdmF0ZToKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NTUzNTUyZGU0ZDVhMzBiN2I3NjVlMGQzNDQxYWFjNGQxYjljZmI1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMU3RhZ2VJbk91dFNlbWFudGljLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKKyNpbmNsdWRlICJX
SExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZp
bml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK30gLy8g
bmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZTg1MzJhZDdjN2UyY2U4ZTg1MDY2N2NhY2Y3ODg2MTVm
NjA2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
V0hMU0xCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2Ns
YXNzIFN0YWdlSW5PdXRTZW1hbnRpYyA6IHB1YmxpYyBCYXNlU2VtYW50aWMgeworcHVibGljOgor
ICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIGlu
ZGV4KQorICAgICAgICA6IEJhc2VTZW1hbnRpYyhXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwg
bV9pbmRleChpbmRleCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3RhZ2VJbk91dFNl
bWFudGljKCkgPSBkZWZhdWx0OworCisgICAgU3RhZ2VJbk91dFNlbWFudGljKGNvbnN0IFN0YWdl
SW5PdXRTZW1hbnRpYyYpID0gZGVsZXRlOworICAgIFN0YWdlSW5PdXRTZW1hbnRpYyhTdGFnZUlu
T3V0U2VtYW50aWMmJikgPSBkZWZhdWx0OworCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RhZ2VJbk91
dFNlbWFudGljJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luZGV4ID09
IG90aGVyLm1faW5kZXg7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0YWdl
SW5PdXRTZW1hbnRpYyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVu
bmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBj
b25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBtX2luZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RhdGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2YzE5YzI0YzNiZTUxNzg4YzQx
ZDg0MjYzMmEyMjhiMTljNGE1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YXRlbWVudC5oCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgU3RhdGVtZW50IDogcHVibGljIFZhbHVlIHsK
K3B1YmxpYzoKKyAgICBTdGF0ZW1lbnQoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQorICAgICAgICA6
IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+
U3RhdGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgU3RhdGVtZW50KGNvbnN0IFN0YXRlbWVudCYp
ID0gZGVsZXRlOworICAgIFN0YXRlbWVudChTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAg
dmlydHVhbCBib29sIGlzQmxvY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0JyZWFrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzRG9XaGlsZUxvb3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0VmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0ZhbGx0aHJvdWdoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGb3JMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUmV0dXJuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1RyYXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307
CisKK3VzaW5nIFN0YXRlbWVudHMgPSBWZWN0b3I8VW5pcXVlUmVmPFN0YXRlbWVudD4+OworCit9
IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9TVEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVO
YW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0YXRlbWVudCYgc3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGljYXRlOyB9IFwK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2YzZlMTIzOGJjYjU3ZTdjZmUxZTAxNzg2
OWYwZjQxNDQwYTc2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZURlZmluaXRpb24uaApAQCAtMCwwICsxLDcx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTmFtZWRUeXBlLmgiCisjaW5j
bHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTdHJ1Y3R1cmVE
ZWZpbml0aW9uIDogcHVibGljIE5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlRGVm
aW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFN0cnVjdHVyZUVs
ZW1lbnRzJiYgc3RydWN0dXJlRWxlbWVudHMpCisgICAgICAgIDogTmFtZWRUeXBlKFdURk1vdmUo
b3JpZ2luKSwgV1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZUVsZW1lbnRzKFdU
Rk1vdmUoc3RydWN0dXJlRWxlbWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5T
dHJ1Y3R1cmVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJlRGVmaW5pdGlv
bihjb25zdCBTdHJ1Y3R1cmVEZWZpbml0aW9uJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlRGVm
aW5pdGlvbihTdHJ1Y3R1cmVEZWZpbml0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNT
dHJ1Y3R1cmVEZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVyZUVsZW1lbnRzKCkgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVFbGVtZW50czsgfQorCitwcml2YXRlOgorICAgIFN0cnVjdHVyZUVsZW1lbnRzIG1fc3Ry
dWN0dXJlRWxlbWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfTkFNRURfVFlQRShTdHJ1Y3R1cmVEZWZpbml0aW9u
LCBpc1N0cnVjdHVyZURlZmluaXRpb24oKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVF
bGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNkNjRlMmUyOGFmZTU2Y2JiOGNmMDMyYzE0OWZhNjk2YWM0
ZTZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldITFNMUXVhbGlm
aWVyLmgiCisjaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgU3RydWN0dXJlRWxl
bWVudCA6IHB1YmxpYyBOb2RlIHsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgUXVhbGlmaWVycyYmIHF1YWxpZmllcnMsIFVuaXF1ZVJlZjxVbm5h
bWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRpYz4gc2VtYW50
aWMpCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1fcXVh
bGlmaWVycyhXVEZNb3ZlKHF1YWxpZmllcnMpKQorICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5
cGUpKQorICAgICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAsIG1fc2VtYW50
aWMoV1RGTW92ZShzZW1hbnRpYykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflN0cnVj
dHVyZUVsZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0
cnVjdHVyZUVsZW1lbnQmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVy
ZUVsZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VW5uYW1lZFR5cGUmPihtX3R5cGUpOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgT3B0aW9uYWw8U2VtYW50aWM+JiBz
ZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWM7IH0KKworcHJpdmF0ZToKKyAgICBMZXhlcjo6
VG9rZW4gbV9vcmlnaW47CisgICAgUXVhbGlmaWVycyBtX3F1YWxpZmllcnM7CisgICAgVW5pcXVl
UmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBPcHRpb25h
bDxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKK307CisKK3VzaW5nIFN0cnVjdHVyZUVsZW1lbnRzID0g
VmVjdG9yPFN0cnVjdHVyZUVsZW1lbnQ+OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOWY4YThlYjU3NTZkNjNm
OTIyZWE2YTkyMzlhOGMyYjU3ZTQ2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMQmxvY2suaCIKKyNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBTd2l0Y2hDYXNlIDog
cHVibGljIFN0YXRlbWVudCB7CitwdWJsaWM6CisgICAgU3dpdGNoQ2FzZShMZXhlcjo6VG9rZW4m
JiBvcmlnaW4sIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBi
bG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCisgICAgICAgICwgbV9ibG9jayhXVEZNb3ZlKGJsb2NrKSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3dpdGNoQ2FzZSgpID0gZGVmYXVsdDsKKwor
ICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYpID0gZGVsZXRlOworICAgIFN3aXRjaENh
c2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzU3dpdGNoQ2FzZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIE9wdGlvbmFsPENvbnN0YW50RXhw
cmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIEJsb2NrJiBibG9jaygp
IHsgcmV0dXJuIG1fYmxvY2s7IH0KKworcHJpdmF0ZToKKyAgICBPcHRpb25hbDxDb25zdGFudEV4
cHJlc3Npb24+IG1fdmFsdWU7CisgICAgQmxvY2sgbV9ibG9jazsKK307CisKK30gLy8gbmFtZXNw
YWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1F
TlQoU3dpdGNoQ2FzZSwgaXNTd2l0Y2hDYXNlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hT
dGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjE5ZDcwNDIyYzk0ZDk5ZWQxMzkwNDIwNTA2M2RlMTIx
NDhiNTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldI
TFNMRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExT
TFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wg
eworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgU3dpdGNoU3RhdGVtZW50IDogcHVibGljIFN0
YXRlbWVudCB7CitwdWJsaWM6CisgICAgU3dpdGNoU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgdmFsdWUsIFZlY3RvcjxTd2l0Y2hDYXNlPiYm
IHN3aXRjaENhc2VzKQorICAgICAgICA6IFN0YXRlbWVudChXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKKyAgICAgICAgLCBtX3N3aXRjaENhc2VzKFdU
Rk1vdmUoc3dpdGNoQ2FzZXMpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2l0Y2hT
dGF0ZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgU3dpdGNo
U3RhdGVtZW50JikgPSBkZWxldGU7CisgICAgU3dpdGNoU3RhdGVtZW50KFN3aXRjaFN0YXRlbWVu
dCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV92YWx1ZSk7IH0KKyAgICBWZWN0b3I8U3dpdGNo
Q2FzZT4mIHN3aXRjaENhc2VzKCkgeyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQorCitwcml2YXRl
OgorICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX3ZhbHVlOworICAgIFZlY3RvcjxTd2l0Y2hD
YXNlPiBtX3N3aXRjaENhc2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hTdGF0ZW1lbnQs
IGlzU3dpdGNoU3RhdGVtZW50KCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjQxZDEyYjVkMjI5ZmQ3ZDQ5ZDBmODU5MGU5ZmRlMWE1MDgwNmMy
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFRlcm5hcnlFeHByZXNzaW9uIDogcHVibGljIEV4cHJl
c3Npb24geworcHVibGljOgorICAgIFRlcm5hcnlFeHByZXNzaW9uKExleGVyOjpUb2tlbiYmIG9y
aWdpbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgcHJlZGljYXRlLCBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4mJiBib2R5RXhwcmVzc2lvbiwgVW5pcXVlUmVmPEV4cHJlc3Npb24+JiYgZWxzZUV4cHJl
c3Npb24pCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikpCisgICAgICAgICwg
bV9wcmVkaWNhdGUoV1RGTW92ZShwcmVkaWNhdGUpKQorICAgICAgICAsIG1fYm9keUV4cHJlc3Np
b24oV1RGTW92ZShib2R5RXhwcmVzc2lvbikpCisgICAgICAgICwgbV9lbHNlRXhwcmVzc2lvbihX
VEZNb3ZlKGVsc2VFeHByZXNzaW9uKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VGVy
bmFyeUV4cHJlc3Npb24oKSA9IGRlZmF1bHQ7CisKKyAgICBUZXJuYXJ5RXhwcmVzc2lvbihjb25z
dCBUZXJuYXJ5RXhwcmVzc2lvbiYpID0gZGVsZXRlOworICAgIFRlcm5hcnlFeHByZXNzaW9uKFRl
cm5hcnlFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVz
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24m
IHByZWRpY2F0ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3ByZWRpY2F0
ZSk7IH0KKyAgICBFeHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEV4cHJlc3Npb24mPihtX2JvZHlFeHByZXNzaW9uKTsgfQorICAgIEV4cHJlc3Npb24mIGVs
c2VFeHByZXNzaW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fZWxzZUV4
cHJlc3Npb24pOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcHJl
ZGljYXRlOworICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2JvZHlFeHByZXNzaW9uOworICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2Vsc2VFeHByZXNzaW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUcmFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
cmFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDI4MGU3MTdjMDhlMTE3NDcxYWU3NjEyOGQwZTU4YzQzYmViMGJh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFRyYXAuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFRyYXAgOiBwdWJsaWMgU3Rh
dGVtZW50IHsKK3B1YmxpYzoKKyAgICBUcmFwKExleGVyOjpUb2tlbiYmIG9yaWdpbikKKyAgICAg
ICAgOiBTdGF0ZW1lbnQoV1RGTW92ZShvcmlnaW4pKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5UcmFwKCkgPSBkZWZhdWx0OworCisgICAgVHJhcChjb25zdCBUcmFwJikgPSBkZWxldGU7
CisgICAgVHJhcChUcmFwJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNUcmFwKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChUcmFwLCBpc1RyYXAoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU5ZTQ5NjQ2NDM4
Zjg1M2FjOTA4ZjhhNjNjYzQ0MGQwZDUzYjUwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1Qgewor
CitjbGFzcyBUeXBlIDogcHVibGljIE5vZGUgeworcHVibGljOgorICAgIFR5cGUoKSA9IGRlZmF1
bHQ7CisKKyAgICB2aXJ0dWFsIH5UeXBlKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgVHlw
ZShjb25zdCBUeXBlJikgPSBkZWxldGU7CisgICAgVHlwZShUeXBlJiYpID0gZGVmYXVsdDsKKwor
ICAgIFR5cGUmIG9wZXJhdG9yPShjb25zdCBUeXBlJikgPSBkZWxldGU7CisgICAgVHlwZSYgb3Bl
cmF0b3I9KFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBib29sIGlzTmFtZWRUeXBl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNVbm5hbWVkVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVzb2x2YWJs
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorfTsKKworfSAvLyBu
YW1lc3BhY2UgQVNUCisKK30KKworfQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZSYgdHlw
ZSkgeyByZXR1cm4gdHlwZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZWY5
MTA5NmI1OTVhMGM3MDE2NzkwMTM2NmY2ZTNmYjJlYjU4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQu
Y3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitUeXBlQXJndW1lbnRzIGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudHMm
IHR5cGVBcmd1bWVudHMpCit7CisgICAgVHlwZUFyZ3VtZW50cyByZXN1bHQ7CisgICAgZm9yIChj
b25zdCBhdXRvJiB0eXBlQXJndW1lbnQgOiB0eXBlQXJndW1lbnRzKQorICAgICAgICByZXN1bHQu
YXBwZW5kKGNsb25lKHR5cGVBcmd1bWVudCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1R5
cGVBcmd1bWVudCBjbG9uZShjb25zdCBUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKK3sKKyAg
ICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IENvbnN0YW50RXhw
cmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSAtPiBUeXBlQXJndW1lbnQgeworICAgICAgICBy
ZXR1cm4gY29uc3RhbnRFeHByZXNzaW9uLmNsb25lKCk7CisgICAgfSwgW10oY29uc3QgVW5pcXVl
UmVmPFR5cGVSZWZlcmVuY2U+JiB0eXBlUmVmZXJlbmNlKSAtPiBUeXBlQXJndW1lbnQgeworICAg
ICAgICByZXR1cm4gdHlwZVJlZmVyZW5jZS0+Y2xvbmVUeXBlUmVmZXJlbmNlKCk7CisgICAgfSks
IHR5cGVBcmd1bWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUeXBlQXJndW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVBcmd1bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNjcwOWQ3YWRiOTdiZmQ0MDNk
MjJlMTQ5ODFiZGI3YjQ0NDFkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExleGVy
LmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBUeXBlUmVmZXJlbmNlOwor
Cit1c2luZyBUeXBlQXJndW1lbnQgPSBWYXJpYW50PENvbnN0YW50RXhwcmVzc2lvbiwgVW5pcXVl
UmVmPFR5cGVSZWZlcmVuY2U+PjsKK3VzaW5nIFR5cGVBcmd1bWVudHMgPSBWZWN0b3I8VHlwZUFy
Z3VtZW50PjsKKworVHlwZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYpOworVHlw
ZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJik7CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZTNmZjM2NGQ2YmQ2MDYzMDUyZmMzYWYxYjVmYzQ2ZjMxZWY2NGVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlw
ZURlZmluaXRpb24uaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMTmFtZWRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAi
V0hMU0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVHlwZURlZmluaXRpb24gOiBw
dWJsaWMgTmFtZWRUeXBlIHsKK3B1YmxpYzoKKyAgICBUeXBlRGVmaW5pdGlvbihMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBl
KQorICAgICAgICA6IE5hbWVkVHlwZShXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUobmFtZSkpCisg
ICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgflR5cGVEZWZpbml0aW9uKCkgPSBkZWZhdWx0OworCisgICAgVHlwZURlZmluaXRpb24oY29u
c3QgVHlwZURlZmluaXRpb24mKSA9IGRlbGV0ZTsKKyAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVm
aW5pdGlvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzVHlwZURlZmluaXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4obV90eXBlKTsgfQorCisgICAgY29uc3Qg
VHlwZSYgdW5pZnlOb2RlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3R5cGUtPnVuaWZ5Tm9kZSgpOworICAgIH0KKworICAgIFR5cGUmIHVuaWZ5Tm9kZSgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICByZXR1cm4gbV90eXBlLT51bmlmeU5vZGUoKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiBtX3R5cGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
TkFNRURfVFlQRShUeXBlRGVmaW5pdGlvbiwgaXNUeXBlRGVmaW5pdGlvbigpKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFR5cGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZVJlZmVyZW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJkOGZlNDUyYWY0YjhiYWU1
ZDYxMzlmMTlhN2ZhYTEwZDMxMDI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuY3BwCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hM
U0xUeXBlUmVmZXJlbmNlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hM
U0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFT
VCB7CisKK1VuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPiBUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgTmFtZWRUeXBlJiByZXNvbHZlZFR5cGUpCit7CisgICAgVHlwZUFy
Z3VtZW50cyB0eXBlQXJndW1lbnRzOworICAgIGlmIChpczxOYXRpdmVUeXBlRGVjbGFyYXRpb24+
KHJlc29sdmVkVHlwZSkpCisgICAgICAgIHR5cGVBcmd1bWVudHMgPSBBU1Q6OmNsb25lKGRvd25j
YXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVzb2x2ZWRUeXBlKS50eXBlQXJndW1lbnRzKCkp
OworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPihXVEZNb3Zl
KG9yaWdpbiksIFN0cmluZyhyZXNvbHZlZFR5cGUubmFtZSgpKSwgV1RGTW92ZSh0eXBlQXJndW1l
bnRzKSk7CisgICAgcmVzdWx0LT5zZXRSZXNvbHZlZFR5cGUocmVzb2x2ZWRUeXBlKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNjlmMDM2ZGY0YWUyMzQzZGJl
NTA3ZDg3YWE1OTkwYmI3MTYzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKQEAgLTAsMCArMSwx
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKKyNp
bmNsdWRlICJXSExTTFR5cGVBcmd1bWVudC5oIgorI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFt
ZXNwYWNlIEFTVCB7CisKK2NsYXNzIE5hbWVkVHlwZTsKKworY2xhc3MgVHlwZVJlZmVyZW5jZSA6
IHB1YmxpYyBVbm5hbWVkVHlwZSB7CitwdWJsaWM6CisgICAgVHlwZVJlZmVyZW5jZShMZXhlcjo6
VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIFR5cGVBcmd1bWVudHMmJiB0eXBlQXJndW1l
bnRzKQorICAgICAgICA6IFVubmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBt
X25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3R5cGVBcmd1bWVudHMoV1RGTW92ZSh0
eXBlQXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+VHlwZVJlZmVyZW5j
ZSgpID0gZGVmYXVsdDsKKworICAgIFR5cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYp
ID0gZGVsZXRlOworICAgIFR5cGVSZWZlcmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7
CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+IHdyYXAoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBOYW1lZFR5cGUmIHJlc29sdmVkVHlwZSk7CisKKyAgICBib29sIGlzVHlwZVJl
ZmVyZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVu
dHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KKyAgICBOYW1lZFR5cGUqIHJlc29sdmVk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlOyB9CisKKyAgICBjb25zdCBUeXBl
JiB1bmlmeU5vZGUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVz
b2x2ZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51bmlmeU5vZGUoKTsK
KyAgICB9CisKKyAgICBUeXBlJiB1bmlmeU5vZGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVzb2x2ZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlLT51
bmlmeU5vZGUoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJlc29sdmVkVHlwZShOYW1lZFR5cGUm
IHJlc29sdmVkVHlwZSkKKyAgICB7CisgICAgICAgIG1fcmVzb2x2ZWRUeXBlID0gJnJlc29sdmVk
VHlwZTsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4gY2xvbmVUeXBlUmVm
ZXJlbmNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFR5cGVS
ZWZlcmVuY2U+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhtX25hbWUpLCBBU1Q6OmNs
b25lKG1fdHlwZUFyZ3VtZW50cykpOworICAgIH0KKworICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlw
ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNsb25lVHlw
ZVJlZmVyZW5jZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOworICAgIE5hbWVkVHlwZSogbV9yZXNvbHZl
ZFR5cGUgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVU5OQU1FRF9UWVBFKFR5cGVSZWZlcmVuY2Us
IGlzVHlwZVJlZmVyZW5jZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVubmFtZWRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5hbWVkVHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhjN2M1MTc0ZGE1MDkyNzUzOTY3NDZlNmU2ZTIyNTFmMzdlN2FjMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbm5h
bWVkVHlwZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAi
V0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBV
bm5hbWVkVHlwZSA6IHB1YmxpYyBUeXBlIHsKK3B1YmxpYzoKKyAgICBVbm5hbWVkVHlwZShMZXhl
cjo6VG9rZW4mJiBvcmlnaW4pCisgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Vbm5hbWVkVHlwZSgpID0gZGVmYXVsdDsKKwor
ICAgIFVubmFtZWRUeXBlKGNvbnN0IFVubmFtZWRUeXBlJikgPSBkZWxldGU7CisgICAgVW5uYW1l
ZFR5cGUoVW5uYW1lZFR5cGUmJikgPSBkZWZhdWx0OworCisgICAgYm9vbCBpc1VubmFtZWRUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1R5
cGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1BvaW50ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNBcnJheVJlZmVyZW5jZVR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0FycmF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzUmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2
aXJ0dWFsIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgdmlydHVhbCBUeXBlJiB1bmlmeU5vZGUoKSB7IHJldHVybiAqdGhpczsgfQorCisgICAgdmly
dHVhbCBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+IGNsb25lKCkgY29uc3QgPSAwOworCisgICAgY29u
c3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitw
cml2YXRlOgorICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFTVAorCit9CisKK30KKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1VO
TkFNRURfVFlQRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5uYW1lZFR5
cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFVubmFtZWRU
eXBlLCBpc1VubmFtZWRUeXBlKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGY1NDE5MTczODIwZWEyOWUxMmJmZGZj
Zjk4Y2NkMjhiYjExZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7
CisKK25hbWVzcGFjZSBBU1QgeworCitpbnQ2NF90IFVuc2lnbmVkSW50ZWdlckxpdGVyYWw6OnZh
bHVlRm9yU2VsZWN0ZWRUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlLnJlc29sdmVk
VHlwZSgpKTsKKyAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8VHlwZVJlZmVyZW5j
ZT4oKm1fdHlwZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgQVNTRVJUKHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOworICAgIGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA9IGRvd25jYXN0
PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwor
ICAgIHJldHVybiBuYXRpdmVUeXBlRGVjbGFyYXRpb24uZm9ybWF0VmFsdWVGcm9tVW5zaWduZWRJ
bnRlZ2VyKCkobV92YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDdiOWUyNWI2MDkwYTY3ODRlMWVkMjRhZWVhN2FiY2ZlNWY5MDdmNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9u
LmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFs
KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgdW5zaWduZWQgdmFsdWUpCisgICAgICAgIDogRXhwcmVz
c2lvbihMZXhlcjo6VG9rZW4ob3JpZ2luKSkKKyAgICAgICAgLCBtX3R5cGUoV1RGTW92ZShvcmln
aW4pLCB2YWx1ZSkKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5VbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgPSBkZWZhdWx0OworCisgICAgVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbChjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgPSBkZWxl
dGU7CisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbChVbnNpZ25lZEludGVnZXJMaXRlcmFsJiYp
ID0gZGVmYXVsdDsKKworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIG9wZXJhdG9yPShjb25z
dCBVbnNpZ25lZEludGVnZXJMaXRlcmFsJikgPSBkZWxldGU7CisgICAgVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCYgb3BlcmF0b3I9KFVuc2lnbmVkSW50ZWdlckxpdGVyYWwmJikgPSBkZWZhdWx0Owor
CisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7
IH0KKyAgICB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAg
IGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBjbG9uZSgpIGNvbnN0CisgICAg
eworICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsIHJlc3VsdChMZXhlcjo6VG9rZW4ob3Jp
Z2luKCkpLCBtX3ZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX3R5cGUucmVzb2x2ZWRUeXBl
KCkpCisgICAgICAgICAgICByZXN1bHQubV90eXBlLnJlc29sdmUocmVzdWx0Lm1fdHlwZS5yZXNv
bHZlZFR5cGUoKS0+Y2xvbmUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgaW50NjRfdCB2YWx1ZUZvclNlbGVjdGVkVHlwZSgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlIG1fdHlwZTsKKyAgICB1bnNpZ25lZCBtX3ZhbHVl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgaXNVbnNpZ25l
ZEludGVnZXJMaXRlcmFsKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZGFjZjZhNmI4NjRmMTM1YWZi
OGI2YzVkZjNlNjM5MzljZjgyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5j
cHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgiCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZTo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCB1bnNpZ25lZCB2YWx1ZSkKKyAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgLCBt
X3ByZWZlcnJlZFR5cGUobWFrZVVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPihXVEZNb3ZlKG9yaWdp
biksIFN0cmluZygidWludCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBUeXBlQXJn
dW1lbnRzKCkpKQoreworfQorCitVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6flVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlKCkgPSBkZWZhdWx0OworCitib29sIFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcworICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJhM2I3NzdhNDVm
OGJjZDViMTg3ODdjYWQxN2NkNjZlZGRiZWE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMUmVzb2x2YWJsZVR5cGUuaCIKKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNl
IEFTVCB7CisKK2NsYXNzIFR5cGVSZWZlcmVuY2U7CisKK2NsYXNzIFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlIDogcHVibGljIFJlc29sdmFibGVUeXBlIHsKK3B1YmxpYzoKKyAgICBVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZShMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIHVuc2lnbmVkIHZhbHVl
KTsKKworICAgIHZpcnR1YWwgflVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKCk7CisKKyAgICBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZShjb25zdCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZSYpID0gZGVsZXRlOworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKFVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlJiBvcGVyYXRvcj0oY29uc3QgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKSA9IGRl
bGV0ZTsKKyAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYgb3BlcmF0b3I9KFVuc2lnbmVk
SW50ZWdlckxpdGVyYWxUeXBlJiYpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBl
UmVmZXJlbmNlJj4obV9wcmVmZXJyZWRUeXBlKTsgfQorCisgICAgYm9vbCBjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChj
b25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdW5zaWduZWQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV92
YWx1ZTsKKyAgICAvLyBUaGlzIGlzIGEgdW5pcXVlX3B0ciB0byByZXNvbHZlIGEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBiZXR3ZWVuCisgICAgLy8gQ29uc3RhbnRFeHByZXNzaW9uIC0+IExpdGVyYWxU
eXBlIC0+IFR5cGVSZWZlcmVuY2UgLT4gVHlwZUFyZ3VtZW50cyAtPiBDb25zdGFudEV4cHJlc3Np
b24KKyAgICBVbmlxdWVSZWY8VHlwZVJlZmVyZW5jZT4gbV9wcmVmZXJyZWRUeXBlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1JFU09MVkFCTEVfVFlQRShVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSwgaXNVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZDlj
OGVmNzIzZjVhMjU3YmIyN2ZjNjc0ZDBhM2YzNTBlNDdlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYWx1ZS5oCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworY2xhc3MgVmFsdWUgOiBwdWJs
aWMgTm9kZSB7CitwdWJsaWM6CisgICAgVmFsdWUoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5WYWx1ZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IFZhbHVlKGNvbnN0IFZhbHVl
JikgPSBkZWZhdWx0OworICAgIFZhbHVlKFZhbHVlJiYpID0gZGVmYXVsdDsKKworICAgIFZhbHVl
JiBvcGVyYXRvcj0oY29uc3QgVmFsdWUmKSA9IGRlZmF1bHQ7CisgICAgVmFsdWUmIG9wZXJhdG9y
PShWYWx1ZSYmKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
U1QKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI0NDk0NjAyY2ZiYWFiMTEzNWQ3MTYyMzU2YTBhMjA4NzAxMjJlYmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlICJXSExTTFF1YWxp
Zmllci5oIgorI2luY2x1ZGUgIldITFNMU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFR5cGUu
aCIKKyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdI
TFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gOiBw
dWJsaWMgVmFsdWUgeworcHVibGljOgorICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBRdWFsaWZpZXJzJiYgcXVhbGlmaWVycywgT3B0aW9uYWw8VW5pcXVlUmVm
PFVubmFtZWRUeXBlPj4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRpYz4m
JiBzZW1hbnRpYywgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiYmIGluaXRpYWxpemVy
KQorICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3F1YWxp
ZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzKSkKKyAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBl
KSkKKyAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgLCBtX3NlbWFudGlj
KFdURk1vdmUoc2VtYW50aWMpKQorICAgICAgICAsIG1faW5pdGlhbGl6ZXIoV1RGTW92ZShpbml0
aWFsaXplcikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflZhcmlhYmxlRGVjbGFyYXRp
b24oKSA9IGRlZmF1bHQ7CisKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnN0IFZhcmlhYmxl
RGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxl
RGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OworCisgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIFN0cmluZyYgbmFtZSgpIHsgcmV0
dXJuIG1fbmFtZTsgfQorCisgICAgY29uc3QgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBl
Pj4mIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0gLy8gQW5vbnltb3VzIHZhcmlhYmxl
cyBpbnNpZGUgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbnMgaGF2ZSB0aGVpciB0eXBlIHNldCBi
eSB0aGUgdHlwZSBjaGVja2VyLgorICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlID8gJnN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4oKm1fdHlwZSkgOiBudWxscHRyOyB9Cisg
ICAgT3B0aW9uYWw8U2VtYW50aWM+JiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWM7IH0K
KyAgICBFeHByZXNzaW9uKiBpbml0aWFsaXplcigpIHsgcmV0dXJuIG1faW5pdGlhbGl6ZXIgPyAm
c3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCptX2luaXRpYWxpemVyKSA6IG51bGxwdHI7IH0KKwor
cHJpdmF0ZToKKyAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CisgICAgUXVhbGlmaWVycyBtX3F1
YWxpZmllcnM7CisgICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBlPj4gbV90eXBlOwor
ICAgIFN0cmluZyBtX25hbWU7CisgICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2VtYW50aWM7Cisg
ICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2luaXRpYWxpemVyOworfTsKKwor
dXNpbmcgVmFyaWFibGVEZWNsYXJhdGlvbnMgPSBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj47
CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGUx
ZmM3ZjViMjM4ZGJiMDQwM2U5ZjQwMjc4MDRhNzBhN2U4ODFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgor
I2luY2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25hbWVzcGFjZSBBU1QgeworCitjbGFzcyBWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCA6IHB1YmxpYyBTdGF0ZW1lbnQgeworcHVibGljOgorICAg
IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVmVj
dG9yPFZhcmlhYmxlRGVjbGFyYXRpb24+JiYgdmFyaWFibGVEZWNsYXJhdGlvbnMpCisgICAgICAg
IDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX3ZhcmlhYmxlRGVjbGFy
YXRpb25zKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbnMpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5WYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpID0gZGVmYXVsdDsKKwor
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50JikgPSBkZWxldGU7CisgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworCisgICAgYm9v
bCBpc1ZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgVmVjdG9yPFZhcmlhYmxlRGVjbGFyYXRpb24+JiB2YXJpYWJsZURl
Y2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7IH0KKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV92YXJpYWJsZURlY2xhcmF0aW9u
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFTVAorCit9CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIGlz
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFy
aWFibGVSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDUyZmRmMWU0N2NiZDUxY2M2OWJiNTU5NDY0
NjRmNDNkM2RmYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK25h
bWVzcGFjZSBBU1QgeworCitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNz
aW9uIHsKK3B1YmxpYzoKKyAgICBWYXJpYWJsZVJlZmVyZW5jZShMZXhlcjo6VG9rZW4mJiBvcmln
aW4sIFN0cmluZyYmIG5hbWUpCisgICAgICAgIDogRXhwcmVzc2lvbihXVEZNb3ZlKG9yaWdpbikp
CisgICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgflZhcmlhYmxlUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisgICAgVmFyaWFibGVSZWZl
cmVuY2UoY29uc3QgVmFyaWFibGVSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKKyAgICBWYXJpYWJsZVJl
ZmVyZW5jZShWYXJpYWJsZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgVmFy
aWFibGVSZWZlcmVuY2Ugd3JhcChWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0
aW9uKQorICAgIHsKKyAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UgcmVzdWx0KExleGVyOjpUb2tl
bih2YXJpYWJsZURlY2xhcmF0aW9uLm9yaWdpbigpKSk7CisgICAgICAgIHJlc3VsdC5tX3Zhcmlh
YmxlID0gJnZhcmlhYmxlRGVjbGFyYXRpb247CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CisKKyAg
ICBWYXJpYWJsZURlY2xhcmF0aW9uKiB2YXJpYWJsZSgpIHsgcmV0dXJuIG1fdmFyaWFibGU7IH0K
KworICAgIHZvaWQgc2V0VmFyaWFibGUoVmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNs
YXJhdGlvbikKKyAgICB7CisgICAgICAgIG1fdmFyaWFibGUgPSAmdmFyaWFibGVEZWNsYXJhdGlv
bjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmFyaWFibGVSZWZlcmVuY2UoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luKQorICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQorICAgIHsK
KyAgICB9CisKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFZhcmlhYmxlRGVjbGFyYXRpb24qIG1f
dmFyaWFibGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBU1QKKworfQorCit9CisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihWYXJpYWJsZVJlZmVyZW5jZSwgaXNWYXJp
YWJsZVJlZmVyZW5jZSgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdl
ODY4MmFmOWRlMjBjNjJlNDVhZTAzMWFkMjEwODRkNDFmYzliZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5o
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
bmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFdoaWxlTG9vcCA6IHB1YmxpYyBTdGF0ZW1lbnQgewor
cHVibGljOgorICAgIFdoaWxlTG9vcChMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFVuaXF1ZVJlZjxF
eHByZXNzaW9uPiYmIGNvbmRpdGlvbmFsLCBVbmlxdWVSZWY8U3RhdGVtZW50PiYmIGJvZHkpCisg
ICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
bmFsKFdURk1vdmUoY29uZGl0aW9uYWwpKQorICAgICAgICAsIG1fYm9keShXVEZNb3ZlKGJvZHkp
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XaGlsZUxvb3AoKSA9IGRlZmF1bHQ7CisK
KyAgICBXaGlsZUxvb3AoY29uc3QgV2hpbGVMb29wJikgPSBkZWxldGU7CisgICAgV2hpbGVMb29w
KFdoaWxlTG9vcCYmKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzV2hpbGVMb29wKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9jb25kaXRpb25hbCk7IH0KKyAg
ICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPihtX2Jv
ZHkpOyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29uZGl0aW9u
YWw7CisgICAgVW5pcXVlUmVmPFN0YXRlbWVudD4gbV9ib2R5OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQVNUCisKK30KKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChXaGlsZUxvb3AsIGlzV2hpbGVMb29wKCkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAppbmRleCAzYjE5MzRlOTMx
NjU0OTI0ZTFlNGM4ZGVmNTlmNzQ4ZDIxMjA0YTUzLi5lOWFlYWU3YjU0MjIzOGU5ODM2YTU0ODA3
ZGExZjAxMTc1YjI4OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTExleGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTExleGVyLmNwcApAQCAtMjMsOCArMjMsNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkNzkw
NTc3YTQxNGQ2MDk0Y2EwYTgxNDkyZWZmYmI2OGJjMWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldI
TFNMUGFyc2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZjY2Y2VkMjIwZjYzMmE5N2Mz
YTQxZTlkODk1ZmQ1ZjEyYmFmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAi
V0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKKyNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgor
I2luY2x1ZGUgIldITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEJh
c2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisj
aW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIK
KyNpbmNsdWRlICJXSExTTEJyZWFrLmgiCisjaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb21t
YUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgorI2lu
Y2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgiCisjaW5jbHVkZSAiV0hMU0xEZXJlZmVyZW5j
ZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCisjaW5jbHVkZSAi
V0hMU0xEb3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKKyNp
bmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGYWxsdGhyb3VnaC5oIgorI2luY2x1ZGUgIldITFNMRmxv
YXRMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5o
IgorI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xJ
ZlN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMSW5kZXhFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNs
dWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAi
V0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVU
eXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5vZGUuaCIKKyNpbmNsdWRlICJXSExT
TE51bGxMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUuaCIKKyNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9n
cmFtLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldI
TFNMUmVzb3VyY2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCisjaW5jbHVk
ZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKKyNpbmNs
dWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlv
bi5oIgorI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgorI2luY2x1ZGUgIldITFNM
U3dpdGNoQ2FzZS5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVk
ZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMVHJhcC5oIgorI2lu
Y2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisjaW5j
bHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUg
IldITFNMVmFsdWUuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKKyNp
bmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCisj
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUGFyc2VyIHsK
KworfTsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjllODQzYzEwZmQ3Y2Nh
MzE5NTUzNzUwMjI3YWFiZWNjZmRhNzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKQEAgLTAsMCArMSwxMDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRnVuY3Rp
b25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJX
SExTTFN0cnVjdHVyZURlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFByb2dyYW0geworcHVibGljOgorICAgIFByb2dyYW0o
KSA9IGRlZmF1bHQ7CisgICAgUHJvZ3JhbShQcm9ncmFtJiYpID0gZGVmYXVsdDsKKworICAgIGJv
b2wgYXBwZW5kKEFTVDo6VHlwZURlZmluaXRpb24mJiB0eXBlRGVmaW5pdGlvbikKKyAgICB7Cisg
ICAgICAgIG1fdHlwZURlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VHlwZURl
ZmluaXRpb24+KFdURk1vdmUodHlwZURlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgYXBwZW5kKEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYmIHN0
cnVjdHVyZURlZmluaXRpb24pCisgICAgeworICAgICAgICBtX3N0cnVjdHVyZURlZmluaXRpb25z
LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oV1RGTW92ZShz
dHJ1Y3R1cmVEZWZpbml0aW9uKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIGFwcGVuZChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYmIGVudW1lcmF0aW9uRGVm
aW5pdGlvbikKKyAgICB7CisgICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9ucy5hcHBlbmQo
bWFrZVVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oV1RGTW92ZShlbnVtZXJh
dGlvbkRlZmluaXRpb24pKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJv
b2wgYXBwZW5kKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiYgZnVuY3Rpb25EZWZpbml0aW9uKQor
ICAgIHsKKyAgICAgICAgbV9mdW5jdGlvbkRlZmluaXRpb25zLmFwcGVuZChtYWtlVW5pcXVlUmVm
PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uRGVmaW5pdGlvbikpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBhcHBlbmQoQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uJiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikKKyAgICB7
CisgICAgICAgIG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVS
ZWY8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wg
YXBwZW5kKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiYgbmF0aXZlVHlwZURlY2xhcmF0aW9u
KQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zLmFwcGVuZChtYWtlVW5p
cXVlUmVmPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihXVEZNb3ZlKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4mIHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJu
IG1fdHlwZURlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24+PiYgc3RydWN0dXJlRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX3N0cnVjdHVy
ZURlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbj4+JiBlbnVtZXJhdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9lbnVtZXJhdGlv
bkRlZmluaXRpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9mdW5j
dGlvbkRlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmlu
aXRpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+PiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKSB7IHJldHVybiBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9y
PFVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4+JiBuYXRpdmVUeXBlRGVjbGFy
YXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVUeXBlRGVjbGFyYXRpb25zOyB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlR5cGVEZWZpbml0aW9uPj4gbV90eXBlRGVmaW5p
dGlvbnM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+PiBt
X3N0cnVjdHVyZURlZmluaXRpb25zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8QVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24+PiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7CisgICAgVmVjdG9yPFVu
aXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG1fZnVuY3Rpb25EZWZpbml0aW9uczsK
KyAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4+IG1f
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4+IG1fbmF0aXZlVHlwZURlY2xhcmF0aW9uczsKK307CisKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTdkOTM0YWQyN2YxYmZhOTEyMzFlMWQ4
NmRmMGI3NDE5ZDgzOGI5MC4uMTJlMzBlYjMwMTI5NjNmOGMxMjE1YWJkNjRmYzU0M2I0NGZlNGE1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTMwNCw2ICszMDQsMTkgQEAgTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogCiBNb2R1bGVzL3dlYmdwdS9E
T01XaW5kb3dXZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAor
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNv
dXJjZVNlbWFudGljLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3RhZ2VJbk91dFNlbWFudGljLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJM
aXRlcmFsVHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRlcmFs
VHlwZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5j
ZS5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsLmNwcAor
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGU0NTJj
MDYyYTZiYTI2ZjQ3MzI3MDc3ZmMxZjk5YWNmY2ZkOGNlYi4uYWUzNmVkZDM1YmY1MmRlZjNlYTBi
Y2FmOTA5NDNjZTk4YTA2MTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQwMyw2ICs2NDAzLDkgQEAKIAkJMUMyNEVFQTcx
QzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSlNGb250RmFjZVNldC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBG
b250VmFyaWFudEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9udFZhcmlhbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUMzMzI3NkMyMUNFREE0MjAwMERDOUYyIC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMzMyNzcxMjFDRjBCRTEwMDBEQzlGMiAvKiBXSExT
TE5hbWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hbWVkVHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzMzMjc3MjIxQ0YwRDJFMDAwREM5RjIgLyogV0hMU0xVbm5h
bWVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVD
b3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2Fj
aGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjYyNjBFMUM2
RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NjYyNjBGMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjQxNSw2ICs2NDE4LDE1IEBACiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3Jp
cHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFC
RTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZB
IC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXNvbHZhYmxl
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzNDIxREVENjNBMDA2
RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmxv
YXRMaXRlcmFsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzNTIx
REVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNjlCMzYyMURFRDY1NzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVyYWxUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTnVsbExpdGVyYWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNjlCMzgyMURGMDNFMTAw
NkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
Q0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzQTIxREYwNDAzMDA2RTg0NkEgLyogV0hMU0xOdWxs
TGl0ZXJhbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xOdWxsTGl0ZXJhbFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I2OUIzQjIxREYwNDFFMDA2RTg0
NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBU
ZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVbmRlcmxpbmVPZmZzZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFE
IC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzIxNSw4ICsxMzIyNyw4NCBAQAogCQlDMTFBOUVEMjIxNDA1NzhCMDBD
RkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN3aXRj
aGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRTFEMjM1
MjAzREYxNTQwMDU4NDY2NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmVlblByb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkx
QkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIwRjRG
NjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzIwRjRGNjcyMURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFVuc2lnbmVkSW50
ZWdlckxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjEwRTkxMTIx
QjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMEU5MTIyMUI0QkQx
MDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMZXhlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyog
V0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xCdWlsdElu
U2VtYW50aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjEzOEExNTIxRERF
Q0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMTM4QTE2MjFEREVDRkIwMEY1MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTM4QTE3
MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMUJGNkYzMjFDRDg5QUQwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xUcmFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTENvbnRpbnVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQm9vbGVhbkxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5IC8qIFdITFNMSW5kZXhFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW5kZXhFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNkY4MjFDRDg5QkIwMDIyNzk3OSAvKiBXSExTTEludGVnZXJM
aXRlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50ZWdlckxpdGVyYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2Vt
YW50aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50
aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xCYXNlU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEb1doaWxlTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjFCRjZGQzIxQ0Q4OUJGMDAyMjc5NzkgLyogV0hMU0xWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMUJGNkZEMjFDRDg5QzAwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVy
ZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNkZGMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExT
TElmU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSWZTdGF0ZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNM
RmFsbHRocm91Z2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGYWxsdGhyb3VnaC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xE
ZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xEZXJlZmVyZW5jZUV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDIyMUNEODlD
NDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZl
cmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcw
MzIxQ0Q4OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xS
ZXR1cm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDQyMUNEODlDNjAw
MjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29w
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3
OSAvKiBXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rp
b25BdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDYyMUNE
ODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMQ29tbWFFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJG
NzA3MjFDRDg5QzgwMDIyNzk3OSAvKiBXSExTTE51bGxMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMTnVsbExpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3
MDgyMUNEODlDOTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFJlc291cmNlU2VtYW50aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQXJyYXlUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xRdWFsaWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xRdWFsaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5IC8qIFdITFNMUmVmZXJlbmNlVHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFJlZmVyZW5jZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNl
bWFudGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzExMjFDRDg5RDEw
MDIyNzk3OSAvKiBXSExTTFR5cGVBcmd1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVB
cmd1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxMjIxQ0Q4OUQx
MDAyMjc5NzkgLyogV0hMU0xTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTMyMUNEODlEMjAwMjI3
OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWYXJp
YWJsZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxNDIx
Q0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzE1MjFDRDg5RDQwMDIyNzk3OSAvKiBXSExT
TExvZ2ljYWxOb3RFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTG9naWNhbE5vdEV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MTYyMUNEODlE
NTAwMjI3OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xD
YWxsRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxODIx
Q0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMRG90RXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcx
OTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMU3dpdGNoQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxQTIx
Q0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xCcmVhay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJyZWFr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzFCMjFDRDg5RDkwMDIyNzk3
OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzFDMjFDRDg5REEwMDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMVGVybmFyeUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIxQkY3MUUyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcxRjIxQ0Q4
OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
VHlwZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMDIx
Q0Q4OUREMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzIxQkY3MjEyMUNEODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzIyMjFDRDg5REYw
MDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEJ1
aWx0SW5TZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyMzIx
Q0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcyNDIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRp
b25NZW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyogV0hM
U0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RydWN0dXJlRGVm
aW5pdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyODIxQ0Q4OUU1
MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5NzkgLyogV0hMU0xUeXBlRGVm
aW5pdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVEZWZpbml0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAvKiBXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjcyQjIxQ0Q4OUU4
MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Np
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MkQyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNM
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExT
TFBvaW50ZXJUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUG9pbnRlclR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNM
QXNzaWdubWVudEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xBc3NpZ25tZW50RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczMTIxQ0Q4OUVF
MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xT
d2l0Y2hTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzIy
MUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9yTG9vcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTEZvckxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMRmxvYXRMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczNzIxQ0Q4
QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFCRjczODIxQ0Q4QTAz
MDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8q
IFdITFNMUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb2dyYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRW
YXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NGb250VmFyaWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjFERjJFODFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9u
dENhY2hlQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjI2LDYgKzEzMzE0LDcgQEAKIAkJQzI4MDgz
M0QxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gSlNGb250RmFjZS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQlDMjgwODMzRTFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ZvbnRGYWNlLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQzI4MEIzRkQxRUY0NjA4OTAwRDM1MTM1IC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
TnVsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbk51bGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjg4
QzcyRDIxQzk5MURBMDAyREY1Q0EgLyogV0hMU0xUeXBlQXJndW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xUeXBlQXJndW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMkFCMEFGNDFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250U2VsZWN0aW9uQWxn
b3JpdGhtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBQjBBRjUxRTZCM0M2
QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMkFCMEIwMzFFNkRFOTJDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvblZh
bHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTI0NSwxMiArMjUzMzQsMTA5IEBACiAJ
CUMyMTBFOTBEMjFCNEJDQTQwMEI3RjgzRCAvKiBXSExTTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxQkY2RjEyMUNEODk4RDAwMjI3OTc5IC8qIEFT
VCAqLywKIAkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8s
CiAJCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLywKKwkJCQlD
MjFCRjczNzIxQ0Q4QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICovLAorCQkJCUMyMUJG
NzM4MjFDRDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovLAorCQkJCUMyMUJGNzNBMjFD
RDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV0hM
U0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDMjFCRjZGMTIxQ0Q4OThE
MDAyMjc5NzkgLyogQVNUICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5
cGUuaCAqLywKKwkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUu
aCAqLywKKwkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhw
cmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VG
dW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBX
SExTTEJhc2VTZW1hbnRpYy5oICovLAorCQkJCUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3OSAvKiBX
SExTTEJsb2NrLmggKi8sCisJCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdITFNMQm9v
bGVhbkxpdGVyYWwuaCAqLywKKwkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xC
cmVhay5oICovLAorCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5T
ZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVp
bHRJblNlbWFudGljLmggKi8sCisJCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3OTc5IC8qIFdITFNM
Q2FsbEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hM
U0xDb21tYUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyog
V0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5
NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5o
ICovLAorCQkJCUMyMUJGNkY1MjFDRDg5QjUwMDIyNzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8s
CisJCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNz
aW9uLmggKi8sCisJCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMRG90RXhwcmVz
c2lvbi5oICovLAorCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVM
b29wLmggKi8sCisJCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAv
KiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMUJGNzI2MjFDRDg5RTMw
MDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmggKi8sCisJCQkJMUMzMzI3NkMyMUNF
REE0MjAwMERDOUYyIC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCisJCQkJ
QzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAorCQkJCUMy
MUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCisJCQkJQzIx
QkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCisJCQkJMUNC
NjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCisJ
CQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oICov
LAorCQkJCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAvKiBXSExTTEZvckxvb3AuaCAqLywKKwkJ
CQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICov
LAorCQkJCUMyMUJGNkZEMjFDRDg5QzAwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRp
b24uaCAqLywKKwkJCQlDMjFCRjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRl
ZmluaXRpb24uaCAqLywKKwkJCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0
YXRlbWVudC5oICovLAorCQkJCUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4
RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTElu
dGVnZXJMaXRlcmFsLmNwcCAqLywKKwkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hM
U0xJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBX
SExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCisJCQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4
NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzIyMUNEODlF
RjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxNTIx
Q0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAorCQkJCUMy
MUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24uaCAqLywKKwkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRl
ckV4cHJlc3Npb24uaCAqLywKKwkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xO
YW1lZFR5cGUuaCAqLywKKwkJCQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5
IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MjQyMUNEODlF
MTAwMjI3OTc5IC8qIFdITFNMTm9kZS5oICovLAorCQkJCUMyMUJGNzA3MjFDRDg5QzgwMDIyNzk3
OSAvKiBXSExTTE51bGxMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCM0EyMURGMDQwMzAwNkU4NDZB
IC8qIFdITFNMTnVsbExpdGVyYWxUeXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNjIxREVENjU3MDA2
RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjcyMTIxQ0Q4OURF
MDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKKwkJCQlD
MjFCRjcyRjIxQ0Q4OUVDMDAyMjc5NzkgLyogV0hMU0xQb2ludGVyVHlwZS5oICovLAorCQkJCUMy
MUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
ICovLAorCQkJCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICov
LAorCQkJCUMyMUJGNzFCMjFDRDg5RDkwMDIyNzk3OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZl
cmVuY2VUeXBlLmggKi8sCisJCQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVz
b2x2YWJsZVR5cGUuaCAqLywKKwkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyog
V0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCisJCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5
IC8qIFdITFNMUmV0dXJuLmggKi8sCisJCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdI
TFNMU2VtYW50aWMuaCAqLywKKwkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwICovLAorCQkJCUMyMUJGNzM2MjFDRDg5
RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovLAor
CQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5j
cHAgKi8sCisJCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNl
bWFudGljLmggKi8sCisJCQkJQzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVt
ZW50LmggKi8sCisJCQkJQzIxQkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJl
RGVmaW5pdGlvbi5oICovLAorCQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0
cnVjdHVyZUVsZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hM
U0xTd2l0Y2hDYXNlLmggKi8sCisJCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNM
U3dpdGNoU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdI
TFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5Nzkg
LyogV0hMU0xUcmFwLmggKi8sCisJCQkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNM
VHlwZS5oICovLAorCQkJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1
bWVudC5jcHAgKi8sCisJCQkJQzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFy
Z3VtZW50LmggKi8sCisJCQkJQzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURl
ZmluaXRpb24uaCAqLywKKwkJCQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBl
UmVmZXJlbmNlLmNwcCAqLywKKwkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xU
eXBlUmVmZXJlbmNlLmggKi8sCisJCQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNM
VW5uYW1lZFR5cGUuaCAqLywKKwkJCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKKwkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5
NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCM0IyMURG
MDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAor
CQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVy
YWxUeXBlLmggKi8sCisJCQkJQzIxQkY2RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUu
aCAqLywKKwkJCQlDMjFCRjcxMDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5
NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICovLAorCQkJCUMyMUJGNzA0MjFDRDg5QzYw
MDIyNzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBBU1Q7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVB
OUQgLyogbWVkaWFzZXNzaW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgK
</data>

          </attachment>
      

    </bug>

</bugzilla>