<?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>163571</bug_id>
          
          <creation_ts>2016-10-17 16:29:03 -0700</creation_ts>
          <short_desc>Implement more of the JavaScript WebAssembly API</short_desc>
          <delta_ts>2016-10-19 16:00:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161709</blocked>
    
    <blocked>163701</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241239</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-17 16:29:03 -0700</bug_when>
    <thetext>Expand out a bunch of the boilerplate from 163404, generate lut files, and test that these all throw when used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241728</commentid>
    <comment_count>1</comment_count>
      <attachid>292010</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-18 17:37:29 -0700</bug_when>
    <thetext>Created attachment 292010
patch

This patch sets up more of the JavaScript WebAssembly object and fixes a bunch of things as described in the ChangeLog. I&apos;m still not sure if I should first:
 1. Implement the `compile` API (which returns a promise).
 2. Implement the Module + Instance API (which are synchronous).

I think 2. is more useful in the very-near term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241730</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-18 17:40:05 -0700</bug_when>
    <thetext>Attachment 292010 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:5:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:5:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 8 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241761</commentid>
    <comment_count>3</comment_count>
      <attachid>292010</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-18 18:29:07 -0700</bug_when>
    <thetext>Comment on attachment 292010
patch

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

&gt; JSTests/ChangeLog:13
&gt; +           properties specified in the spec â .

Please remove non-ascii char.

&gt; JSTests/ChangeLog:15
&gt; +         * Fix a copy-pasta bug in wasm.json: floating-point const return values were

typo: /pasta/paste/.

&gt; JSTests/ChangeLog:18
&gt; +        â  https://github.com/WebAssembly/design/blob/master/JS.md

non-ascii char.

&gt; JSTests/wasm/assert.js:32
&gt; +    if (v !== undefined)

Not sure if it matters here but I think the better way to write this is:
    if (typeof v !== &quot;undefined&quot;)

Reason being that this is impervious to the value of undefined being overloaded.  But maybe that doesn&apos;t matter here.

&gt; JSTests/wasm/assert.js:56
&gt; +        throw new Error(`Expected to throw a ${type.name} with message &quot;${message}&quot;`);

Please remove stray leading indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241788</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-18 20:13:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 292010 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292010&amp;action=review
&gt; 
&gt; &gt; JSTests/ChangeLog:13
&gt; &gt; +           properties specified in the spec â .
&gt; 
&gt; Please remove non-ascii char.

That was on purpose: it&apos;s a dagger † for footnotes. Looks like the diff tool doesn&apos;t handle them well, but the patch does. Is that not a thing in ChangeLogs?

 † http://www.fileformat.info/info/unicode/char/2020/index.htm


 
&gt; &gt; JSTests/ChangeLog:15
&gt; &gt; +         * Fix a copy-pasta bug in wasm.json: floating-point const return values were
&gt; 
&gt; typo: /pasta/paste/.

Haha that was also on purpose. Will change.


&gt; &gt; JSTests/wasm/assert.js:32
&gt; &gt; +    if (v !== undefined)
&gt; 
&gt; Not sure if it matters here but I think the better way to write this is:
&gt;     if (typeof v !== &quot;undefined&quot;)
&gt; 
&gt; Reason being that this is impervious to the value of undefined being
&gt; overloaded.  But maybe that doesn&apos;t matter here.

Oh that&apos;s nice, I&apos;ll fix.


&gt; &gt; JSTests/wasm/assert.js:56
&gt; &gt; +        throw new Error(`Expected to throw a ${type.name} with message &quot;${message}&quot;`);
&gt; 
&gt; Please remove stray leading indentation.

Will do.


Started going through comments and realized that I forgot my laptop at works :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241927</commentid>
    <comment_count>5</comment_count>
      <attachid>292068</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-19 09:04:58 -0700</bug_when>
    <thetext>Created attachment 292068
patch

Address mlam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241929</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 09:07:16 -0700</bug_when>
    <thetext>Attachment 292068 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:5:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:5:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: JSTests/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 8 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241992</commentid>
    <comment_count>7</comment_count>
      <attachid>292068</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-19 11:05:18 -0700</bug_when>
    <thetext>Comment on attachment 292068
patch

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

r=me with some comments.

&gt; JSTests/wasm/js-api/test_basic_api.js:48
&gt; +// FIXME https://bugs.webkit.org/show_bug.cgi?id=159775 Implement and test these APIs further. For now they just throw.

nit: I think the general style in WebKit is to put the bugzilla url after the comment. The url just a reference for someone that wants more information. The comment, however, is likely to be more useful to someone scanning the code.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.h:33
&gt; +class JSWebAssemblyCompileError : public JSDestructibleObject {

I think you want to subclass error.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.h:33
&gt; +class JSWebAssemblyRuntimeError : public JSDestructibleObject {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242003</commentid>
    <comment_count>8</comment_count>
      <attachid>292068</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-19 11:26:03 -0700</bug_when>
    <thetext>Comment on attachment 292068
patch

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

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:68
&gt; +    // FIXME JS objects visited here with: visitor.append(&amp;thisObject-&gt;m_SomeObject);

It&apos;s very disconcerting to see a FIXME in a visit function.

But I checked and this visit function is correct. You should remove the fixme.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:68
&gt; +    // FIXME JS objects visited here with: visitor.append(&amp;thisObject-&gt;m_SomeObject);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242004</commentid>
    <comment_count>9</comment_count>
      <attachid>292068</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-19 11:26:44 -0700</bug_when>
    <thetext>Comment on attachment 292068
patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:36
&gt; +namespace JSC {
&gt; +
&gt; +    // FIXME lut functions go here.
&gt; +
&gt; +}

What&apos;s this all about? Doesn&apos;t the #include below suffice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242122</commentid>
    <comment_count>10</comment_count>
      <attachid>292112</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-19 14:37:43 -0700</bug_when>
    <thetext>Created attachment 292112
patch

(In reply to comment #7)
&gt; Comment on attachment 292068 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292068&amp;action=review
&gt; 
&gt; r=me with some comments.
&gt; 
&gt; &gt; JSTests/wasm/js-api/test_basic_api.js:48
&gt; &gt; +// FIXME https://bugs.webkit.org/show_bug.cgi?id=159775 Implement and test these APIs further. For now they just throw.
&gt; 
&gt; nit: I think the general style in WebKit is to put the bugzilla url after
&gt; the comment. The url just a reference for someone that wants more
&gt; information. The comment, however, is likely to be more useful to someone
&gt; scanning the code.

Done.


&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.h:33
&gt; &gt; +class JSWebAssemblyCompileError : public JSDestructibleObject {
&gt; 
&gt; I think you want to subclass error.

Done.


&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyRuntimeError.h:33
&gt; &gt; +class JSWebAssemblyRuntimeError : public JSDestructibleObject {
&gt; 
&gt; Ditto.

Done.


(In reply to comment #8)
&gt; Comment on attachment 292068 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292068&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCompileError.cpp:68
&gt; &gt; +    // FIXME JS objects visited here with: visitor.append(&amp;thisObject-&gt;m_SomeObject);
&gt; 
&gt; It&apos;s very disconcerting to see a FIXME in a visit function.
&gt; 
&gt; But I checked and this visit function is correct. You should remove the
&gt; fixme.

Yeah that was more for my own tracking when I started. Kinda obvious now, so I removed.


&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:68
&gt; &gt; +    // FIXME JS objects visited here with: visitor.append(&amp;thisObject-&gt;m_SomeObject);
&gt; 
&gt; Ditto.

Same.


(In reply to comment #9)
&gt; Comment on attachment 292068 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292068&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:36
&gt; &gt; +namespace JSC {
&gt; &gt; +
&gt; &gt; +    // FIXME lut functions go here.
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; What&apos;s this all about? Doesn&apos;t the #include below suffice?

Same as the above, it was just for me to remember, but it&apos;s not necessary so I removed them. I meant that the function declarations that the .lut.h files uses go here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242149</commentid>
    <comment_count>11</comment_count>
      <attachid>292112</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 15:13:55 -0700</bug_when>
    <thetext>Comment on attachment 292112
patch

Clearing flags on attachment: 292112

Committed r207572: &lt;http://trac.webkit.org/changeset/207572&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242150</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 15:13:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292010</attachid>
            <date>2016-10-18 17:37:29 -0700</date>
            <delta_ts>2016-10-19 09:04:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-JavaScript-WebAssembly-API-baby-steps.patch</filename>
            <type>text/plain</type>
            <size>211686</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxNThmYzg2YTcxN2RkNjZmMjAwNDYyY2MzNmM5YTA2Zjc5ZGZkYTc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IE9jdCAyMDE2IDE2OjI1OjUwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gSmF2YVNj
cmlwdCBXZWJBc3NlbWJseSBBUEk6IGJhYnkgc3RlcHMKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVu
dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6IDhiaXQKCiAqIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBv
d24gZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKICAgYm9pbGVycGxhdGUsIGFzIHdlbGwg
YXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFsbCBvZiB0aGUKICAgSlNXZWJBc3NlbWJseSou
e2gsY3BwfSwgYXMgd2VsbCBhcyBDb25zdHJ1Y3RvciBhbmQgUHJvdG90eXBlIGZpbGVzLCBhcmUK
ICAgY3VycmVudGx5IHRoZSBzYW1lIGJldHdlZW4gdGhlIDYgc3BlY2lmaWVkIFdlYkFzc2VtYmx5
IGNvbnN0cnVjdG9ycy4gSXQnbGwgYmUKICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBm
dW5jdGlvbnMgb24gY29uc3RydWN0ZWQgb2JqZWN0cyBhcyBwZXIgdGhlCiAgIHNwZWMsIGFuZCBo
YXZlIGVhY2ggb2YgdGhlc2UgZmlsZXMgZGl2ZXJnZS4KICogVXNlIGNvbnN0cnVjdG9yIG1hY3Jv
IHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgogKiBEcmFtYXRpY2FsbHkgaW1w
cm92ZSB0ZXN0aW5nIG9mIHRoZSBXZWJBc3NlbWJseSBBUEkgYnkgY2hlY2tpbmcgZm9yCiAgIHBy
b3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBzcGVjIOKAoC4KICogQ2xlYW4gdXAgYXNzZXJ0Lmpz
JyBleGNlcHRpb24gdGVzdGluZy4KICogRml4IGEgY29weS1wYXN0YSBidWcgaW4gd2FzbS5qc29u
OiBmbG9hdGluZy1wb2ludCBjb25zdCByZXR1cm4gdmFsdWVzIHdlcmUKICAgc3dhcHBlZC4KCuKA
oCBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1k
Ci0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgNDIgKysrKysKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDMyICsrLS0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMg
ICAgICAgICAgICAgIHwgIDc2ICsrKysrLS0tCiBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
QnVpbGRlckpTT04uanMgICAgICAgICB8ICAxNiArLQogLi4uL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzICAgfCAgIDQgKy0KIC4uLi93YXNtL3NlbGYtdGVzdC90
ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMgIHwgICA0ICstCiBKU1Rlc3RzL3dhc20vdXRp
bGl0aWVzLmpzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogSlNUZXN0cy93YXNt
L3dhc20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgIDMyICsrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMTg4ICsr
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlICAgICAgICAgIHwgIDE5ICstCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiAgICAgICB8IDIwMCArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCAgIHwgICA5ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5jcHAgICB8IDE4MiArKy0tLS0t
LS0tLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVj
dC5oICAgICB8ICAxNCArKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5j
cHAgICAgICAgICAgfCAgNzMgKysrKysrKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaCAgICAgICAgICAgIHwgIDQ5ICsrKysrCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwICAgICAgICAgICAgICB8ICA3MyArKysrKysrKwogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggfCAgNDkgKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIHwgIDczICsrKysr
KysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggICB8
ICA0OSArKysrKwogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVs
ZS5jcHAgfCAgNzMgKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNb2R1bGUuaCAgIHwgIDQ5ICsrKysrCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcCAgICAgICAgICB8ICA3MyArKysrKysrKwogLi4uL3dhc20vanMvSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvci5oICAgICAgICAgICAgfCAgNDkgKysrKysKIC4uLi9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAgIHwgIDczICsrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaCB8ICA0OSAr
KysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
fCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IuaCAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JQcm90b3R5cGUuY3BwICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAxMDkgKysrKysrKysrKysK
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICAgICAgIHwgIDU5
ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgICAg
ICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuaCAgICAgICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvci5jcHAgICAgICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwICAgICAgICAgfCAgNzEgKysrKysrKysK
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggICAgICAgICAgIHwgIDUw
ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgICAg
ICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaCAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUuY3BwICAgICAgICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmggICAgICAgICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAxMDkgKysrKysrKysr
KysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAgIHwg
IDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
Y3BwICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmggICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZUNvbnN0cnVjdG9yLmNwcCAgICAgICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oICAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgICAgICAgICAgfCAgNzEgKysrKysr
KysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCAgICAgICAgICAgIHwg
IDUwICsrKysrKwogNTEgZmlsZXMgY2hhbmdlZCwgMzA1OCBpbnNlcnRpb25zKCspLCAyMzkgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
Q29uc3RydWN0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5o
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBkZWNhNWRkLi43MzFiNWExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTEwLTE4ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBKYXZhU2NyaXB0IFdlYkFzc2VtYmx5
IEFQSTogYmFieSBzdGVwcworCisgICAgICAgICAqIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1
Y3RvcnMgaW50byB0aGVpciBvd24gZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAg
ICAgICAgYm9pbGVycGxhdGUsIGFzIHdlbGwgYXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFs
bCBvZiB0aGUKKyAgICAgICAgICAgSlNXZWJBc3NlbWJseSoue2gsY3BwfSwgYXMgd2VsbCBhcyBD
b25zdHJ1Y3RvciBhbmQgUHJvdG90eXBlIGZpbGVzLCBhcmUKKyAgICAgICAgICAgY3VycmVudGx5
IHRoZSBzYW1lIGJldHdlZW4gdGhlIDYgc3BlY2lmaWVkIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9y
cy4gSXQnbGwgYmUKKyAgICAgICAgICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBmdW5j
dGlvbnMgb24gY29uc3RydWN0ZWQgb2JqZWN0cyBhcyBwZXIgdGhlCisgICAgICAgICAgIHNwZWMs
IGFuZCBoYXZlIGVhY2ggb2YgdGhlc2UgZmlsZXMgZGl2ZXJnZS4KKyAgICAgICAgICogVXNlIGNv
bnN0cnVjdG9yIG1hY3JvIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgorICAg
ICAgICAgKiBEcmFtYXRpY2FsbHkgaW1wcm92ZSB0ZXN0aW5nIG9mIHRoZSBXZWJBc3NlbWJseSBB
UEkgYnkgY2hlY2tpbmcgZm9yCisgICAgICAgICAgIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRo
ZSBzcGVjIOKAoC4KKyAgICAgICAgICogQ2xlYW4gdXAgYXNzZXJ0LmpzJyBleGNlcHRpb24gdGVz
dGluZy4KKyAgICAgICAgICogRml4IGEgY29weS1wYXN0YSBidWcgaW4gd2FzbS5qc29uOiBmbG9h
dGluZy1wb2ludCBjb25zdCByZXR1cm4gdmFsdWVzIHdlcmUKKyAgICAgICAgICAgc3dhcHBlZC4K
KworICAgICAgICDigKAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9i
L21hc3Rlci9KUy5tZAorCisgICAgICAgIEltcGxlbWVudCBtb3JlIG9mIHRoZSBKYXZhU2NyaXB0
IFdlYkFzc2VtYmx5IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3YXNtL2Fzc2VydC5qczoKKyAgICAgICAgKGV4cG9ydC5jb25zdC5pc1VuZGVm
KTogYWRkIHRoaXMgdXNlZnVsIGhlbHBlcgorICAgICAgICAoZXhwb3J0LmNvbnN0LnRocm93cyk6
IGZvbGQgb3RoZXIgdGhyb3cgY2hlY2tzIGludG8gdGhpcyBvbmUsIGFuZCBjaGVjayBtZXNzYWdl
IGFzIHdlbGwKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qczoKKyAgICAg
ICAgKGNvbnN0LmNoZWNrT3duUHJvcGVydHlEZXNjcmlwdG9yKTogY2hlY2sgb3duIHByb3BlcnR5
IGRlc2NyaXB0b3IgZm9sbG93cyB0aGUgc3BlYworICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rl
c3RfQnVpbGRlckpTT04uanM6CisgICAgICAgIChjb25zdC5hc3NlcnRPcFRocm93cyk6IHVzZSBu
ZXcgYXNzZXJ0IEFQSQorICAgICAgICAoQ2hlY2tlZE9wY29kZUFyZ3VtZW50c1Rvb01hbnkpOiBk
aXR0bworICAgICAgICAoQ2hlY2tlZE9wY29kZUFyZ3VtZW50c05vdEVub3VnaCk6IGRpdHRvCisg
ICAgICAgIChDYWxsSW52YWxpZCk6IGRpdHRvCisgICAgICAgIChJMzJDb25zdEludmFsaWQpOiBk
aXR0bworICAgICAgICAoRjMyQ29uc3RJbnZhbGlkKTogZGl0dG8gKGFuZCB0aGlzIGNhdWd0aCB0
aGUgSlNPTiBjb3B5LXBhc3RhIGJ1ZykKKyAgICAgICAgKEY2NENvbnN0SW52YWxpZCk6IGRpdHRv
CisgICAgICAgICogd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanM6
IHVzZSBuZXcgYXNzZXJ0IEFQSQorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2
ZWxCaW5hcnlfdmFydWludC5qczogdXNlIG5ldyBhc3NlcnQgQVBJCisgICAgICAgICogd2FzbS91
dGlsaXRpZXMuanM6IGFkZCAiZ2xvYmFsIiBvYmplY3QsIHVzZWQgaW4gYmFzaWMgQVBJIHRlc3Qg
KHRvIGFjY2VzcyBnbG9iYWwuV2ViQXNzZW1ibHkpLgorICAgICAgICAqIHdhc20vd2FzbS5qc29u
OiBmaXggY29weS1wYXN0YQorCiAyMDE2LTEwLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIHRlc3RzIGZvciB0aGUgZG91YmxlLT5TdHJpbmcg
Y29udmVyc2lvbiBpbiBWYWx1ZUFkZCBjb25zdGFudCBmb2xkaW5nCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBhMTE0YjMz
Li40ZjU3M2U1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9hc3NlcnQuanMKQEAgLTI4LDYgKzI4LDExIEBAIGV4cG9ydCBjb25zdCBub3RVbmRl
ZiA9ICh2KSA9PiB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkbid0IGJlIHVuZGVm
aW5lZCIpOwogfTsKIAorZXhwb3J0IGNvbnN0IGlzVW5kZWYgPSAodikgPT4geworICAgIGlmICh2
ICE9PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIGJlIHVuZGVm
aW5lZCIpOworfTsKKwogZXhwb3J0IGNvbnN0IGVxID0gKGxocywgcmhzKSA9PiB7CiAgICAgaWYg
KGxocyAhPT0gcmhzKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCB0aGUgc2FtZTogIiR7
bGhzfSIgYW5kICIke3Joc30iYCk7CkBAIC00MCwzMCArNDUsMTMgQEAgZXhwb3J0IGNvbnN0IGdl
ID0gKGxocywgcmhzKSA9PiB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQ6ICIk
e2xoc30iIDwgIiR7cmhzfSJgKTsKIH07CiAKLWV4cG9ydCBjb25zdCB0aHJvd3NFcnJvciA9IChv
cEZuLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAgICAgIG1l
c3NhZ2UgPSAiIGZvciAiICsgbWVzc2FnZTsKLQotICAgIHRyeSB7Ci0gICAgICAgIG9wRm4oLi4u
YXJncyk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9y
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
IGFuIEVycm9yJHttZXNzYWdlfSwgZ290ICR7ZX1gKTsKLSAgICB9Ci0gICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhbiBFcnJvciR7bWVzc2FnZX1gKTsKLX07Ci0KLWV4cG9y
dCBjb25zdCB0aHJvd3NSYW5nZUVycm9yID0gKG9wRm4sIG1lc3NhZ2UsIC4uLmFyZ3MpID0+IHsK
LSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZSA9ICIgZm9yICIgKyBtZXNzYWdlOwot
CitleHBvcnQgY29uc3QgdGhyb3dzID0gKGZ1bmMsIHR5cGUsIG1lc3NhZ2UsIC4uLmFyZ3MpID0+
IHsKICAgICB0cnkgewotICAgICAgICBvcEZuKC4uLmFyZ3MpOworICAgICAgICBmdW5jKC4uLmFy
Z3MpOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSYW5nZUVy
cm9yKQorICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIHR5cGUgJiYgZS5tZXNzYWdlID09PSBtZXNz
YWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkIGEgUmFuZ2VFcnJvciR7bWVzc2FnZX0sIGdvdCAke2V9YCk7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIk
e21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7ZS5tZXNzYWdlfSJgKTsK
ICAgICB9Ci0gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byB0aHJvdyBhIFJhbmdlRXJy
b3Ike21lc3NhZ2V9YCk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhy
b3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIke21lc3NhZ2V9ImApOwogfTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMgYi9KU1Rlc3RzL3dh
c20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzCmluZGV4IDE5NTNjYjAuLjQ5YWM4ZWEgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMKKysrIGIvSlNUZXN0
cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcwpAQCAtMSwzNyArMSw1NSBAQAotaWYgKFdl
YkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCi0gICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBm
aW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QiKTsKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9t
ICcuLi9hc3NlcnQuanMnOworaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4uL3V0aWxpdGll
cy5qcyc7CiAKLWNvbnN0IGZ1bmN0aW9uUHJvcGVydGllcyA9IFsidmFsaWRhdGUiLCAiY29tcGls
ZSJdOwotY29uc3QgY29uc3RydWN0b3JQcm9wZXJ0aWVzID0gWyJNb2R1bGUiLCAiSW5zdGFuY2Ui
LCAiTWVtb3J5IiwgIlRhYmxlIiwgIkNvbXBpbGVFcnJvciJdOworY29uc3QgY2hlY2tPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IgPSAob2JqLCBwcm9wLCBleHBlY3QpID0+IHsKKyAgICBjb25zdCBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHByb3ApOworICAg
IGFzc2VydC5lcSh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSwgZXhwZWN0LnR5cGVvZnZhbHVlKTsK
KyAgICBhc3NlcnQuZXEoZGVzY3JpcHRvci53cml0YWJsZSwgZXhwZWN0LndyaXRhYmxlKTsKKyAg
ICBhc3NlcnQuZXEoZGVzY3JpcHRvci5jb25maWd1cmFibGUsIGV4cGVjdC5jb25maWd1cmFibGUp
OworICAgIGFzc2VydC5lcShkZXNjcmlwdG9yLmVudW1lcmFibGUsIGV4cGVjdC5lbnVtZXJhYmxl
KTsKK307CiAKLWZvciAoY29uc3QgZiBvZiBmdW5jdGlvblByb3BlcnRpZXMpCi0gICAgaWYgKFdl
YkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291
bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5jdGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKK2NvbnN0
IGZ1bmN0aW9uUHJvcGVydGllcyA9IHsKKyAgICAidmFsaWRhdGUiOiB7IGxlbmd0aDogMSB9LAor
ICAgICJjb21waWxlIjogIHsgbGVuZ3RoOiAxIH0sCit9OworY29uc3QgY29uc3RydWN0b3JQcm9w
ZXJ0aWVzID0geworICAgICJNb2R1bGUiOiAgICAgICB7IHR5cGVvZnZhbHVlOiAiZnVuY3Rpb24i
LCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwg
bGVuZ3RoOiAxIH0sCisgICAgIkluc3RhbmNlIjogICAgIHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlv
biIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNl
LCBsZW5ndGg6IDEgfSwKKyAgICAiTWVtb3J5IjogICAgICAgeyB0eXBlb2Z2YWx1ZTogImZ1bmN0
aW9uIiwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFs
c2UsIGxlbmd0aDogMSB9LAorICAgICJUYWJsZSI6ICAgICAgICB7IHR5cGVvZnZhbHVlOiAiZnVu
Y3Rpb24iLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBm
YWxzZSwgbGVuZ3RoOiAxIH0sCisgICAgIkNvbXBpbGVFcnJvciI6IHsgdHlwZW9mdmFsdWU6ICJm
dW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6
IGZhbHNlLCBsZW5ndGg6IDEgfSwKKyAgICAiUnVudGltZUVycm9yIjogeyB0eXBlb2Z2YWx1ZTog
ImZ1bmN0aW9uIiwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJs
ZTogZmFsc2UsIGxlbmd0aDogMSB9LAorfTsKIAotZm9yIChjb25zdCBjIG9mIGNvbnN0cnVjdG9y
UHJvcGVydGllcykKLSAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9y
IHByb3BlcnR5ICIke2N9ImApOwogCi0vLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBBUElzIGZ1cnRo
ZXIuIEZvciBub3cgdGhleSBqdXN0IHRocm93LgorYXNzZXJ0Lm5vdFVuZGVmKFdlYkFzc2VtYmx5
KTsKK2NoZWNrT3duUHJvcGVydHlEZXNjcmlwdG9yKHV0aWxpdGllcy5nbG9iYWwsICJXZWJBc3Nl
bWJseSIsIHsgdHlwZW9mdmFsdWU6ICJvYmplY3QiLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJh
YmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSB9KTsKK2Fzc2VydC5lcShTdHJpbmcoV2ViQXNz
ZW1ibHkpLCAiW29iamVjdCBXZWJBc3NlbWJseV0iKTsKK2Fzc2VydC5pc1VuZGVmKFdlYkFzc2Vt
Ymx5Lmxlbmd0aCk7CisKK2ZvciAoY29uc3QgZiBpbiBmdW5jdGlvblByb3BlcnRpZXMpIHsKKyAg
ICBhc3NlcnQubm90VW5kZWYoV2ViQXNzZW1ibHlbZl0pOworICAgIGFzc2VydC5lcShXZWJBc3Nl
bWJseVtmXS5uYW1lLCBmKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHlbZl0ubGVuZ3RoLCBm
dW5jdGlvblByb3BlcnRpZXNbZl0ubGVuZ3RoKTsKK30KIAotZm9yIChjb25zdCBmIG9mIGZ1bmN0
aW9uUHJvcGVydGllcykgewotICAgIHRyeSB7Ci0gICAgICAgIFdlYkFzc2VtYmx5W2ZdKCk7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNz
ZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yLCBnb3QgJHtlfWApOwotICAgIH0KLSAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBF
cnJvcmApOworZm9yIChjb25zdCBjIGluIGNvbnN0cnVjdG9yUHJvcGVydGllcykgeworICAgIGFz
c2VydC5ub3RVbmRlZihXZWJBc3NlbWJseVtjXSk7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5
W2NdLm5hbWUsIGMpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseVtjXS5sZW5ndGgsIGNvbnN0
cnVjdG9yUHJvcGVydGllc1tjXS5sZW5ndGgpOworICAgIGNoZWNrT3duUHJvcGVydHlEZXNjcmlw
dG9yKFdlYkFzc2VtYmx5LCBjLCBjb25zdHJ1Y3RvclByb3BlcnRpZXNbY10pOworICAgIC8vIENo
ZWNrIHRoZSBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZS4KKyAgICBjaGVja093blByb3BlcnR5RGVz
Y3JpcHRvcihXZWJBc3NlbWJseVtjXSwgInByb3RvdHlwZSIsIHsgdHlwZW9mdmFsdWU6ICJvYmpl
Y3QiLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIGVudW1lcmFibGU6IGZh
bHNlIH0pOworICAgIGFzc2VydC5lcShTdHJpbmcoV2ViQXNzZW1ibHlbY10ucHJvdG90eXBlKSwg
YFtvYmplY3QgV2ViQXNzZW1ibHkuJHtjfS5wcm90b3R5cGVdYCk7CisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBXZWJBc3NlbWJseVtjXSgpLCBUeXBlRXJyb3IsIGBjYWxsaW5nIFdlYkFzc2VtYmx5
LiR7Y30gY29uc3RydWN0b3Igd2l0aG91dCBuZXcgaXMgaW52YWxpZGApOwogfQogCi1mb3IgKGNv
bnN0IGMgb2YgY29uc3RydWN0b3JQcm9wZXJ0aWVzKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgbGV0
IHYgPSBuZXcgV2ViQXNzZW1ibHlbY10oKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlm
IChlIGluc3RhbmNlb2YgRXJyb3IpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCBuZXcgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFu
IEVycm9yLCBnb3QgJHtlfWApOwotICAgIH0KLSAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
IG5ldyBXZWJBc3NlbWJseS4ke2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3JgKTsKKy8vIEZJWE1FIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3NzUgSW1wbGVtZW50IGFu
ZCB0ZXN0IHRoZXNlIEFQSXMgZnVydGhlci4gRm9yIG5vdyB0aGV5IGp1c3QgdGhyb3cuCisKK2Zv
ciAoY29uc3QgZiBpbiBmdW5jdGlvblByb3BlcnRpZXMpIHsKKyAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IFdlYkFzc2VtYmx5W2ZdKCksIEVycm9yLCBgV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1w
bGVtZW50IHRoZSAke2Z9IGZ1bmN0aW9uIHByb3BlcnR5YCk7CiB9CisKK2ZvciAoY29uc3QgYyBp
biBjb25zdHJ1Y3RvclByb3BlcnRpZXMpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHlbY10oKSwgRXJyb3IsIGBXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQg
dGhlICR7Y30gY29uc3RydWN0b3IgcHJvcGVydHlgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9CdWlsZGVySlNPTi5qcwppbmRleCBhYzliODFmLi4wOTM0MjMxIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMKKysrIGIvSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCkBAIC0xLDkgKzEsOSBAQAogaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcu
Li9CdWlsZGVyLmpzJzsKIAotY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9
ICIiKSA9PiB7Citjb25zdCBhc3NlcnRPcFRocm93cyA9IChvcEZuLCBtZXNzYWdlKSA9PiB7CiAg
ICAgbGV0IGYgPSAobmV3IEJ1aWxkZXIoKSkuQ29kZSgpLkZ1bmN0aW9uKCk7Ci0gICAgYXNzZXJ0
LnRocm93c0Vycm9yKG9wRm4sIG1lc3NhZ2UsIGYpOworICAgIGFzc2VydC50aHJvd3Mob3BGbiwg
RXJyb3IsIG1lc3NhZ2UsIGYpOwogfTsKIAogKGZ1bmN0aW9uIEVtcHR5TW9kdWxlKCkgewpAQCAt
MTkzLDcgKzE5Myw3IEBAIGNvbnN0IGFzc2VydE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAi
IikgPT4gewogfSkoKTsKIAogKGZ1bmN0aW9uIENoZWNrZWRPcGNvZGVBcmd1bWVudHNUb29NYW55
KCkgewotICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5Ob3AoInVoLW9oISIpKTsKKyAgICBhc3Nl
cnRPcFRocm93cyhmID0+IGYuTm9wKCJ1aC1vaCEiKSwgYCJub3AiIGV4cGVjdHMgMCBpbW1lZGlh
dGVzLCBnb3QgMWApOwogfSkoKTsKIAogKGZ1bmN0aW9uIFVuY2hlY2tlZE9wY29kZUFyZ3VtZW50
c1Rvb01hbnkoKSB7CkBAIC0yMDEsNyArMjAxLDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAo
b3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7CiB9KSgpOwogCiAoZnVuY3Rpb24gQ2hlY2tlZE9wY29k
ZUFyZ3VtZW50c05vdEVub3VnaCgpIHsKLSAgICBhc3NlcnRPcFRocm93cyhmID0+IGYuSTMyQ29u
c3QoKSk7CisgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KCksIGAiaTMyLmNvbnN0
IiBleHBlY3RzIDEgaW1tZWRpYXRlcywgZ290IDBgKTsKIH0pKCk7CiAKIChmdW5jdGlvbiBVbmNo
ZWNrZWRPcGNvZGVBcmd1bWVudHNOb3RFbm91Z2goKSB7CkBAIC0yMjEsNyArMjIxLDcgQEAgY29u
c3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7CiAKIChmdW5jdGlv
biBDYWxsSW52YWxpZCgpIHsKICAgICBmb3IgKGxldCBjIG9mIFstMSwgMHgxMDAwMDAwMDAsICIw
Iiwge30sIEluZmluaXR5LCAtSW5maW5pdHksIE5hTiwgLU5hTiwgbnVsbF0pCi0gICAgICAgIGFz
c2VydE9wVGhyb3dzKGYgPT4gZi5DYWxsKGMpLCBjKTsKKyAgICAgICAgYXNzZXJ0T3BUaHJvd3Mo
ZiA9PiBmLkNhbGwoYyksIGBJbnZhbGlkIHZhbHVlIG9uIGNhbGw6IGdvdCAiJHtjfSIsIGV4cGVj
dGVkIGkzMmApOwogfSkoKTsKIAogKGZ1bmN0aW9uIEkzMkNvbnN0VmFsaWQoKSB7CkBAIC0yMzcs
NyArMjM3LDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIiKSA9
PiB7CiAKIChmdW5jdGlvbiBJMzJDb25zdEludmFsaWQoKSB7CiAgICAgZm9yIChsZXQgYyBvZiBb
LTEsIDB4MTAwMDAwMDAwLCAwLjEsIC0wLjEsICIwIiwge30sIEluZmluaXR5LCBudWxsXSkKLSAg
ICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KGMpLCBjKTsKKyAgICAgICAgYXNz
ZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KGMpLCBgSW52YWxpZCB2YWx1ZSBvbiBpMzIuY29u
c3Q6IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGkzMmApOwogfSkoKTsKIAogLy8gRklYTUU6IHRlc3Qg
aTY0LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIwCkBAIC0y
NTUsNyArMjU1LDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIi
KSA9PiB7CiAKIChmdW5jdGlvbiBGMzJDb25zdEludmFsaWQoKSB7CiAgICAgZm9yIChsZXQgYyBv
ZiBbIjAiLCB7fSwgSW5maW5pdHksIC1JbmZpbml0eSwgTmFOLCAtTmFOLCBudWxsXSkKLSAgICAg
ICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkYzMkNvbnN0KGMpLCBjKTsKKyAgICAgICAgYXNzZXJ0
T3BUaHJvd3MoZiA9PiBmLkYzMkNvbnN0KGMpLCBgSW52YWxpZCB2YWx1ZSBvbiBmMzIuY29uc3Q6
IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGYzMmApOwogfSkoKTsKIAogKGZ1bmN0aW9uIEY2NENvbnN0
VmFsaWQoKSB7CkBAIC0yNzEsNyArMjcxLDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BG
biwgbWVzc2FnZSA9ICIiKSA9PiB7CiAKIChmdW5jdGlvbiBGNjRDb25zdEludmFsaWQoKSB7CiAg
ICAgZm9yIChsZXQgYyBvZiBbIjAiLCB7fSwgSW5maW5pdHksIC1JbmZpbml0eSwgTmFOLCAtTmFO
LCBudWxsXSkKLSAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkY2NENvbnN0KGMpLCBjKTsK
KyAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkY2NENvbnN0KGMpLCBgSW52YWxpZCB2YWx1
ZSBvbiBmNjQuY29uc3Q6IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGY2NGApOwogfSkoKTsKIAogKGZ1
bmN0aW9uIENhbGxPbmVGcm9tU3RhY2soKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2Vs
Zi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzIGIvSlNUZXN0cy93YXNtL3NlbGYt
dGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcwppbmRleCBiMmMyZDgxLi43ZGRjOGNm
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlf
dmFyaW50LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFy
eV92YXJpbnQuanMKQEAgLTIwLDExICsyMCwxMSBAQCBmb3IgKGxldCBpID0gMDsgaSA8IExMQi52
YXJCaXRzTWF4ICsgMTsgKytpKSB7CiAgICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5hcnkoKTsK
ICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikKICAgICAgICAgYi51aW50OCgweDgwKTsK
LSAgICBhc3NlcnQudGhyb3dzUmFuZ2VFcnJvcigoKSA9PiBiLmdldFZhcmludCgwKSk7CisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAk
e2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7CiB9CiAKIGxldCBiID0g
bmV3IExvd0xldmVsQmluYXJ5KCk7CiBmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4
OyArK2kpCiAgICAgYi51aW50OCgweDgwKTsKIGIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dz
UmFuZ2VFcnJvcigoKSA9PiBiLmdldFZhcmludCgwKSk7Cithc3NlcnQudGhyb3dzKCgpID0+IGIu
Z2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9vIG11Y2ggYXQgNmApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVp
bnQuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWlu
dC5qcwppbmRleCBlOGI5Y2JiLi5iZTgyZTEzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc2Vs
Zi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5qcworKysgYi9KU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5qcwpAQCAtMTksMTEgKzE5LDEx
IEBAIGZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXggKyAxOyArK2kpIHsKICAgICBs
ZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwogICAgIGZvciAobGV0IGogPSAwOyBqIDwgaTsg
KytqKQogICAgICAgICBiLnVpbnQ4KDB4ODApOwotICAgIGFzc2VydC50aHJvd3NSYW5nZUVycm9y
KCgpID0+IGIuZ2V0VmFydWludCgwKSk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZh
cmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFu
Z2UgWzAsICR7aX0pYCk7CiB9CiAKIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CiBmb3Ig
KGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCiAgICAgYi51aW50OCgweDgwKTsK
IGIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzUmFuZ2VFcnJvcigoKSA9PiBiLmdldFZhcnVp
bnQoMCkpOworYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwg
YFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS91dGls
aXRpZXMuanMgYi9KU1Rlc3RzL3dhc20vdXRpbGl0aWVzLmpzCmluZGV4IDdjNjM4NjcuLjZkYWE3
YmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS91dGlsaXRpZXMuanMKKysrIGIvSlNUZXN0cy93
YXNtL3V0aWxpdGllcy5qcwpAQCAtMzAsNiArMzAsMTMgQEAgY29uc3QgX2Vudmlyb25tZW50ID0K
ICAgICAgICAgOiAodHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICJmdW5jdGlvbiIgPyAid29ya2Vy
IgogICAgICAgICAgICA6ICJzaGVsbCIpKSk7CiAKK2xldCBfZ2xvYmFsID0gKHR5cGVvZiBnbG9i
YWwgIT09ICdvYmplY3QnIHx8ICFnbG9iYWwgfHwgZ2xvYmFsLk1hdGggIT09IE1hdGggfHwgZ2xv
YmFsLkFycmF5ICE9PSBBcnJheSkKKyAgICA/ICgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQn
KSA/IHNlbGYKKyAgICAgICA6ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgPyB3aW5k
b3cKKyAgICAgICA6ICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykgPyBnbG9iYWwKKyAg
ICAgICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCkpCisgICAgOiBnbG9iYWw7CisKIGNvbnN0
IF9ldmFsID0geCA9PiBldmFsLmNhbGwobnVsbCwgeCk7CiAKIGNvbnN0IF9yZWFkID0gZmlsZW5h
bWUgPT4gewpAQCAtNjAsNCArNjcsNCBAQCBjb25zdCBfanNvbiA9IGZpbGVuYW1lID0+IHsKIH0K
IAogLy8gVXNlIHVuZGVyc2NvcmUgbmFtZXMgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBidWlsdGlu
IG5hbWVzLgotZXhwb3J0IHsgX2V2YWwgYXMgZXZhbCwgX3JlYWQgYXMgcmVhZCwgX2xvYWQgYXMg
bG9hZCwgX2pzb24gYXMganNvbiB9OworZXhwb3J0IHsgX2V2YWwgYXMgZXZhbCwgX3JlYWQgYXMg
cmVhZCwgX2xvYWQgYXMgbG9hZCwgX2pzb24gYXMganNvbiwgX2dsb2JhbCBhcyBnbG9iYWwgfTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5q
c29uCmluZGV4IDU1YTBlZWUuLmE4MjM5ZDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNt
Lmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtNTgsOCArNTgsOCBAQAogICAg
ICAgICAiZW5kIjogICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNvbnRyb2wiLCAgICAi
dmFsdWUiOiAgMTUsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJlbmQgYSBibG9jaywgbG9vcCwgb3IgaWYiIH0sCiAg
ICAgICAgICJpMzIuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQg
YXMgaTMyIiB9LAogICAgICAgICAiaTY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5Ijog
InNwZWNpYWwiLCAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
InZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidmFyaW50NjQifV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVl
IGludGVycHJldGVkIGFzIGk2NCIgfSwKLSAgICAgICAgImY2NC5jb25zdCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDE4LCAicmV0dXJuIjogWyJmMzIi
XSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogInVpbnQ2NCJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBj
b25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmNjQiIH0sCi0gICAgICAgICJmMzIuY29uc3Qi
OiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAxOSwgInJl
dHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjMyIiB9LAorICAgICAg
ICAiZjY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFs
dWUiOiAgMTgsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAg
InR5cGUiOiAidWludDY0In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGY2
NCIgfSwKKyAgICAgICAgImYzMi5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVj
aWFsIiwgICAgInZhbHVlIjogIDE5LCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVy
IjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1
ZSIsICAgICAgICAgICJ0eXBlIjogInVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRl
cnByZXRlZCBhcyBmMzIiIH0sCiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsibG9jYWwiXSwg
ICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBs
b2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAgICJzZXRfbG9jYWwiOiAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAyMSwgInJldHVybiI6
IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsibG9jYWwiXSwgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIiB9LAogICAgICAgICAidGVl
X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAg
MjUsICJyZXR1cm4iOiBbInByZXYiXSwgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQg
cmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDQ1OGEyYjQuLjljYTNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTg2Nyw2ICs4NjcsMjUgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3
YXNtL1dBU01QbGFuLmNwcAogICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAKKyAgICB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCisgICAgd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAor
ICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKKyAgICB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuY3BwCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3Bw
CisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAorICAg
IHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwCisgICAgd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNw
cAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0
cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKKwog
ICAgIHlhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgeWFyci9ZYXJyQ2Fub25pY2FsaXpl
VUNTMi5jcHAKICAgICB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTkxNyw2ICs5MzYsMTkg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCisKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCisg
ICAgd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNw
cAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCisgICAg
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAogKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFS
SUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1M2I0ZjRjLi44NzFlZTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTEgQEAKKzIwMTYtMTAtMTggIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIEphdmFTY3JpcHQgV2ViQXNzZW1i
bHkgQVBJOiBiYWJ5IHN0ZXBzCisKKyAgICAgICAgICogRXhwYW5kIFdlYkFzc2VtYmx5IGNvbnN0
cnVjdG9ycyBpbnRvIHRoZWlyIG93biBmaWxlcy4gVGhpcyByZXF1aXJlcyBhIGxvdCBvZgorICAg
ICAgICAgICBib2lsZXJwbGF0ZSwgYXMgd2VsbCBhcyBhZGRpbmcgdGhlIC5sdXQuaCBmaWxlcy4g
QWxsIG9mIHRoZQorICAgICAgICAgICBKU1dlYkFzc2VtYmx5Ki57aCxjcHB9LCBhcyB3ZWxsIGFz
IENvbnN0cnVjdG9yIGFuZCBQcm90b3R5cGUgZmlsZXMsIGFyZQorICAgICAgICAgICBjdXJyZW50
bHkgdGhlIHNhbWUgYmV0d2VlbiB0aGUgNiBzcGVjaWZpZWQgV2ViQXNzZW1ibHkgY29uc3RydWN0
b3JzLiBJdCdsbCBiZQorICAgICAgICAgICBlYXN5IHRvIGltcGxlbWVudCBpbmRpdmlkdWFsIGZ1
bmN0aW9ucyBvbiBjb25zdHJ1Y3RlZCBvYmplY3RzIGFzIHBlciB0aGUKKyAgICAgICAgICAgc3Bl
YywgYW5kIGhhdmUgZWFjaCBvZiB0aGVzZSBmaWxlcyBkaXZlcmdlLgorICAgICAgICAgKiBVc2Ug
Y29uc3RydWN0b3IgbWFjcm8gd2hlbiBpbml0aWFsaXppbmcgdGhlIGdsb2JhbCBvYmplY3QuCisg
ICAgICAgICAqIERyYW1hdGljYWxseSBpbXByb3ZlIHRlc3Rpbmcgb2YgdGhlIFdlYkFzc2VtYmx5
IEFQSSBieSBjaGVja2luZyBmb3IKKyAgICAgICAgICAgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4g
dGhlIHNwZWMg4oCgLgorICAgICAgICAgKiBDbGVhbiB1cCBhc3NlcnQuanMnIGV4Y2VwdGlvbiB0
ZXN0aW5nLgorICAgICAgICAgKiBGaXggYSBjb3B5LXBhc3RhIGJ1ZyBpbiB3YXNtLmpzb246IGZs
b2F0aW5nLXBvaW50IGNvbnN0IHJldHVybiB2YWx1ZXMgd2VyZQorICAgICAgICAgICBzd2FwcGVk
LgorCisgICAgICAgIOKAoCBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Js
b2IvbWFzdGVyL0pTLm1kCisKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIEphdmFTY3Jp
cHQgV2ViQXNzZW1ibHkgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgLmx1dC5oIGdlbmVyYXRpb24KKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBkaXR0bworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGFkZCAubHV0LmggZ2VuZXJhdGlvbiBhbmQgYWxs
IHRoZSBuZXcgZmlsZXMKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOiB1c2UgYW1jcm8gdG8gbGlzdCBhbGwg
Y29uc3RydWN0b3JzCisgICAgICAgICogd2FzbS9XZWJBc3NlbWJseU9iamVjdC5jcHA6IHVuYm9p
bGVycGxhdGUsIGFsbCBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAg
KiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0Lmg6IGRpdHRvCisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3I6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
OjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5o
LgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlNZW1vcnk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TWVtb3J5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlNZW1vcnk6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5Ojp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0
LmguCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OkpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmpl
Y3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5VGFibGU6OkpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlUYWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
VGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Ip
OgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERh
dGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpn
ZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yOjpDb21waWxlRXJyb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
OjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpn
ZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Vi
QXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yOjpJbnN0YW5jZVN0cnVjdHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaDogQ29waWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAgICAgIChKU0M6
OmNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU1lbW9yeUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6Ok1lbW9y
eVN0cnVjdHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlw
ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5
T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6Oldl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlNb2R1bGUpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseU1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6V2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yOjpNb2R1bGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSk6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3I6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvcjo6UnVudGltZUVycm9yU3RydWN0dXJlKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZTo6V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseVRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6Oldl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvcjo6VGFibGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisKIDIwMTYtMTAtMTcgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBaXI6OklSQyBkb2Vzbid0
IG5lZWQgdG8gaGF2ZSBhIHNwZWNpYWwtY2FzZSBmb3IgdW5jb2xvcmVkIFRtcHMgc2luY2UgdGhl
eSBhbGwgZ2V0IGNvbG9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggYjUzMzZhNi4uZWVjYjUzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDkgKzI4LDEwIEBAIFZQQVRIID0gXAogICAgICQoSmF2YVNj
cmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL3J1bnRpbWUgXAotCSQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwKLQkk
KEphdmFTY3JpcHRDb3JlKS9qaXQgXAotCSQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKKyAg
ICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkv
aml0IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCisgICAgJChKYXZhU2NyaXB0
Q29yZSkvd2FzbS9qcyBcCiAjCiAKIFBZVEhPTiA9IHB5dGhvbgpAQCAtMTU5LDYgKzE2MCwxOCBA
QCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwK
KyAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
Lmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBX
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0Lmgg
XAorICAgIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0LmggXAorICAgIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IubHV0LmggXAorICAgIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0
LmggXAogIwogCiAkKE9CSkVDVF9MVVRfSEVBREVSUyk6ICUubHV0LmggOiAlLmNwcCAkKEphdmFT
Y3JpcHRDb3JlKS9jcmVhdGVfaGFzaF90YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhMTkyZTg5Li44NGY4YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTg3OSw2ICsxODc5LDU0IEBACiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYu
YSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
NDhEMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKIAkJQUQyRkNCODgxREFFQkYz
QzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU9iamVjdC5jcHAgKi87IH07CiAJCUFEMkZDQjg5MURBRUJGM0YwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0Lmgg
Ki87IH07CisJCUFEMkZDQkUyMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNw
cCAqLzsgfTsKKwkJQUQyRkNCRTMxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgg
Ki87IH07CisJCUFEMkZDQkU0MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQTgxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgKi87IH07
CisJCUFEMkZDQkU1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkE5MURC
NThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCAqLzsgfTsKKwkJQUQyRkNC
RTYxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUExREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwICovOyB9OworCQlBRDJGQ0JFNzFEQjU4REFE
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQyRkNCRTgxREI1OERBRDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUMxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3IuY3BwICovOyB9OworCQlBRDJGQ0JFOTFEQjU4REFEMDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUQxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3IuaCAqLzsgfTsKKwkJQUQyRkNCRUExREI1OERBRDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDJGQ0JBRTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxl
LmNwcCAqLzsgfTsKKwkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlU
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oICovOyB9OworCQlB
RDJGQ0JFQzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDJGQ0JCMDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQkVEMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCMTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JFRTFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQjIxREI1OERBNDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQUQyRkNC
RUYxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCMzFE
QjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCAqLzsg
fTsKKwkJQUQyRkNCRjAxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDJGQ0JCNDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmNwcCAqLzsgfTsKKwkJQUQyRkNCRjExREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCQjUxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JGMjFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZDQkYzMURCNThEQUQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNzFEQjU4REE0MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICovOyB9OworCQlBRDJGQ0JGNDFEQjU4REFEMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCODFEQjU4REE0MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQkY1MURC
NThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCOTFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JG
NjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQkExREI1OERB
NDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQUQy
RkNCRjcxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCQjFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQy
RkNCRjgxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwICovOyB9OworCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQkQxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNCRkExREI1OERBRDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkJFMURCNThEQTQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZDQkZC
MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQkYxREI1
OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggKi87IH07
CisJCUFEMkZDQkZDMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQzAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAg
Ki87IH07CisJCUFEMkZDQkZEMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQkMxMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
aCAqLzsgfTsKKwkJQUQyRkNCRkUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNCQzIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
Y3BwICovOyB9OworCQlBRDJGQ0JGRjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNCQzMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
aCAqLzsgfTsKKwkJQUQyRkNDMDAxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNCOTgxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuY3BwICovOyB9OworCQlBRDJGQ0MwMTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNDMDIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMkZDQjlBMURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZDQzAzMURCNThEQUQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOUIxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlLmggKi87IH07CisJCUFEMkZDQzA0MURCNThEQUQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9k
dWxlLmNwcCAqLzsgfTsKKwkJQUQyRkNDMDUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQjhEMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxlLmggKi87IH07
CisJCUFEMkZDQzE2MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzE3MURCNTlDQjIwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBCMURCNTlDNTkwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMTgx
REI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBDMURC
NTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmggKi87
IH07CisJCUFEMkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUubHV0LmggKi87IH07CisJCUFEMkZDQzFBMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNDMEUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBGMURCNTlDNTkwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMUMxREI1OUNCMjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxMDFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQUQyRkND
MUQxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMTExREI1
OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oICovOyB9Owor
CQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQzEyMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxMzFEQjU5QzU5MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggKi87IH07CisJCUFEMkZDQzIwMURC
NTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxNDFEQjU5QzU5
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlB
RDJGQ0MyMTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzE1
MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oICovOyB9
OwogCQlBRDg2QTkzRTFBQTREODhEMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4NkE5M0QxQUE0RDg3
QzAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRERCMUY2MzE4RDc3REJFMDA5QjU4QTggLyogT3Bh
cXVlUm9vdFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBREUzOUZGRjE2REQxNDRC
MDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDFDRjA2ODE2RENBQjJEMDBCOTcxMjMgLyogUHJvcGVydHlU
YWJsZS5jcHAgKi87IH07CkBAIC00MjA4LDYgKzQyNTYsNTQgQEAKIAkJQUQxQ0YwNjgxNkRDQUIy
RDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBc3NlbWJseU9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBc3NlbWJseU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4
QzFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlLmNwcDsgcGF0aCA9
IGpzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0I4RDFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlLmg7IHBhdGgg
PSBqcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQjk4MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjk5MURCNTg1QTYwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUQyRkNCOUExREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCOUIxREI1ODVBNjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmg7IHBhdGggPSBqcy9XZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
RDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBNzFEQjU4REE0MDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkE4MURCNThE
QTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDsgcGF0aCA9IGpz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3NlbWJseUluc3RhbmNlLmg7IHBh
dGggPSBqcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUQyRkNCQUExREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseU1lbW9y
eS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlN
ZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3NlbWJseU1l
bW9yeS5oOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseU1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBRDJGQ0JBQzFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBRDFEQjU4REE0
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg7IHBhdGggPSBqcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQkFFMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseVRhYmxlLmNwcDsg
cGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3NlbWJseVRhYmxlLmg7IHBh
dGggPSBqcy9KU1dlYkFzc2VtYmx5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQyRkNCQjAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QUQyRkNCQjExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMjFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMzFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaDsgcGF0
aCA9IGpzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFEMkZDQkI0MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQkI1MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjYxREI1OERBNDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHA7IHBhdGgg
PSBqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUQyRkNCQjcxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCODFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcDsg
cGF0aCA9IGpzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0JCOTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseU1lbW9yeUNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJBMURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA7
IHBhdGggPSBqcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFEMkZDQkJCMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQkMxREI1OERBNDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQkQxREI1OERBNDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oOyBw
YXRoID0ganMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCRTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwOyBwYXRoID0ganMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkMw
MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkMxMURCNThEQTQwMEIzRTczNiAvKiBXZWJB
c3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzIx
REI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5j
cHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
ci5sdXQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlBRDJGQ0MwQjFEQjU5QzU5
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MwQzFEQjU5QzU5
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQzBEMURCNTlDNTkwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MwRTFEQjU5QzU5MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMEYxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQUQyRkNDMTAxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQzExMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5s
dXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQzEyMURC
NTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0Mx
MzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0Mx
NDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQzE1MURCNTlDNTkw
MEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vh
a0dDTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NN
YXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREIxRjYyMThENzdE
QjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5
Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwMyw2ICs1Njk5LDE4IEBACiAJCTY1
MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUFE
MkZDQzBCMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlw
ZS5sdXQuaCAqLywKKwkJCQlBRDJGQ0MwQzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUFEMkZDQzBEMURCNTlDNTkwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUFEMkZDQzBF
MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCUFEMkZDQzBGMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxMDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxMTFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQUQyRkNDMTIx
REI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0
LmggKi8sCisJCQkJQUQyRkNDMTMxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUFEMkZDQzE0MURCNTlDNTkwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMTUxREI1
OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJ
MEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovLAogCQkJCTBGNjE4MzM0
MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLywKIAkJCQkwRjYxODMz
NTFDNDVGM0I2MDA3MjQ1MEIgLyogQWlyT3Bjb2RlVXRpbHMuaCAqLywKQEAgLTU2ODgsNiArNTc5
Niw3IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4QTFEQjU4NDAwMDBCM0U3
MzYgLyoganMgKi8sCiAJCQkJQUQyRkNCODYxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
T2JqZWN0LmNwcCAqLywKIAkJCQlBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlPYmplY3QuaCAqLywKIAkJCQk3Qjk4RDEzNDFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9k
dWxlLmNwcCAqLywKQEAgLTcxOTEsNiArNzMwMCw0OSBAQAogCQkJcGF0aCA9IGJ1aWx0aW5zOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQUQyRkNCOEExREI1ODQwMDAwQjNF
NzM2IC8qIGpzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlBRDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5j
cHAgKi8sCisJCQkJQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaCAqLywKKwkJCQlBRDJGQ0JBODFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcCAqLywKKwkJCQlBRDJGQ0JBOTFEQjU4REE0MDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmggKi8sCisJCQkJQUQyRkNCQUExREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwICovLAorCQkJCUFEMkZDQkFCMURCNThEQTQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi8sCisJCQkJQUQyRkNCQUMxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwICovLAorCQkJCUFEMkZDQkFEMURC
NThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggKi8sCisJCQkJQUQy
RkNCQUUxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5jcHAgKi8sCisJCQkJ
QUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oICovLAorCQkJ
CUFEMkZDQkIwMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JCMTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAorCQkJCUFEMkZDQkIyMURCNThEQTQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJQUQy
RkNCQjMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
LmggKi8sCisJCQkJQUQyRkNCQjQxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQyRkNCQjUxREI1OERBNDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICovLAorCQkJCUFEMkZDQkI2MURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBRDJG
Q0JCNzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICov
LAorCQkJCUFEMkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JCOTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovLAorCQkJCUFEMkZDQkJBMURCNThEQTQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgKi8sCisJCQkJQUQyRkNCQkIxREI1OERB
NDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNC
QkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iu
Y3BwICovLAorCQkJCUFEMkZDQkJEMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQyRkNCQkUxREI1OERBNDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0JCRjFE
QjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCAqLywK
KwkJCQlBRDJGQ0JDMDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JDMTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQyRkNCQzIxREI1OERBNDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwICovLAorCQkJCUFEMkZDQkMzMURCNThEQTQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNCOTgxREI1
ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CUFEMkZDQjk5MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
LmggKi8sCisJCQkJQUQyRkNCOUExREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0I5QjFEQjU4NUE2MDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0I4QzFEQjU4NDQwMDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgKi8sCisJCQkJQUQyRkNCOEQxREI1ODQ0MDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuaCAqLywKKwkJCSk7CisJCQluYW1lID0ganM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNDcwM0NDMTE5Mjg0NEE0MDAxM0ZC
RUEgLyogY29kZWdlbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC03MzA0LDYgKzc0NTYsNyBAQAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBB
UElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCRTFDMTEwNDEyMDAzOTBGREQgLyog
SklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUUxREI1
OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQ0VFMjIwOTFDRUI5ODk1MDAwQzIzOTYgLyogREZHQmFja3dh
cmRzQ0ZHLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAxNDFBQTkwOTExMDBEMzNCMzMgLyog
QXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTczMTIsNiArNzQ2NSw3
IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUIxREI1OUNCMjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKQEAgLTc0MDYsNiArNzU2MCw3
IEBACiAJCQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4
Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJh
dGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkND
MDExREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLApAQCAtNzQxNCw2ICs3
NTY5LDcgQEAKIAkJCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRl
cmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1
dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkYxMURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyMzBFRDFDRTMzMDBGMUY2ODEgLyog
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ0NCw2ICs3NjAwLDcgQEAK
IAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjYxQUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3Vt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkQxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTcw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0
NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzk3RjM0MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzUyMCw2ICs3Njc3LDcgQEAKIAkJCQkwRjY2RTE2QjE0
REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCUFEMkZDQkY1MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdDNUZCODFEODg4QTBD
MDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJE
RDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50
c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTk1LDYgKzc3NTMsNyBAQAogCQkJCTBG
MkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCBp
biBIZWFkZXJzICovLAorCQkJCUFEMkZDQzE2MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4
MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OUEwOTA4MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjlDQzg5MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NjMyLDYgKzc3OTEsNyBAQAogCQkJCTBGMkU4OTJEMTZEMDJCQUYwMDlF
NEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0NjE1MjI4
MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhG
MTQzNjFBREYwOTAxMDBFRDc5MkMgLyogREZHTW92SGludFJlbW92YWxQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQUQyRkNCRUYxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyQ0Q1QzFCNjFBNEY4MDA0
OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAq
LywKQEAgLTc2ODMsNiArNzg0Myw3IEBACiAJCQkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8q
IERGR1Njb3JlQm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQUFGN0NFMUQwRDMxQjMwMDVF
NjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMDUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVE
QiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0MUZDNzIx
REFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03Njk2LDYgKzc4NTcsNyBAQAogCQkJCTBGQzIwQ0I2MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVj
dHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUExREI1OUNCMjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTk5QjI0OTFDMjRDM0QzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZGMThBNjAwNzAw
MDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTc3MjYsNiArNzg4
OCw3IEBACiAJCQkJMEZFMDUwMTgxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMTYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFy
Z3VtZW50c09mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3MzExNThFQkQ1NDAwNENC
OUZGIC8qIERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRTcxREI1OERB
RDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NTEsNiArNzkxNCw3IEBACiAJCQkJREUyNkU5
MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8qIEV4aXRLaW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjRE
RTFDRjFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1NwaWxscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03NzY0LDYgKzc5MjgsNyBAQAogCQkJCTBGRUEwQTIzMTcwOTYw
NjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhFMEMxQkYwMjc2QzAwMTND
ODhGIC8qIEIzQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMU3RhY2ttYXBBcmd1bWVudExpc3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtNzg2Miw2ICs4MDI3LDcgQEAKIAkJCQkwRjkzMzJBMDE0Q0E3
RENEMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwMzMy
QzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQUQyRkNDMUMxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0NDE3RUE5RjU5MDBBQkIyMTcg
LyogR1BSSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxMzQxMzRGRjBBNjAwQUZBREI1
IC8qIEhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZE
IC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTc4NzcsNiArODA0Myw3IEBACiAJ
CQkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3
MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03OTY4LDYgKzgxMzUsNyBAQAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5
RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JF
OTFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVm
Zm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJ
VERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTc5LDcgKzgxNDcsOSBAQAogCQkJ
CTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MyMTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkUzMTdD
RDg3OTMwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRTMxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhF
N0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIx
NkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApA
QCAtODAxMCw2ICs4MTgwLDcgQEAKIAkJCQlCQzE4QzQxRTBFMTZGNUNEMDBCMzQ0NjAgLyogSlND
b250ZXh0UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMg
LyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVE
MkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBRDJGQ0MwMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUI0OUREMUJFQzgwODYwMDcwMjBGQiAv
KiBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENE
MUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgwNjksNiArODI0MCw3IEBACiAJCQkJNzAxM0NBOEMxQjQ5MUE5
NDAwQ0FFNjEzIC8qIEpTSm9iLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDIzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUFE
MkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFu
YWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0Qg
LyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3NDIx
N0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNzcsNiArODI0
OSw3IEBACiAJCQkJOTk1OUU5MkQxQkQxN0ZBNDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMTcxREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjQwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTgwOTUsNiArODI2OCw3IEBACiAJ
CQkJRTMyMkU1QTMxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFBMDA5
RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUYxREI1OUNCMjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBs
YXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTE2LDYgKzgyOTAsNyBAQAogCQkJ
CTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhENEE4
MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTgyNTgsNiArODQzMyw3IEBACiAJCQkJQTc3RjE4MjUxNjQxOTJDNzAw
NjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzI4QzZDOTFEQTQz
MkY5MDBEMjU1RkQgLyogUmVnaXN0ZXJBdE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUz
MDNENjQxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBl
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOUNFNzQxQjlDRDZEMDAwNEVEQ0E2IC8qIFBv
bHltb3JwaGljQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4MzQxODFBNkVGOTdCMDBE
MDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBIZWFk
ZXJzICovLApAQCAtODMzNCw2ICs4NTEwLDcgQEAKIAkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkND
NTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkY3MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0
OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtODM1MCw2ICs4NTI3LDcgQEAKIAkJCQlBNzkwREQ2RTE4MkY0
OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMTgxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmgg
aW4gSGVhZGVycyAqLywKQEAgLTg0MDIsMTAgKzg1ODAsMTIgQEAKIAkJCQlFMzJGRjFFQTFEQTc1
NzFDMDBBOEJGMjEgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMjAxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzI4
MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJl
Z2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTg0NjUsNiArODY0NSw3IEBACiAJCQkJRkVE
OTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQyRTMxM0MxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUFEMkZDQkU1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg0OTAsNiArODY3MSw3IEBACiAJCQkJNzlC
MTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkZGMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNDc2
N0YxRDk5QUVBRDAwOEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC05MTAyLDYgKzkyODQsNyBAQAogCQkJCTE0MjgwODYzMTA3RUMxMUEwMDEzRTdC
MiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NjQx
MDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyODA4NjUxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQUQyRkNCRjYxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUVBNUM3QTEx
OTBGMDg0MjAwNTA4RUJFIC8qIEJ1bmRsZVBhdGgubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMkZD
QUUxMDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTExOSw2ICs5MzAyLDcgQEAKIAkJCQk2MkQ3NTVENDFCODRGQjNEMDAxODAxRkEg
LyogQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0
QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBRDJGQ0JGRTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCOEFEQzFDNEVGQUMzMDA5NjkwNTIgLyog
QjNTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyNzY3MzIzMUI2ODBDMUUw
MEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCN0UyQTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjA5LDYg
KzkzOTMsNyBAQAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJh
bnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1
IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZE
ODE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUFEMkZDQkU4MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QTEyNzMxOTJE
OUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTI4
OSw2ICs5NDc0LDcgQEAKIAkJCQkwRjJCOUNFQzE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTc2NjIxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNBMUJGOTFB
OUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQUQyRkNCRUExREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQ0NGQjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2Fm
ZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REQyMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTkyOTYsNiArOTQ4Miw3IEBACiAJCQkJMEY2ODJGQjIxOUJDQjM2NDAwRkEzQkFEIC8qIERG
R1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRkYxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkMyMENCOTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBRDJGQ0JGMDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUZCNEY0MTdGQ0I5MTcw
MENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NEYyOURGMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlFMzI2MzFCMDVBQjA0MDA4MDFFRDUg
LyogREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05
MzIxLDYgKzk1MDgsNyBAQAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTQ5NTg3MUM1N0Y0
NzUwMDQxM0E0OCAvKiBCM1N0YWNrU2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1
MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBRDJGQ0JGMjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0QTE1MjI4MDlBMDBDRDg5MTAgLyog
REZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RjE0
RUY5MEJCMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRjaHBv
aW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTMzNCw2ICs5NTIyLDcg
QEAKIAkJCQk5OUU0NUEyNTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUM3MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDdGMzlDODEwN0VDMzc2MDA0MjdBNDggLyogRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFQzFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRUI1OEMxNDE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUM5MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvckluc3RhbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNBMTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0NTQsNiArOTY0Myw3IEBACiAJCQkJ
QTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
RDJGQ0MwNDFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRTNBMDZCRjFDMTEwNDE2MDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdl
bmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjJEODVCNjFDMEQ2NTBGMDA2QUNCNjEg
LyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUz
MjJFNUE2MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTQ3Niw2ICs5NjY2LDcgQEAKIAkJCQkwRjhGOTQ0NDE2Njc2MzU0
MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkFGN0VGRDE2NUJB
OTFCMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NkRCN0VDMUQ2MTdEMTEwMENEQkY4RSAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQUQyRkNCRTIxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTRFMUUxODEy
NEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTUwOSw2ICs5NzAwLDcgQEAKIAkJCQkxNEFCREY2MDBBNDM3RkVGMDBFQ0NB
MDEgLyogSlNDYWxsYmFja09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTdDRjQ1ODE5
QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODAx
QTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUFEMkZDQzAwMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQxMTA3RUMzNzYwMDQyN0E0OCAvKiBKU0Nl
bGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpT
Q0pTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEZDRTQwQTUxRTQ2QjAwMDVGMDYx
IC8qIEpTQ2xhc3NSZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTQ4LDYgKzk3NDAsNyBAQAog
CQkJCTcwMTNDQThCMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGQTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI1RDcw
OUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3NERFRjk1MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTU1Nyw2ICs5NzUwLDcgQEAKIAkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMzg3OTIxQkZE
MzFBMTAwRTNBQjFFIC8qIEZUTENvbXBpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRThE
MUMxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQUQyRkNCRjgxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDQxMDdFQzM3NjAw
NDI3QTQ4IC8qIEpTT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0ODJCN0U0MEE0MzA3
NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Y5OTM2
MDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk2
MzAsNiArOTgyNCw3IEBACiAJCQkJRkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8qIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0QUUwODE3OTczQjI2MDA1
NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkUzQTA2QUMxQzEwQzM5RTAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUFEMkZDQkZDMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxl
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3MzkxN0NCRTg1MzAwQzNF
NjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgy
RDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTY4OSw2ICs5ODg0LDcgQEAKIAkJCQkwRjE5MENBQzE4OUQ4MkY2MDAwQUU1
RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3
MjlCMzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNzI5QjQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRTYxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlNZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDRDMEMxQzNFMUMxMTAwNkNE
OTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4
QjE2NzU0ODMxMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjEwNThEMTY3NTQ4MzcwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTcyMSw2ICs5OTE3LDcgQEAKIAkJCQlBNTk0NTU4RjE4MjQ1RUZE
MDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGNDFEQjU4
REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZCOEFEODFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWls
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4M0FDMDBCREU3RTggLyogUnVu
dGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05Nzk3LDggKzk5OTQsMTAgQEAKIAkJCQkw
RkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNl
cyAqLywKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1hdHQuYyBp
biBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWludGVsLmMgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFRTFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovLAog
CQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFNDFEQjU4REFEMDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzMyMTU4RUJE
NTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4MDksNiArMTAwMDgsNyBAQAogCQkJ
CTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQUQyRkNDMDIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9k
dWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUxODdBMDExQkZC
RTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
M0Y0MEU4RjFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggNjA0YzBiZi4uMTVhOTQxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODIzLDEyICs4MjMsOSBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93
ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBhdXRvKiB3YXNtID0gV2ViQXNzZW1ibHlPYmpl
Y3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIldlYkFzc2Vt
Ymx5IiksIHdhc20sIERvbnRFbnVtKTsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvIGV4dHJh
U3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVByaXZhdGVOYW1lKCksIHdhc20tPmdl
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiTW9kdWxlIikpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zdGFuY2VQcml2YXRlTmFt
ZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIklu
c3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuTWVt
b3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
LSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKLSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIkNvbXBpbGVFcnJvciIpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlJ1bnRpbWVFcnJvclByaXZh
dGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisj
ZGVmaW5lIFJFR0lTVEVSX1dBU01fQ09OU1RSVUNUT1JfQVNfR0xPQkFMX1BST1BFUlRZKE5BTUUs
IC4uLikgXAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLk5BTUUgIyMgUHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICNOQU1FKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEZPUl9FQUNIX1dBU01fQ09OU1RSVUNUT1Jf
UFJPUEVSVFkoUkVHSVNURVJfV0FTTV9DT05TVFJVQ1RPUl9BU19HTE9CQUxfUFJPUEVSVFkpCiAg
ICAgICAgIH07CiAgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMoZXh0cmFTdGF0aWNHbG9iYWxzLCBX
VEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcAppbmRleCA0NGMyMjli
Li45MzcyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3Nl
bWJseU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCkBAIC0yNiwxNzcgKzI2LDM0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3QuaCIKIAotI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJKU0Rlc3RydWN0aWJs
ZU9iamVjdC5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCIKKyNp
bmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJqcy9KU1dlYkFz
c2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAianMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2lu
Y2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKyNpbmNsdWRlICJqcy9KU1dl
YkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAianMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
ImpzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKFdlYkFzc2VtYmx5T2JqZWN0KTsKIAotLy8gTmFtZSwgZnVuY3Rp
b25MZW5ndGgKLSNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShETykg
XAotICAgIERPKE1vZHVsZSwgMSkgXAotICAgIERPKEluc3RhbmNlLCAyKSBcCi0gICAgRE8oTWVt
b3J5LCAxKSBcCi0gICAgRE8oVGFibGUsIDEpIFwKLSAgICBETyhDb21waWxlRXJyb3IsIDEpIFwK
LSAgICBETyhSdW50aW1lRXJyb3IsIDEpCi0KLS8vIE5hbWUsIGZ1bmN0aW9uTGVuZ3RoCi0jZGVm
aW5lIEZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoRE8pIFwKLSAgICBETyh2YWxpZGF0
ZSwgMSkgXAotICAgIERPKGNvbXBpbGUsIDEpCi0KLS8vIEZJWE1FIEltcGxlbWVudCBlYWNoIG9m
IHRoZXNlIGluIHRoZWlyIG93biBoZWFkZXIgZmlsZSwgYW5kIGF1dG9nZW5lcmF0ZSAqLmx1dC5o
IGZpbGVzIGZvciAqUHJvdG90eXBlVGFibGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjE3MDkKLSNkZWZpbmUgREVGSU5FX1dBU01fT0JKRUNUX0NPTlNUUlVDVE9S
X1BST1BFUlRZKE5BTUUsIGZ1bmN0aW9uTGVuZ3RoKSBcCi0gICAgY2xhc3MgSlNXZWJBc3NlbWJs
eSAjIyBOQU1FIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAotICAgIHB1YmxpYzog
XAotICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7IFwKLSAgICAgICAg
XAotICAgICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSAjIyBOQU1FKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIGF1dG8qIGZv
cm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHkgIyMgTkFNRT4o
dm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkgIyMgTkFNRSh2bSwgc3RydWN0dXJlKTsgXAotICAgICAg
ICAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKLSAgICAgICAgICAgIHJldHVybiBm
b3JtYXQ7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKSBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCi0gICAgICAgIH0gXAotICAgICAgICBcCi0gICAgICAg
IERFQ0xBUkVfSU5GTzsgXAotICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiBcCi0gICAgICAgIEpT
V2ViQXNzZW1ibHkgIyMgTkFNRShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCi0gICAg
ICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpIFwKLSAgICAgICAg
eyBcCi0gICAgICAgIH0gXAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkgXAot
ICAgICAgICB7IFwKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsgXAotICAg
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOyBcCi0gICAgICAgIH0gXAotICAgIH07
IFwKLSAgICBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseSAjIyBOQU1FOjpzX2luZm8gPSB7
ICJXZWJBc3NlbWJseS4iICNOQU1FLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTV2ViQXNzZW1ibHkgIyMgTkFNRSkgfTsgXAotICAgIFwKLSAgICBjbGFzcyBXZWJBc3Nl
bWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
IFwKLSAgICBwdWJsaWM6IFwKLSAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBC
YXNlOyBcCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsgXAotICAgICAgICBc
Ci0gICAgICAgIHN0YXRpYyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAg
ICB7IFwKLSAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHkgIyMgTkFNRSAjIyBQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7IFwKLSAgICAgICAgICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOyBcCi0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OyBc
Ci0gICAgICAgIH0gXAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkg
XAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgICAgICBERUNMQVJF
X0lORk87IFwKLSAgICAgICAgXAotICAgIHByb3RlY3RlZDogXAotICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgIHByaXZhdGU6IFwK
LSAgICAgICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwg
c3RydWN0dXJlKSBcCi0gICAgICAgIHsgXAotICAgICAgICB9IFwKLSAgICB9OyBcCi0gICAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IE5BTUUgIyMgUHJvdG90eXBlVGFibGVJ
bmRleFtdID0geyB7IDAsIDAgfSB9OyBcCi0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFi
bGVWYWx1ZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPSB7IHsgbnVsbHB0ciwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRh
YmxlIE5BTUUgIyMgUHJvdG90eXBlVGFibGUgPSB7IDAsIDAsIHRydWUsIE5BTUUgIyMgUHJvdG90
eXBlVGFibGVWYWx1ZXMsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVJbmRleCB9OyBcCi0gICAgY29u
c3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJXZWJBc3NlbWJseS4iICNOQU1FICIucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJk5BTUUg
IyMgUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFN
RSAjIyBQcm90b3R5cGUpIH07IFwKLSAgICBcCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseSAjIyBOQU1FKEV4ZWNTdGF0ZSogc3Rh
dGUpIFwKLSAgICB7IFwKLSAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7IFwKLSAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhl
ICIgI05BTUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCi0gICAgfSBcCi0gICAgXAot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5
ICMjIE5BTUUoRXhlY1N0YXRlKiBzdGF0ZSkgXAotICAgIHsgXAotICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOyBcCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGlt
cGxlbWVudCB0aGUgIiAjTkFNRSAiIGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7IFwKLSAgICB9
IFwKLSAgICBcCi0gICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsgXAotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3Bl
cnR5VGFibGU7IFwKLSAgICAgICAgXAotICAgICAgICBzdGF0aWMgV2ViQXNzZW1ibHkgIyMgTkFN
RSAjIyBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdl
YkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBOQU1FICMjIFByb3RvdHlwZSwgU3RydWN0
dXJlKiBOQU1FICMjIFN0cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIFdlYkFz
c2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7IFwK
LSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgTkFNRSAjIyBQcm90
b3R5cGUsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOyBcCi0gICAgICAgIH0gXAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgICAgICBE
RUNMQVJFX0lORk87IFwKLSAgICAgICAgXAotICAgICAgICBTdHJ1Y3R1cmUqIE5BTUUgIyMgU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7IH0g
XAotICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiBcCi0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSogTkFNRSAjIyBQcm90
b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUpIFwKLSAgICAgICAgeyBcCi0gICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCNOQU1FKSk7IFwK
LSAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIE5BTUUgIyMgUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7IFwKLSAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGZ1bmN0aW9uTGVuZ3RoKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOyBcCi0gICAgICAgICAgICBtXyAjIyBOQU1F
ICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAgICAg
ICB9IFwKLSAgICAgICAgXAotICAgIHByaXZhdGU6IFwKLSAgICAgICAgV2ViQXNzZW1ibHkgIyMg
TkFNRSAjIyBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCi0gICAg
ICAgICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkgXAotICAgICAgICB7IFwK
LSAgICAgICAgfSBcCi0gICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkgXAotICAgICAgICB7IFwK
LSAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNX
ZWJBc3NlbWJseSAjIyBOQU1FOyBcCi0gICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6
SG9zdDsgXAotICAgICAgICB9IFwKLSAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5ICMjIE5BTUU7IFwK
LSAgICAgICAgICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsgXAotICAgICAgICB9IFwKLSAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKSBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKj4oY2VsbCk7IFwKLSAgICAg
ICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsgXAot
ICAgICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsgXAot
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fICMjIE5BTUUgIyMgU3Ry
dWN0dXJlKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZTsgXAotICAgIH07IFwKLSAgICBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxl
SW5kZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRh
YmxlVmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPSB7IHsgbnVsbHB0ciwg
MCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFz
aFRhYmxlIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSA9IHsgMCwgMCwgdHJ1ZSwgTkFNRSAjIyBD
b25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBOQU1FICMjIENvbnN0cnVjdG9yVGFibGVJbmRleCB9OyBc
Ci0gICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJk5BTUUgIyMgQ29uc3RydWN0
b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0
cnVjdG9yKSB9OwotCi1GT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERFRklORV9X
QVNNX09CSkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWSkKLQotCiAjZGVmaW5lIERFQ0xBUkVfV0FT
TV9PQkpFQ1RfRlVOQ1RJT04oTkFNRSwgLi4uKSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdhc21PYmplY3RGdW5jICMjIE5BTUUoRXhlY1N0YXRlKik7CiBGT1JfRUFDSF9XQVNNX0ZVTkNU
SU9OX1BST1BFUlRZKERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04pCiAKLQogY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5T2JqZWN0OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseSIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlPYmplY3QpIH07CiAK
IFdlYkFzc2VtYmx5T2JqZWN0KiBXZWJBc3NlbWJseU9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0yMzcs
OSArOTQsNiBAQCBXZWJBc3NlbWJseU9iamVjdDo6V2ViQXNzZW1ibHlPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIENvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAg
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Fz
bU9iamVjdEZ1bmN2YWxpZGF0ZShFeGVjU3RhdGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmgKaW5kZXggNTU5NjM0MS4uN2I1MmNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oCkBA
IC00NSw0ICs0NSwxOCBAQCBwcml2YXRlOgogICAgIFdlYkFzc2VtYmx5T2JqZWN0KFZNJiwgU3Ry
dWN0dXJlKik7CiB9OwogCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2RlZmluZSBGT1JfRUFD
SF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAgRE8oTW9kdWxlLCAxKSBcCisg
ICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEpIFwKKyAgICBETyhUYWJsZSwg
MSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERPKFJ1bnRpbWVFcnJvciwgMSkK
KworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9GVU5DVElP
Tl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBcCisgICAgRE8oY29tcGlsZSwg
MSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZmNmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcApA
QCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I+KHZt
LmhlYXApKSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGZv
cm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVj
dHVyZSogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3Zv
aWQgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcio+KGNl
bGwpLT5KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjp+SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
cigpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2Jq
ZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29t
ZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpIH07CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjViODZkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUNvbXBpbGVF
cnJvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTBlZjAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGZv
cm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4o
dm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICBmb3Jt
YXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1
cmUqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihjZWxsKS0+SlNXZWJBc3NlbWJseUluc3RhbmNl
Ojp+SlNXZWJBc3NlbWJseUluc3RhbmNlKCk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
Ly8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lkluc3RhbmNlIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5SW5zdGFuY2UpIH07CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kYTRiZjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
Citwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NjRhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlN
ZW1vcnkqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTV2ViQXNzZW1ibHlNZW1vcnk+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TWVtb3J5KHZtLCBz
dHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBm
b3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitKU1dlYkFzc2VtYmx5TWVtb3J5OjpKU1dlYkFzc2VtYmx5TWVtb3J5KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3Zv
aWQgSlNXZWJBc3NlbWJseU1lbW9yeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9
CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1lbW9yeTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5
TWVtb3J5Ojp+SlNXZWJBc3NlbWJseU1lbW9yeSgpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlN
ZW1vcnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlNZW1vcnkqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
Ly8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2Vt
Ymx5TWVtb3J5OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5NZW1vcnkiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlNZW1vcnkpIH07CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5
NjVhOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM1MzkxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlNb2R1bGUqIEpTV2ViQXNzZW1i
bHlNb2R1bGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1
dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1
bGU+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TW9kdWxlKHZtLCBzdHJ1Y3R1cmUpOworICAgIGZv
cm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVj
dHVyZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5
TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1v
ZHVsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3Nl
bWJseU1vZHVsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNX
ZWJBc3NlbWJseU1vZHVsZSo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5TW9kdWxlOjp+SlNXZWJBc3Nl
bWJseU1vZHVsZSgpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0
cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9i
amVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5TW9kdWxlOjpzX2luZm8g
PSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTV2ViQXNzZW1ibHlNb2R1bGUpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MjMyMTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNX
ZWJBc3NlbWJseU1vZHVsZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5TW9k
dWxlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3
M2Q1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKworI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iq
IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcio+KGNlbGwpLT5KU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yOjp+SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcigpOworfQorCit2b2lkIEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNz
SW5mbyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5S
dW50aW1lRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjU5YjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3Rl
ZDoKKyAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44ZDQzMzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApAQCAtMCwwICsxLDczIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJBc3NlbWJseVRhYmxlKiBKU1dl
YkFzc2VtYmx5VGFibGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1i
bHlUYWJsZT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlUYWJsZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitT
dHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2Vt
Ymx5VGFibGU6OkpTV2ViQXNzZW1ibHlUYWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlU
YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3Nl
bWJseVRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dl
YkFzc2VtYmx5VGFibGUqPihjZWxsKS0+SlNXZWJBc3NlbWJseVRhYmxlOjp+SlNXZWJBc3NlbWJs
eVRhYmxlKCk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNp
dGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5VGFibGU6OnNfaW5mbyA9IHsgIldl
YkFzc2VtYmx5LlRhYmxlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dlYkFzc2VtYmx5VGFibGUpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzk5ZjllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseVRh
YmxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVRh
YmxlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmUyYmVhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEwOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKwor
fQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZj
b25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFURV9NRVRIT0RfVEFC
TEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZv
ciBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0
cnVjdG9yVGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgorIEBlbmQKKyAqLworCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIENv
bXBpbGVFcnJvciBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVj
U3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIikpOworfQorCitXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUsIFN0cnVjdHVyZSogdGhpc1N0cnVjdHVyZSkK
K3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkNvbXBpbGVFcnJvciIpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fQ29t
cGlsZUVycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKK30KKworV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQoreworfQorCitDb25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhv
c3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjsKKyAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX0NvbXBpbGVFcnJvclN0
cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTI0YjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTsKKwor
Y2xhc3MgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBDb21waWxlRXJyb3JTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX0NvbXBpbGVFcnJvclN0cnVjdHVyZS5nZXQoKTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwor
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fQ29tcGlsZUVycm9yU3RydWN0dXJlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkOWM1ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAg
ICAvLyBGSVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3IucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
JnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFURV9NRVRIT0RfVEFC
TEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3Ig
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBl
VGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgorIEBlbmQKKyAqLworCitXZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZSogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Cit9CisKK1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjFhMzljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVy
dHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworCitwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUy
MTViODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIgorCisjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2Vt
Ymx5SW5zdGFuY2UsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5sdXQuaAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZQorIEBl
bmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGlt
cGxlbWVudCB0aGUgSW5zdGFuY2UgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7Cit9CisKK1dlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJlKiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwg
dGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwor
fQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCit2b2lkIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxp
dGVyYWwoIkluc3RhbmNlIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwg
RG9udERlbGV0ZSk7CisgICAgbV9JbnN0YW5jZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVj
dHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
IGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6
Okhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgcmV0dXJuIENh
bGxUeXBlOjpIb3N0OworfQorCit2b2lkIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fSW5zdGFuY2VTdHJ1Y3R1cmUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YmQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKwor
ICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBJbnN0YW5j
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fSW5zdGFuY2VTdHJ1Y3R1cmUuZ2V0KCk7IH0K
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9JbnN0YW5jZVN0cnVjdHVyZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jYTM3MjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVuY3Rpb25z
IGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuSW5zdGFuY2UucHJvdG90
eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4g
cHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUluc3RhbmNlCisgQGVuZAorICovCisKK1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUqIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
YXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKwor
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2I0YWM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseUluc3RhbmNlUHJv
dG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2YxYTJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCIKKworI2luY2x1
ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisg
ICAgLy8gRklYTUUgbHV0IGZ1bmN0aW9ucyBnbyBoZXJlLgorCit9CisKKyNpbmNsdWRlICJXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseU1lbW9y
eSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKSB9Owor
CisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmgKKyBAYmVn
aW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TWVtb3J5CisgQGVuZAorICovCisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1v
cnkoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBB
U0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgTWVtb3J5
IGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJXZWJBc3Nl
bWJseS5NZW1vcnkiKSk7Cit9CisKK1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IqIFdlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJl
KiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlLCB0aGlzU3RydWN0dXJlKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUq
IHByb3RvdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25s
eSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9NZW1vcnlTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBzdHJ1Y3R1cmUpOworfQorCitXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNz
ZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeTsKKyAgICByZXR1cm4gQ29uc3RydWN0
VHlwZTo6SG9zdDsKK30KKworQ2FsbFR5cGUgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5OworICAgIHJldHVybiBD
YWxsVHlwZTo6SG9zdDsKK30KKwordm9pZCBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fTWVtb3J5U3RydWN0dXJlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTUyNTM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlOworCitjbGFzcyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIE1lbW9yeVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fTWVtb3J5U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqLCBTdHJ1Y3R1
cmUqKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKFZNJiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9NZW1v
cnlTdHJ1Y3R1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWJmNGJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIC8v
IEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
Lk1lbW9yeS5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3Nl
bWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAor
IEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TWVtb3J5CisgQGVuZAorICovCisKK1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGU6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWQzZjg1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisK
K3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA5OTlkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVuY3Rp
b25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TW9kdWxlLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2Vi
QXNzZW1ibHlNb2R1bGUKKyBAZW5kCisgKi8KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1i
bHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSBNb2R1bGUgY29uc3RydWN0b3IgcHJvcGVydHki
KSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2Vi
QXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIldlYkFzc2VtYmx5Lk1vZHVsZSIpKTsKK30KKwor
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlKiB0aGlzUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIHRoaXNTdHJ1Y3R1cmUpCit7Cisg
ICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHRoaXNQcm90b3R5cGUsIHRoaXNTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
K30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogcHJvdG90eXBlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFs
KCJNb2R1bGUiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVs
ZXRlKTsKKyAgICBtX01vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7Cit9
CisKK1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKK3sKK30KKworQ29uc3RydWN0VHlwZSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEp
Cit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5TW9kdWxlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCitDYWxs
VHlwZSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bEpTV2ViQXNzZW1ibHlNb2R1bGU7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCit2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9Nb2R1bGVTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWE0YWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU7CisKK2NsYXNzIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0
cnVjdHVyZSogTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9Nb2R1bGVTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAg
IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX01vZHVsZVN0cnVjdHVyZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJhMWIxNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisgICAgLy8gRklYTUUgbHV0IGZ1bmN0aW9ucyBn
byBoZXJlLgorCit9CisKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1vZHVs
ZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZSIsICZC
YXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TW9kdWxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oCisgQGJlZ2luIHByb3RvdHlwZVRhYmxl
V2ViQXNzZW1ibHlNb2R1bGUKKyBAZW5kCisgKi8KKworV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUqIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFw
KSkgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJl
KiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTcx
M2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3Nl
bWJseU1vZHVsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMmEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1
dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3RvcikgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cgorIEBlbmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUs
IHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vz
bid0IHlldCBpbXBsZW1lbnQgdGhlIFJ1bnRpbWVFcnJvciBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIp
KSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9y
IikpOworfQorCitXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUsIFN0
cnVjdHVyZSogdGhpc1N0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwg
dGhpc1N0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUq
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9p
ZCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVy
YWwoIlJ1bnRpbWVFcnJvciIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8
IERvbnREZWxldGUpOworICAgIG1fUnVudGltZUVycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
c3RydWN0dXJlKTsKK30KKworV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCitDb25zdHJ1Y3RUeXBlIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I7CisgICAg
cmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxs
RGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKK3ZvaWQgV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX1J1bnRpbWVFcnJvclN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjlmYzkxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmgKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvclByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0
dXJlKiBSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX1J1bnRpbWVFcnJv
clN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisK
K3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fUnVudGlt
ZUVycm9yU3RydWN0dXJlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGM5Mzc1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUu
CisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IucHJv
dG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
bHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcgorIEBl
bmQKKyAqLworCitXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1
cmUqIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3Zv
aWQgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjlmYjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjU0MDBlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
ci5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisj
aW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFz
c2VtYmx5VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQu
aAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlUYWJsZQorIEBlbmQKKyAqLwor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5VGFibGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0
YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUg
VGFibGUgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUqIHN0YXRl
KQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2Vi
QXNzZW1ibHkuVGFibGUiKSk7Cit9CisKK1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3RvciogV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJl
KiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBwcm90
b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9UYWJsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IHN0cnVjdHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlUYWJs
ZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNv
bnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGU7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7
Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5VGFibGU7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0
OworfQorCit2b2lkIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fVGFibGVTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0
YjUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTsKKworY2xhc3MgV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3Ry
dWN0dXJlKiBUYWJsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fVGFibGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Cisg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9UYWJsZVN0cnVjdHVyZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lYWZkNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgiCisKKyNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUuCisK
K30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6
c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
JnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxl
CisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
K30KKworV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNlMDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKLS0gCjIuMTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292068</attachid>
            <date>2016-10-19 09:04:58 -0700</date>
            <delta_ts>2016-10-19 14:37:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-JavaScript-WebAssembly-API-baby-steps.patch</filename>
            <type>text/plain</type>
            <size>211761</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4NzI5MzI5MWZiMzBlZTBmYjczZTM0YmRjMjkzNTMxY2E1M2FmYjlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IE9jdCAyMDE2IDE2OjI1OjUwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gSmF2YVNj
cmlwdCBXZWJBc3NlbWJseSBBUEk6IGJhYnkgc3RlcHMKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVu
dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6IDhiaXQKCiAqIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBv
d24gZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKICAgYm9pbGVycGxhdGUsIGFzIHdlbGwg
YXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFsbCBvZiB0aGUKICAgSlNXZWJBc3NlbWJseSou
e2gsY3BwfSwgYXMgd2VsbCBhcyBDb25zdHJ1Y3RvciBhbmQgUHJvdG90eXBlIGZpbGVzLCBhcmUK
ICAgY3VycmVudGx5IHRoZSBzYW1lIGJldHdlZW4gdGhlIDYgc3BlY2lmaWVkIFdlYkFzc2VtYmx5
IGNvbnN0cnVjdG9ycy4gSXQnbGwgYmUKICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBm
dW5jdGlvbnMgb24gY29uc3RydWN0ZWQgb2JqZWN0cyBhcyBwZXIgdGhlCiAgIHNwZWMsIGFuZCBo
YXZlIGVhY2ggb2YgdGhlc2UgZmlsZXMgZGl2ZXJnZS4KICogVXNlIGNvbnN0cnVjdG9yIG1hY3Jv
IHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgogKiBEcmFtYXRpY2FsbHkgaW1w
cm92ZSB0ZXN0aW5nIG9mIHRoZSBXZWJBc3NlbWJseSBBUEkgYnkgY2hlY2tpbmcgZm9yCiAgIHBy
b3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBzcGVjIOKAoC4KICogQ2xlYW4gdXAgYXNzZXJ0Lmpz
JyBleGNlcHRpb24gdGVzdGluZy4KICogRml4IGEgY29weS1wYXN0ZSBidWcgaW4gd2FzbS5qc29u
OiBmbG9hdGluZy1wb2ludCBjb25zdCByZXR1cm4gdmFsdWVzIHdlcmUKICAgc3dhcHBlZC4KCuKA
oCBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1k
Ci0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgNDIgKysrKysKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDM0ICsrLS0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMg
ICAgICAgICAgICAgIHwgIDc2ICsrKysrLS0tCiBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
QnVpbGRlckpTT04uanMgICAgICAgICB8ICAxNiArLQogLi4uL3dhc20vc2VsZi10ZXN0L3Rlc3Rf
TG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzICAgfCAgIDQgKy0KIC4uLi93YXNtL3NlbGYtdGVzdC90
ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMgIHwgICA0ICstCiBKU1Rlc3RzL3dhc20vdXRp
bGl0aWVzLmpzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogSlNUZXN0cy93YXNt
L3dhc20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgIDMyICsrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMTg4ICsr
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlICAgICAgICAgIHwgIDE5ICstCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiAgICAgICB8IDIwMCArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCAgIHwgICA5ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5jcHAgICB8IDE4MiArKy0tLS0t
LS0tLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVj
dC5oICAgICB8ICAxNCArKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5j
cHAgICAgICAgICAgfCAgNzMgKysrKysrKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaCAgICAgICAgICAgIHwgIDQ5ICsrKysrCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwICAgICAgICAgICAgICB8ICA3MyArKysrKysrKwogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggfCAgNDkgKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIHwgIDczICsrKysr
KysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmggICB8
ICA0OSArKysrKwogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVs
ZS5jcHAgfCAgNzMgKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNb2R1bGUuaCAgIHwgIDQ5ICsrKysrCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcCAgICAgICAgICB8ICA3MyArKysrKysrKwogLi4uL3dhc20vanMvSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvci5oICAgICAgICAgICAgfCAgNDkgKysrKysKIC4uLi9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAgIHwgIDczICsrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaCB8ICA0OSAr
KysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
fCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IuaCAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JQcm90b3R5cGUuY3BwICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAxMDkgKysrKysrKysrKysK
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICAgICAgIHwgIDU5
ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgICAg
ICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuaCAgICAgICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvci5jcHAgICAgICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwICAgICAgICAgfCAgNzEgKysrKysrKysK
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggICAgICAgICAgIHwgIDUw
ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgICAg
ICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaCAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUuY3BwICAgICAgICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmggICAgICAgICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAxMDkgKysrKysrKysr
KysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAgIHwg
IDU5ICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
Y3BwICAgfCAgNzEgKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmggICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZUNvbnN0cnVjdG9yLmNwcCAgICAgICAgfCAxMDkgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oICAgICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgICAgICAgICAgfCAgNzEgKysrKysr
KysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCAgICAgICAgICAgIHwg
IDUwICsrKysrKwogNTEgZmlsZXMgY2hhbmdlZCwgMzA1OSBpbnNlcnRpb25zKCspLCAyNDAgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
Q29uc3RydWN0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5o
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBkZWNhNWRkLi5iOTY2YTY2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTEwLTE4ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBKYXZhU2NyaXB0IFdlYkFzc2VtYmx5
IEFQSTogYmFieSBzdGVwcworCisgICAgICAgICAqIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1
Y3RvcnMgaW50byB0aGVpciBvd24gZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAg
ICAgICAgYm9pbGVycGxhdGUsIGFzIHdlbGwgYXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFs
bCBvZiB0aGUKKyAgICAgICAgICAgSlNXZWJBc3NlbWJseSoue2gsY3BwfSwgYXMgd2VsbCBhcyBD
b25zdHJ1Y3RvciBhbmQgUHJvdG90eXBlIGZpbGVzLCBhcmUKKyAgICAgICAgICAgY3VycmVudGx5
IHRoZSBzYW1lIGJldHdlZW4gdGhlIDYgc3BlY2lmaWVkIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9y
cy4gSXQnbGwgYmUKKyAgICAgICAgICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBmdW5j
dGlvbnMgb24gY29uc3RydWN0ZWQgb2JqZWN0cyBhcyBwZXIgdGhlCisgICAgICAgICAgIHNwZWMs
IGFuZCBoYXZlIGVhY2ggb2YgdGhlc2UgZmlsZXMgZGl2ZXJnZS4KKyAgICAgICAgICogVXNlIGNv
bnN0cnVjdG9yIG1hY3JvIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgorICAg
ICAgICAgKiBEcmFtYXRpY2FsbHkgaW1wcm92ZSB0ZXN0aW5nIG9mIHRoZSBXZWJBc3NlbWJseSBB
UEkgYnkgY2hlY2tpbmcgZm9yCisgICAgICAgICAgIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRo
ZSBzcGVjIFsqXS4KKyAgICAgICAgICogQ2xlYW4gdXAgYXNzZXJ0LmpzJyBleGNlcHRpb24gdGVz
dGluZy4KKyAgICAgICAgICogRml4IGEgY29weS1wYXN0ZSBidWcgaW4gd2FzbS5qc29uOiBmbG9h
dGluZy1wb2ludCBjb25zdCByZXR1cm4gdmFsdWVzIHdlcmUKKyAgICAgICAgICAgc3dhcHBlZC4K
KworICAgICAgICBbKl0gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9i
L21hc3Rlci9KUy5tZAorCisgICAgICAgIEltcGxlbWVudCBtb3JlIG9mIHRoZSBKYXZhU2NyaXB0
IFdlYkFzc2VtYmx5IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3YXNtL2Fzc2VydC5qczoKKyAgICAgICAgKGV4cG9ydC5jb25zdC5pc1VuZGVm
KTogYWRkIHRoaXMgdXNlZnVsIGhlbHBlcgorICAgICAgICAoZXhwb3J0LmNvbnN0LnRocm93cyk6
IGZvbGQgb3RoZXIgdGhyb3cgY2hlY2tzIGludG8gdGhpcyBvbmUsIGFuZCBjaGVjayBtZXNzYWdl
IGFzIHdlbGwKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qczoKKyAgICAg
ICAgKGNvbnN0LmNoZWNrT3duUHJvcGVydHlEZXNjcmlwdG9yKTogY2hlY2sgb3duIHByb3BlcnR5
IGRlc2NyaXB0b3IgZm9sbG93cyB0aGUgc3BlYworICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rl
c3RfQnVpbGRlckpTT04uanM6CisgICAgICAgIChjb25zdC5hc3NlcnRPcFRocm93cyk6IHVzZSBu
ZXcgYXNzZXJ0IEFQSQorICAgICAgICAoQ2hlY2tlZE9wY29kZUFyZ3VtZW50c1Rvb01hbnkpOiBk
aXR0bworICAgICAgICAoQ2hlY2tlZE9wY29kZUFyZ3VtZW50c05vdEVub3VnaCk6IGRpdHRvCisg
ICAgICAgIChDYWxsSW52YWxpZCk6IGRpdHRvCisgICAgICAgIChJMzJDb25zdEludmFsaWQpOiBk
aXR0bworICAgICAgICAoRjMyQ29uc3RJbnZhbGlkKTogZGl0dG8gKGFuZCB0aGlzIGNhdWd0aCB0
aGUgSlNPTiBjb3B5LXBhc3RlIGJ1ZykKKyAgICAgICAgKEY2NENvbnN0SW52YWxpZCk6IGRpdHRv
CisgICAgICAgICogd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanM6
IHVzZSBuZXcgYXNzZXJ0IEFQSQorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2
ZWxCaW5hcnlfdmFydWludC5qczogdXNlIG5ldyBhc3NlcnQgQVBJCisgICAgICAgICogd2FzbS91
dGlsaXRpZXMuanM6IGFkZCAiZ2xvYmFsIiBvYmplY3QsIHVzZWQgaW4gYmFzaWMgQVBJIHRlc3Qg
KHRvIGFjY2VzcyBnbG9iYWwuV2ViQXNzZW1ibHkpLgorICAgICAgICAqIHdhc20vd2FzbS5qc29u
OiBmaXggY29weS1wYXN0ZQorCiAyMDE2LTEwLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIHRlc3RzIGZvciB0aGUgZG91YmxlLT5TdHJpbmcg
Y29udmVyc2lvbiBpbiBWYWx1ZUFkZCBjb25zdGFudCBmb2xkaW5nCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBhMTE0YjMz
Li41YzcxY2M0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9hc3NlcnQuanMKQEAgLTI0LDEwICsyNCwxNSBAQAogICovCiAKIGV4cG9ydCBjb25z
dCBub3RVbmRlZiA9ICh2KSA9PiB7Ci0gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkKKyAgICBpZiAo
dHlwZW9mIHYgPT09ICJ1bmRlZmluZWQiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3Vs
ZG4ndCBiZSB1bmRlZmluZWQiKTsKIH07CiAKK2V4cG9ydCBjb25zdCBpc1VuZGVmID0gKHYpID0+
IHsKKyAgICBpZiAodHlwZW9mIHYgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIlNob3VsZCBiZSB1bmRlZmluZWQiKTsKK307CisKIGV4cG9ydCBjb25zdCBlcSA9IChs
aHMsIHJocykgPT4gewogICAgIGlmIChsaHMgIT09IHJocykKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBOb3QgdGhlIHNhbWU6ICIke2xoc30iIGFuZCAiJHtyaHN9ImApOwpAQCAtNDAsMzAgKzQ1
LDEzIEBAIGV4cG9ydCBjb25zdCBnZSA9IChsaHMsIHJocykgPT4gewogICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkOiAiJHtsaHN9IiA8ICIke3Joc30iYCk7CiB9OwogCi1leHBvcnQg
Y29uc3QgdGhyb3dzRXJyb3IgPSAob3BGbiwgbWVzc2FnZSwgLi4uYXJncykgPT4gewotICAgIGlm
IChtZXNzYWdlKQotICAgICAgICBtZXNzYWdlID0gIiBmb3IgIiArIG1lc3NhZ2U7Ci0KLSAgICB0
cnkgewotICAgICAgICBvcEZuKC4uLmFyZ3MpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbiBFcnJvciR7bWVzc2FnZX0sIGdvdCAke2V9YCk7Ci0g
ICAgfQotICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYW4gRXJyb3Ike21l
c3NhZ2V9YCk7Ci19OwotCi1leHBvcnQgY29uc3QgdGhyb3dzUmFuZ2VFcnJvciA9IChvcEZuLCBt
ZXNzYWdlLCAuLi5hcmdzKSA9PiB7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAgICAgIG1lc3NhZ2Ug
PSAiIGZvciAiICsgbWVzc2FnZTsKLQorZXhwb3J0IGNvbnN0IHRocm93cyA9IChmdW5jLCB0eXBl
LCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgdHJ5IHsKLSAgICAgICAgb3BGbiguLi5hcmdz
KTsKKyAgICAgICAgZnVuYyguLi5hcmdzKTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlm
IChlIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiB0eXBl
ICYmIGUubWVzc2FnZSA9PT0gbWVzc2FnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIFJhbmdlRXJyb3Ike21lc3NhZ2V9LCBnb3QgJHtl
fWApOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRvIHRocm93IGEgJHt0eXBl
Lm5hbWV9IHdpdGggbWVzc2FnZSAiJHttZXNzYWdlfSIsIGdvdCAke2UubmFtZX0gd2l0aCBtZXNz
YWdlICIke2UubWVzc2FnZX0iYCk7CiAgICAgfQotICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgdG8gdGhyb3cgYSBSYW5nZUVycm9yJHttZXNzYWdlfWApOworICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIke21lc3Nh
Z2V9ImApOwogfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzCmluZGV4IDE5NTNj
YjAuLjQ5YWM4ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcwpAQCAtMSwz
NyArMSw1NSBAQAotaWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCi0gICAgdGhyb3cgbmV3
IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QiKTsKK2ltcG9y
dCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0ICogYXMgdXRpbGl0aWVz
IGZyb20gJy4uL3V0aWxpdGllcy5qcyc7CiAKLWNvbnN0IGZ1bmN0aW9uUHJvcGVydGllcyA9IFsi
dmFsaWRhdGUiLCAiY29tcGlsZSJdOwotY29uc3QgY29uc3RydWN0b3JQcm9wZXJ0aWVzID0gWyJN
b2R1bGUiLCAiSW5zdGFuY2UiLCAiTWVtb3J5IiwgIlRhYmxlIiwgIkNvbXBpbGVFcnJvciJdOwor
Y29uc3QgY2hlY2tPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSAob2JqLCBwcm9wLCBleHBlY3QpID0+
IHsKKyAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmosIHByb3ApOworICAgIGFzc2VydC5lcSh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSwgZXhw
ZWN0LnR5cGVvZnZhbHVlKTsKKyAgICBhc3NlcnQuZXEoZGVzY3JpcHRvci53cml0YWJsZSwgZXhw
ZWN0LndyaXRhYmxlKTsKKyAgICBhc3NlcnQuZXEoZGVzY3JpcHRvci5jb25maWd1cmFibGUsIGV4
cGVjdC5jb25maWd1cmFibGUpOworICAgIGFzc2VydC5lcShkZXNjcmlwdG9yLmVudW1lcmFibGUs
IGV4cGVjdC5lbnVtZXJhYmxlKTsKK307CiAKLWZvciAoY29uc3QgZiBvZiBmdW5jdGlvblByb3Bl
cnRpZXMpCi0gICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQpCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5jdGlvbiBwcm9wZXJ0
eSAiJHtmfSJgKTsKK2NvbnN0IGZ1bmN0aW9uUHJvcGVydGllcyA9IHsKKyAgICAidmFsaWRhdGUi
OiB7IGxlbmd0aDogMSB9LAorICAgICJjb21waWxlIjogIHsgbGVuZ3RoOiAxIH0sCit9OworY29u
c3QgY29uc3RydWN0b3JQcm9wZXJ0aWVzID0geworICAgICJNb2R1bGUiOiAgICAgICB7IHR5cGVv
ZnZhbHVlOiAiZnVuY3Rpb24iLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBl
bnVtZXJhYmxlOiBmYWxzZSwgbGVuZ3RoOiAxIH0sCisgICAgIkluc3RhbmNlIjogICAgIHsgdHlw
ZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUs
IGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEgfSwKKyAgICAiTWVtb3J5IjogICAgICAgeyB0
eXBlb2Z2YWx1ZTogImZ1bmN0aW9uIiwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwgZW51bWVyYWJsZTogZmFsc2UsIGxlbmd0aDogMSB9LAorICAgICJUYWJsZSI6ICAgICAgICB7
IHR5cGVvZnZhbHVlOiAiZnVuY3Rpb24iLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0
cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgbGVuZ3RoOiAxIH0sCisgICAgIkNvbXBpbGVFcnJvciI6
IHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6
IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEgfSwKKyAgICAiUnVudGltZUVycm9y
IjogeyB0eXBlb2Z2YWx1ZTogImZ1bmN0aW9uIiwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGxlbmd0aDogMSB9LAorfTsKIAotZm9yIChjb25z
dCBjIG9mIGNvbnN0cnVjdG9yUHJvcGVydGllcykKLSAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFz
c2VtYmx5IGNvbnN0cnVjdG9yIHByb3BlcnR5ICIke2N9ImApOwogCi0vLyBGSVhNRSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVz
dCB0aGVzZSBBUElzIGZ1cnRoZXIuIEZvciBub3cgdGhleSBqdXN0IHRocm93LgorYXNzZXJ0Lm5v
dFVuZGVmKFdlYkFzc2VtYmx5KTsKK2NoZWNrT3duUHJvcGVydHlEZXNjcmlwdG9yKHV0aWxpdGll
cy5nbG9iYWwsICJXZWJBc3NlbWJseSIsIHsgdHlwZW9mdmFsdWU6ICJvYmplY3QiLCB3cml0YWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSB9KTsKK2Fzc2Vy
dC5lcShTdHJpbmcoV2ViQXNzZW1ibHkpLCAiW29iamVjdCBXZWJBc3NlbWJseV0iKTsKK2Fzc2Vy
dC5pc1VuZGVmKFdlYkFzc2VtYmx5Lmxlbmd0aCk7CisKK2ZvciAoY29uc3QgZiBpbiBmdW5jdGlv
blByb3BlcnRpZXMpIHsKKyAgICBhc3NlcnQubm90VW5kZWYoV2ViQXNzZW1ibHlbZl0pOworICAg
IGFzc2VydC5lcShXZWJBc3NlbWJseVtmXS5uYW1lLCBmKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNz
ZW1ibHlbZl0ubGVuZ3RoLCBmdW5jdGlvblByb3BlcnRpZXNbZl0ubGVuZ3RoKTsKK30KIAotZm9y
IChjb25zdCBmIG9mIGZ1bmN0aW9uUHJvcGVydGllcykgewotICAgIHRyeSB7Ci0gICAgICAgIFdl
YkFzc2VtYmx5W2ZdKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZSBpbnN0YW5j
ZW9mIEVycm9yKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yLCBnb3QgJHtl
fWApOwotICAgIH0KLSAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFdlYkFzc2VtYmx5LiR7
Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmApOworZm9yIChjb25zdCBjIGluIGNvbnN0cnVjdG9yUHJv
cGVydGllcykgeworICAgIGFzc2VydC5ub3RVbmRlZihXZWJBc3NlbWJseVtjXSk7CisgICAgYXNz
ZXJ0LmVxKFdlYkFzc2VtYmx5W2NdLm5hbWUsIGMpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJs
eVtjXS5sZW5ndGgsIGNvbnN0cnVjdG9yUHJvcGVydGllc1tjXS5sZW5ndGgpOworICAgIGNoZWNr
T3duUHJvcGVydHlEZXNjcmlwdG9yKFdlYkFzc2VtYmx5LCBjLCBjb25zdHJ1Y3RvclByb3BlcnRp
ZXNbY10pOworICAgIC8vIENoZWNrIHRoZSBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZS4KKyAgICBj
aGVja093blByb3BlcnR5RGVzY3JpcHRvcihXZWJBc3NlbWJseVtjXSwgInByb3RvdHlwZSIsIHsg
dHlwZW9mdmFsdWU6ICJvYmplY3QiLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFs
c2UsIGVudW1lcmFibGU6IGZhbHNlIH0pOworICAgIGFzc2VydC5lcShTdHJpbmcoV2ViQXNzZW1i
bHlbY10ucHJvdG90eXBlKSwgYFtvYmplY3QgV2ViQXNzZW1ibHkuJHtjfS5wcm90b3R5cGVdYCk7
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseVtjXSgpLCBUeXBlRXJyb3IsIGBj
YWxsaW5nIFdlYkFzc2VtYmx5LiR7Y30gY29uc3RydWN0b3Igd2l0aG91dCBuZXcgaXMgaW52YWxp
ZGApOwogfQogCi1mb3IgKGNvbnN0IGMgb2YgY29uc3RydWN0b3JQcm9wZXJ0aWVzKSB7Ci0gICAg
dHJ5IHsKLSAgICAgICAgbGV0IHYgPSBuZXcgV2ViQXNzZW1ibHlbY10oKTsKLSAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBuZXcgV2ViQXNzZW1ibHku
JHtmfSgpIHRvIHRocm93IGFuIEVycm9yLCBnb3QgJHtlfWApOwotICAgIH0KLSAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9KCkgdG8gdGhyb3cgYW4gRXJy
b3JgKTsKKy8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk3NzUgSW1wbGVtZW50IGFuZCB0ZXN0IHRoZXNlIEFQSXMgZnVydGhlci4gRm9yIG5vdyB0aGV5
IGp1c3QgdGhyb3cuCisKK2ZvciAoY29uc3QgZiBpbiBmdW5jdGlvblByb3BlcnRpZXMpIHsKKyAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5W2ZdKCksIEVycm9yLCBgV2ViQXNzZW1i
bHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSAke2Z9IGZ1bmN0aW9uIHByb3BlcnR5YCk7CiB9
CisKK2ZvciAoY29uc3QgYyBpbiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpCisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHlbY10oKSwgRXJyb3IsIGBXZWJBc3NlbWJseSBkb2Vz
bid0IHlldCBpbXBsZW1lbnQgdGhlICR7Y30gY29uc3RydWN0b3IgcHJvcGVydHlgKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qcyBiL0pTVGVz
dHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qcwppbmRleCBhYzliODFmLi4wOTM0
MjMxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04u
anMKKysrIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCkBAIC0x
LDkgKzEsOSBAQAogaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIAotY29uc3QgYXNzZXJ0T3BUaHJvd3Mg
PSAob3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7Citjb25zdCBhc3NlcnRPcFRocm93cyA9IChvcEZu
LCBtZXNzYWdlKSA9PiB7CiAgICAgbGV0IGYgPSAobmV3IEJ1aWxkZXIoKSkuQ29kZSgpLkZ1bmN0
aW9uKCk7Ci0gICAgYXNzZXJ0LnRocm93c0Vycm9yKG9wRm4sIG1lc3NhZ2UsIGYpOworICAgIGFz
c2VydC50aHJvd3Mob3BGbiwgRXJyb3IsIG1lc3NhZ2UsIGYpOwogfTsKIAogKGZ1bmN0aW9uIEVt
cHR5TW9kdWxlKCkgewpAQCAtMTkzLDcgKzE5Myw3IEBAIGNvbnN0IGFzc2VydE9wVGhyb3dzID0g
KG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4gewogfSkoKTsKIAogKGZ1bmN0aW9uIENoZWNrZWRPcGNv
ZGVBcmd1bWVudHNUb29NYW55KCkgewotICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5Ob3AoInVo
LW9oISIpKTsKKyAgICBhc3NlcnRPcFRocm93cyhmID0+IGYuTm9wKCJ1aC1vaCEiKSwgYCJub3Ai
IGV4cGVjdHMgMCBpbW1lZGlhdGVzLCBnb3QgMWApOwogfSkoKTsKIAogKGZ1bmN0aW9uIFVuY2hl
Y2tlZE9wY29kZUFyZ3VtZW50c1Rvb01hbnkoKSB7CkBAIC0yMDEsNyArMjAxLDcgQEAgY29uc3Qg
YXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7CiB9KSgpOwogCiAoZnVu
Y3Rpb24gQ2hlY2tlZE9wY29kZUFyZ3VtZW50c05vdEVub3VnaCgpIHsKLSAgICBhc3NlcnRPcFRo
cm93cyhmID0+IGYuSTMyQ29uc3QoKSk7CisgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNv
bnN0KCksIGAiaTMyLmNvbnN0IiBleHBlY3RzIDEgaW1tZWRpYXRlcywgZ290IDBgKTsKIH0pKCk7
CiAKIChmdW5jdGlvbiBVbmNoZWNrZWRPcGNvZGVBcmd1bWVudHNOb3RFbm91Z2goKSB7CkBAIC0y
MjEsNyArMjIxLDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIi
KSA9PiB7CiAKIChmdW5jdGlvbiBDYWxsSW52YWxpZCgpIHsKICAgICBmb3IgKGxldCBjIG9mIFst
MSwgMHgxMDAwMDAwMDAsICIwIiwge30sIEluZmluaXR5LCAtSW5maW5pdHksIE5hTiwgLU5hTiwg
bnVsbF0pCi0gICAgICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5DYWxsKGMpLCBjKTsKKyAgICAg
ICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkNhbGwoYyksIGBJbnZhbGlkIHZhbHVlIG9uIGNhbGw6
IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGkzMmApOwogfSkoKTsKIAogKGZ1bmN0aW9uIEkzMkNvbnN0
VmFsaWQoKSB7CkBAIC0yMzcsNyArMjM3LDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BG
biwgbWVzc2FnZSA9ICIiKSA9PiB7CiAKIChmdW5jdGlvbiBJMzJDb25zdEludmFsaWQoKSB7CiAg
ICAgZm9yIChsZXQgYyBvZiBbLTEsIDB4MTAwMDAwMDAwLCAwLjEsIC0wLjEsICIwIiwge30sIElu
ZmluaXR5LCBudWxsXSkKLSAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KGMp
LCBjKTsKKyAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KGMpLCBgSW52YWxp
ZCB2YWx1ZSBvbiBpMzIuY29uc3Q6IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGkzMmApOwogfSkoKTsK
IAogLy8gRklYTUU6IHRlc3QgaTY0LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNDIwCkBAIC0yNTUsNyArMjU1LDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAo
b3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7CiAKIChmdW5jdGlvbiBGMzJDb25zdEludmFsaWQoKSB7
CiAgICAgZm9yIChsZXQgYyBvZiBbIjAiLCB7fSwgSW5maW5pdHksIC1JbmZpbml0eSwgTmFOLCAt
TmFOLCBudWxsXSkKLSAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkYzMkNvbnN0KGMpLCBj
KTsKKyAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkYzMkNvbnN0KGMpLCBgSW52YWxpZCB2
YWx1ZSBvbiBmMzIuY29uc3Q6IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGYzMmApOwogfSkoKTsKIAog
KGZ1bmN0aW9uIEY2NENvbnN0VmFsaWQoKSB7CkBAIC0yNzEsNyArMjcxLDcgQEAgY29uc3QgYXNz
ZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSA9ICIiKSA9PiB7CiAKIChmdW5jdGlvbiBGNjRD
b25zdEludmFsaWQoKSB7CiAgICAgZm9yIChsZXQgYyBvZiBbIjAiLCB7fSwgSW5maW5pdHksIC1J
bmZpbml0eSwgTmFOLCAtTmFOLCBudWxsXSkKLSAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBm
LkY2NENvbnN0KGMpLCBjKTsKKyAgICAgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkY2NENvbnN0
KGMpLCBgSW52YWxpZCB2YWx1ZSBvbiBmNjQuY29uc3Q6IGdvdCAiJHtjfSIsIGV4cGVjdGVkIGY2
NGApOwogfSkoKTsKIAogKGZ1bmN0aW9uIENhbGxPbmVGcm9tU3RhY2soKSB7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzIGIv
SlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcwppbmRl
eCBiMmMyZDgxLi43ZGRjOGNmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rl
c3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJpbnQuanMKQEAgLTIwLDExICsyMCwxMSBAQCBmb3IgKGxl
dCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7CiAgICAgbGV0IGIgPSBuZXcg
TG93TGV2ZWxCaW5hcnkoKTsKICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikKICAgICAg
ICAgYi51aW50OCgweDgwKTsKLSAgICBhc3NlcnQudGhyb3dzUmFuZ2VFcnJvcigoKSA9PiBiLmdl
dFZhcmludCgwKSk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFu
Z2VFcnJvciwgYFske2l9LCAke2krMX0pIGlzIG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0p
YCk7CiB9CiAKIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CiBmb3IgKGxldCBpID0gMDsg
aSA8IExMQi52YXJCaXRzTWF4OyArK2kpCiAgICAgYi51aW50OCgweDgwKTsKIGIudWludDgoMHgw
MCk7Ci1hc3NlcnQudGhyb3dzUmFuZ2VFcnJvcigoKSA9PiBiLmdldFZhcmludCgwKSk7Cithc3Nl
cnQudGhyb3dzKCgpID0+IGIuZ2V0VmFyaW50KDApLCBSYW5nZUVycm9yLCBgU2hpZnRpbmcgdG9v
IG11Y2ggYXQgNmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xv
d0xldmVsQmluYXJ5X3ZhcnVpbnQuanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93
TGV2ZWxCaW5hcnlfdmFydWludC5qcwppbmRleCBlOGI5Y2JiLi5iZTgyZTEzIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5qcwor
KysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFydWludC5q
cwpAQCAtMTksMTEgKzE5LDExIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgTExCLnZhckJpdHNNYXgg
KyAxOyArK2kpIHsKICAgICBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwogICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgaTsgKytqKQogICAgICAgICBiLnVpbnQ4KDB4ODApOwotICAgIGFzc2Vy
dC50aHJvd3NSYW5nZUVycm9yKCgpID0+IGIuZ2V0VmFydWludCgwKSk7CisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJvciwgYFske2l9LCAke2krMX0pIGlz
IG91dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7aX0pYCk7CiB9CiAKIGxldCBiID0gbmV3IExvd0xl
dmVsQmluYXJ5KCk7CiBmb3IgKGxldCBpID0gMDsgaSA8IExMQi52YXJCaXRzTWF4OyArK2kpCiAg
ICAgYi51aW50OCgweDgwKTsKIGIudWludDgoMHgwMCk7Ci1hc3NlcnQudGhyb3dzUmFuZ2VFcnJv
cigoKSA9PiBiLmdldFZhcnVpbnQoMCkpOworYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmlu
dCgwKSwgUmFuZ2VFcnJvciwgYFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS91dGlsaXRpZXMuanMgYi9KU1Rlc3RzL3dhc20vdXRpbGl0aWVzLmpzCmlu
ZGV4IDdjNjM4NjcuLjZkYWE3YmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS91dGlsaXRpZXMu
anMKKysrIGIvSlNUZXN0cy93YXNtL3V0aWxpdGllcy5qcwpAQCAtMzAsNiArMzAsMTMgQEAgY29u
c3QgX2Vudmlyb25tZW50ID0KICAgICAgICAgOiAodHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICJm
dW5jdGlvbiIgPyAid29ya2VyIgogICAgICAgICAgICA6ICJzaGVsbCIpKSk7CiAKK2xldCBfZ2xv
YmFsID0gKHR5cGVvZiBnbG9iYWwgIT09ICdvYmplY3QnIHx8ICFnbG9iYWwgfHwgZ2xvYmFsLk1h
dGggIT09IE1hdGggfHwgZ2xvYmFsLkFycmF5ICE9PSBBcnJheSkKKyAgICA/ICgodHlwZW9mIHNl
bGYgIT09ICd1bmRlZmluZWQnKSA/IHNlbGYKKyAgICAgICA6ICh0eXBlb2Ygd2luZG93ICE9PSAn
dW5kZWZpbmVkJykgPyB3aW5kb3cKKyAgICAgICA6ICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZp
bmVkJykgPyBnbG9iYWwKKyAgICAgICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCkpCisgICAg
OiBnbG9iYWw7CisKIGNvbnN0IF9ldmFsID0geCA9PiBldmFsLmNhbGwobnVsbCwgeCk7CiAKIGNv
bnN0IF9yZWFkID0gZmlsZW5hbWUgPT4gewpAQCAtNjAsNCArNjcsNCBAQCBjb25zdCBfanNvbiA9
IGZpbGVuYW1lID0+IHsKIH0KIAogLy8gVXNlIHVuZGVyc2NvcmUgbmFtZXMgdG8gYXZvaWQgY2xh
c2hpbmcgd2l0aCBidWlsdGluIG5hbWVzLgotZXhwb3J0IHsgX2V2YWwgYXMgZXZhbCwgX3JlYWQg
YXMgcmVhZCwgX2xvYWQgYXMgbG9hZCwgX2pzb24gYXMganNvbiB9OworZXhwb3J0IHsgX2V2YWwg
YXMgZXZhbCwgX3JlYWQgYXMgcmVhZCwgX2xvYWQgYXMgbG9hZCwgX2pzb24gYXMganNvbiwgX2ds
b2JhbCBhcyBnbG9iYWwgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDU1YTBlZWUuLmE4MjM5ZDEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAt
NTgsOCArNTgsOCBAQAogICAgICAgICAiZW5kIjogICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImNvbnRyb2wiLCAgICAidmFsdWUiOiAgMTUsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJlbmQgYSBibG9jaywg
bG9vcCwgb3IgaWYiIH0sCiAgICAgICAgICJpMzIuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiaTMyIl0sICAgICAg
InBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJ2YXJpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQg
dmFsdWUgaW50ZXJwcmV0ZWQgYXMgaTMyIiB9LAogICAgICAgICAiaTY0LmNvbnN0IjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBb
Imk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidmFyaW50NjQifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGk2NCIgfSwKLSAgICAgICAgImY2NC5j
b25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDE4
LCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjog
InVpbnQ2NCJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmNjQiIH0sCi0g
ICAgICAgICJmMzIuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAxOSwgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAg
ICAgICAidHlwZSI6ICJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQg
YXMgZjMyIiB9LAorICAgICAgICAiZjY0LmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5Ijog
InNwZWNpYWwiLCAgICAidmFsdWUiOiAgMTgsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
InZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidWludDY0In1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZhbHVl
IGludGVycHJldGVkIGFzIGY2NCIgfSwKKyAgICAgICAgImYzMi5jb25zdCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDE5LCAicmV0dXJuIjogWyJmMzIi
XSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogInVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBj
b25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmMzIiIH0sCiAgICAgICAgICJnZXRfbG9jYWwi
OiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAyMCwgInJl
dHVybiI6IFsibG9jYWwiXSwgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAg
ICJzZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1
ZSI6ICAyMSwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsibG9jYWwiXSwg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVy
IiB9LAogICAgICAgICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNp
YWwiLCAgICAidmFsdWUiOiAgMjUsICJyZXR1cm4iOiBbInByZXYiXSwgICAgICJwYXJhbWV0ZXIi
OiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2Fs
X2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxl
IG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ1OGEyYjQuLjljYTNhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Nyw2ICs4NjcsMjUgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICB3YXNtL1dBU01QbGFuLmNwcAogICAgIHdhc20vV2ViQXNzZW1ibHlP
YmplY3QuY3BwCiAKKyAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCisg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisgICAgd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TWVtb3J5LmNwcAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKKyAg
ICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCisgICAgd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisg
ICAgd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAorICAg
IHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNt
L2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKKwogICAgIHlhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCiAgICAgeWFy
ci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAKICAgICB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHAK
QEAgLTkxNyw2ICs5MzYsMTkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNF
UwogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCisKKyAgICB3YXNt
L2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCisgICAgd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3Bw
CisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAogKQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1M2I0ZjRj
Li4yMTRhNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTEgQEAKKzIw
MTYtMTAtMTggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIEph
dmFTY3JpcHQgV2ViQXNzZW1ibHkgQVBJOiBiYWJ5IHN0ZXBzCisKKyAgICAgICAgICogRXhwYW5k
IFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9ycyBpbnRvIHRoZWlyIG93biBmaWxlcy4gVGhpcyByZXF1
aXJlcyBhIGxvdCBvZgorICAgICAgICAgICBib2lsZXJwbGF0ZSwgYXMgd2VsbCBhcyBhZGRpbmcg
dGhlIC5sdXQuaCBmaWxlcy4gQWxsIG9mIHRoZQorICAgICAgICAgICBKU1dlYkFzc2VtYmx5Ki57
aCxjcHB9LCBhcyB3ZWxsIGFzIENvbnN0cnVjdG9yIGFuZCBQcm90b3R5cGUgZmlsZXMsIGFyZQor
ICAgICAgICAgICBjdXJyZW50bHkgdGhlIHNhbWUgYmV0d2VlbiB0aGUgNiBzcGVjaWZpZWQgV2Vi
QXNzZW1ibHkgY29uc3RydWN0b3JzLiBJdCdsbCBiZQorICAgICAgICAgICBlYXN5IHRvIGltcGxl
bWVudCBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBvbiBjb25zdHJ1Y3RlZCBvYmplY3RzIGFzIHBlciB0
aGUKKyAgICAgICAgICAgc3BlYywgYW5kIGhhdmUgZWFjaCBvZiB0aGVzZSBmaWxlcyBkaXZlcmdl
LgorICAgICAgICAgKiBVc2UgY29uc3RydWN0b3IgbWFjcm8gd2hlbiBpbml0aWFsaXppbmcgdGhl
IGdsb2JhbCBvYmplY3QuCisgICAgICAgICAqIERyYW1hdGljYWxseSBpbXByb3ZlIHRlc3Rpbmcg
b2YgdGhlIFdlYkFzc2VtYmx5IEFQSSBieSBjaGVja2luZyBmb3IKKyAgICAgICAgICAgcHJvcGVy
dGllcyBzcGVjaWZpZWQgaW4gdGhlIHNwZWMgWypdLgorICAgICAgICAgKiBDbGVhbiB1cCBhc3Nl
cnQuanMnIGV4Y2VwdGlvbiB0ZXN0aW5nLgorICAgICAgICAgKiBGaXggYSBjb3B5LXBhc3RlIGJ1
ZyBpbiB3YXNtLmpzb246IGZsb2F0aW5nLXBvaW50IGNvbnN0IHJldHVybiB2YWx1ZXMgd2VyZQor
ICAgICAgICAgICBzd2FwcGVkLgorCisgICAgICAgIFsqXSBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCisKKyAgICAgICAgSW1wbGVtZW50IG1v
cmUgb2YgdGhlIEphdmFTY3JpcHQgV2ViQXNzZW1ibHkgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgLmx1dC5o
IGdlbmVyYXRpb24KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBkaXR0bworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGFkZCAubHV0Lmgg
Z2VuZXJhdGlvbiBhbmQgYWxsIHRoZSBuZXcgZmlsZXMKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOiB1c2Ug
YW1jcm8gdG8gbGlzdCBhbGwgY29uc3RydWN0b3JzCisgICAgICAgICogd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5jcHA6IHVuYm9pbGVycGxhdGUsIGFsbCBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBv
d24gZmlsZXMKKyAgICAgICAgKiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0Lmg6IGRpdHRvCisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAg
ICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
ZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5
T2JqZWN0LmguCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5TWVtb3J5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5oLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseU1vZHVsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3I6OkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3I6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlU
YWJsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2Vt
Ymx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OkpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU1dlYkFz
c2VtYmx5VGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseVRhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpDb21waWxlRXJyb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9i
amVjdC5oLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSk6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAg
ICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpJbnN0YW5jZVN0cnVjdHVyZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9y
eSk6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3I6Ok1lbW9yeVN0cnVjdHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGU6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJB
c3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpNb2R1bGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpXZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6UnVudGltZUVycm9yU3RydWN0dXJlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZTo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUpOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDogQ29waWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAoSlNDOjpj
YWxsSlNXZWJBc3NlbWJseVRhYmxlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNv
bnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6VGFibGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0Lmgu
CisKIDIwMTYtMTAtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBaXI6OklSQyBkb2Vzbid0IG5lZWQgdG8gaGF2ZSBhIHNwZWNpYWwtY2FzZSBmb3IgdW5jb2xv
cmVkIFRtcHMgc2luY2UgdGhleSBhbGwgZ2V0IGNvbG9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYjUzMzZhNi4uZWVjYjUzYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDkgKzI4LDEwIEBAIFZQQVRI
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJz
ZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotCSQoSmF2YVNjcmlwdENvcmUp
L2ludGVycHJldGVyIFwKLQkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAotCSQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisgICAg
JChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBc
CisgICAgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS9qcyBcCiAjCiAKIFBZVEhPTiA9IHB5dGhvbgpA
QCAtMTU5LDYgKzE2MCwxOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgU3RyaW5nUHJv
dG90eXBlLmx1dC5oIFwKICAgICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3ltYm9s
UHJvdG90eXBlLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
Lmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCBcCisg
ICAgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBcCisgICAg
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUubHV0LmggXAorICAgIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IubHV0LmggXAorICAgIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIFwK
KyAgICBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggXAorICAgIFdlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUubHV0LmggXAogIwogCiAkKE9CSkVDVF9MVVRfSEVBREVSUyk6ICUubHV0
LmggOiAlLmNwcCAkKEphdmFTY3JpcHRDb3JlKS9jcmVhdGVfaGFzaF90YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhMTkyZTg5Li44NGY4YWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTg3OSw2ICsxODc5LDU0IEBACiAJCUE4QTQ3NDhFMTUxQTgzMDYw
MDQxMjNGRiAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3NDhEMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsK
IAkJQUQyRkNCODgxREFFQkYzQzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJG
MzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgKi87IH07CiAJCUFEMkZDQjg5MURB
RUJGM0YwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5T2JqZWN0LmggKi87IH07CisJCUFEMkZDQkUyMURCNThEQUQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yLmNwcCAqLzsgfTsKKwkJQUQyRkNCRTMxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yLmggKi87IH07CisJCUFEMkZDQkU0MURCNThEQUQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQTgxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5jcHAgKi87IH07CisJCUFEMkZDQkU1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCAqLzsgfTsKKwkJQUQyRkNCRTYxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1v
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQUExREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwICovOyB9Owor
CQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUIxREI1OERB
NDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLzsgfTsKKwkJQUQyRkNCRTgxREI1
OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUMxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwICovOyB9OworCQlBRDJGQ0JFOTFE
QjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQUQxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCAqLzsgfTsKKwkJQUQyRkNCRUExREI1
OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBRTFEQjU4REE0MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseVRhYmxlLmNwcCAqLzsgfTsKKwkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlU
YWJsZS5oICovOyB9OworCQlBRDJGQ0JFQzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCMDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQkVEMURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCMTFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJG
Q0JFRTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNC
QjIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNw
cCAqLzsgfTsKKwkJQUQyRkNCRUYxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDJGQ0JCMzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkNCRjAxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQUQyRkNCRjExREI1OERBRDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQjUxREI1OERBNDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JGMjFEQjU4
REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNjFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZD
QkYzMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNzFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICovOyB9OworCQlB
RDJGQ0JGNDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JC
ODFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CisJCUFEMkZDQkY1MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDJGQ0JCOTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBRDJGQ0JGNjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNCQkExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
LmNwcCAqLzsgfTsKKwkJQUQyRkNCRjcxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDJGQ0JCQjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuaCAqLzsgfTsKKwkJQUQyRkNCRjgxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQkQxREI1OERBNDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNC
RkExREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkJF
MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAg
Ki87IH07CisJCUFEMkZDQkZCMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNCQkYxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmggKi87IH07CisJCUFEMkZDQkZDMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNCQzAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQkZEMURCNThEQUQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkMxMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNCRkUxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQzIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuY3BwICovOyB9OworCQlBRDJGQ0JGRjFEQjU4REFEMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQzMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkNDMDAxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOTgxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBRDJGQ0MwMTFEQjU4REFEMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNDMDIxREI1OERB
RDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjlBMURCNTg1QTYwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZDQzAzMURC
NThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOUIxREI1ODVBNjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmggKi87IH07CisJCUFEMkZDQzA0MURC
NThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCAqLzsgfTsKKwkJQUQyRkNDMDUxREI1OERBRDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjhEMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5TW9kdWxlLmggKi87IH07CisJCUFEMkZDQzE2MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzE3MURC
NTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBCMURC
NTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCAq
LzsgfTsKKwkJQUQyRkNDMTgxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VD
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQzBDMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmggKi87IH07CisJCUFEMkZDQzFBMURCNTlDQjIwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMEUxREI1OUM1OTAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzFC
MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBGMURCNTlD
NTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJ
QUQyRkNDMUMxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJG
Q0MxMDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQu
aCAqLzsgfTsKKwkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNDMTExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmx1dC5oICovOyB9OworCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzEyMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBRDJGQ0MxRjFEQjU5
Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxMzFEQjU5
QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggKi87
IH07CisJCUFEMkZDQzIwMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDJGQ0MxNDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9y
Lmx1dC5oICovOyB9OworCQlBRDJGQ0MyMTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQzE1MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmx1dC5oICovOyB9OwogCQlBRDg2QTkzRTFBQTREODhEMDAyRkU3N0YgLyogV2Vha0dD
TWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQ4NkE5M0QxQUE0RDg3QzAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRERCMUY2MzE4RDc3
REJFMDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJv
b3RTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDFDRjA2ODE2RENBQjJEMDBC
OTcxMjMgLyogUHJvcGVydHlUYWJsZS5jcHAgKi87IH07CkBAIC00MjA4LDYgKzQyNTYsNTQgQEAK
IAkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJB
c3NlbWJseU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQjg3
MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBRDJGQ0I4QzFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5
TW9kdWxlLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4RDFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2Vt
Ymx5TW9kdWxlLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjk4MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFE
MkZDQjk5MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCOUExREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQy
RkNCOUIxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBl
Lmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBNzFEQjU4
REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmg7IHBhdGggPSBq
cy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQkE4MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUExREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNXZWJBc3NlbWJseU1lbW9yeS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNXZWJBc3NlbWJseU1lbW9yeS5oOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseU1lbW9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBQzFEQjU4REE0MDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcDsgcGF0aCA9IGpzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0JBRDFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkFFMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJB
c3NlbWJseVRhYmxlLmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJB
c3NlbWJseVRhYmxlLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5VGFibGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHBhdGgg
PSBqcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDJGQ0JCMjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJG
Q0JCMzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkI0MURCNThEQTQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDsg
cGF0aCA9IGpzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkI1MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUluc3RhbmNlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNC
QjYxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjcxREI1OERBNDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
RDJGQ0JCODFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCOTFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQkJBMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJCMURCNThEQTQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQy
RkNCQkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNC
QkQxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCRTFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFEMkZDQkMwMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkMxMURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmg7IHBhdGgg
PSBqcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQUQyRkNCQzIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzMxREI1OERBNDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJG
Q0MwQTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
ci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQlBRDJGQ0MwQjFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90
b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0MwQzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFE
MkZDQzBEMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MwRTFE
QjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMEYxREI1OUM1OTAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMTAxREI1OUM1OTAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQzExMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQzEyMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBRDJGQ0MxMzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBRDJGQ0MxNDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQzE1MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg2QTkzRDFBQTRE
ODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWFrR0NNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEREIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1
Y3Rpb25TdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwMyw2
ICs1Njk5LDE4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFEMkZD
QzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
Lmx1dC5oICovLAorCQkJCUFEMkZDQzBCMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBRDJGQ0MwQzFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUFEMkZD
QzBEMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5o
ICovLAorCQkJCUFEMkZDQzBFMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNv
bnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUFEMkZDQzBGMURCNTlDNTkwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxMDFEQjU5QzU5MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBRDJG
Q0MxMTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0Lmgg
Ki8sCisJCQkJQUQyRkNDMTIxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMTMxREI1OUM1OTAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUFEMkZDQzE0
MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggKi8s
CisJCQkJQUQyRkNDMTUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUubHV0LmggKi8sCiAJCQkJMEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5o
ICovLAogCQkJCTBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQu
aCAqLywKIAkJCQkwRjYxODMzNTFDNDVGM0I2MDA3MjQ1MEIgLyogQWlyT3Bjb2RlVXRpbHMuaCAq
LywKQEAgLTU2ODgsNiArNTc5Niw3IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3
YXNtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJG
Q0I4QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8sCiAJCQkJQUQyRkNCODYxREFFQkYzNzAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCAqLywKIAkJCQlBRDJGQ0I4NzFEQUVCRjM3MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuaCAqLywKIAkJCQk3Qjk4RDEzNDFCNjBDRDVBMDAy
M0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCAqLywKQEAgLTcxOTEsNiArNzMwMCw0OSBAQAogCQkJ
cGF0aCA9IGJ1aWx0aW5zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQUQy
RkNCOEExREI1ODQwMDAwQjNFNzM2IC8qIGpzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvci5jcHAgKi8sCisJCQkJQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLywKKwkJCQlBRDJGQ0JBODFEQjU4REE0MDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCAqLywKKwkJCQlBRDJGQ0JBOTFEQjU4
REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmggKi8sCisJCQkJQUQyRkNCQUEx
REI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwICovLAorCQkJCUFEMkZD
QkFCMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi8sCisJCQkJQUQy
RkNCQUMxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwICov
LAorCQkJCUFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yLmggKi8sCisJCQkJQUQyRkNCQUUxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlU
YWJsZS5jcHAgKi8sCisJCQkJQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHlUYWJsZS5oICovLAorCQkJCUFEMkZDQkIwMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JCMTFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAorCQkJCUFE
MkZDQkIyMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlw
ZS5jcHAgKi8sCisJCQkJQUQyRkNCQjMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNCQjQxREI1OERBNDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQyRkNCQjUxREI1
OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CUFEMkZDQkI2MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBRDJGQ0JCNzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oICovLAorCQkJCUFEMkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JCOTFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovLAorCQkJCUFEMkZDQkJB
MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgKi8sCisJ
CQkJQUQyRkNCQkIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
LmggKi8sCisJCQkJQUQyRkNCQkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkJEMURCNThEQTQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQyRkNCQkUx
REI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcCAq
LywKKwkJCQlBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQcm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0JDMDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JDMTFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQyRkNCQzIxREI1
OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwICovLAorCQkJCUFE
MkZDQkMzMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggKi8s
CisJCQkJQUQyRkNCOTgxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCUFEMkZDQjk5MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQyRkNCOUExREI1ODVBNjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0I5QjFEQjU4NUE2
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0I4
QzFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgKi8sCisJCQkJQUQy
RkNCOEQxREI1ODQ0MDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuaCAqLywKKwkJCSk7
CisJCQluYW1lID0ganM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDNDcw
M0NDMTE5Mjg0NEE0MDAxM0ZCRUEgLyogY29kZWdlbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC03MzA0LDYgKzc0NTYsNyBAQAogCQkJCUJDMThDM0U1MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCRTFD
MTEwNDEyMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Y2MDUxNDBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0VFMjIwOTFDRUI5ODk1MDAw
QzIzOTYgLyogREZHQmFja3dhcmRzQ0ZHLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAxNDFB
QTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywK
QEAgLTczMTIsNiArNzQ2NSw3IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFS
TXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVB
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUQyRkNDMUIxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywK
QEAgLTc0MDYsNiArNzU2MCw3IEBACiAJCQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEy
OTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJQUQyRkNDMDExREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZE
RCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlE
QTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJz
ICovLApAQCAtNzQxNCw2ICs3NTY5LDcgQEAKIAkJCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVE
OEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUFE
MkZDQkYxMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29k
ZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0
QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyMzBF
RDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAt
NzQ0NCw2ICs3NjAwLDcgQEAKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNE
dXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjYxQUE5MDk1NjAwRDMz
QjMzIC8qIENsb25lZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkQxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQzk3RjM0MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzUyMCw2ICs3Njc3LDcg
QEAKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0Fy
Z3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkY1MURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdDNUZCODFEODg4QTBDMDA0NEY1RTIgLyogTWFya2VkQmxvY2tJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJERDgxMjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTQxQUIzRDhCRTAwQkJC
OEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTk1LDYg
Kzc3NTMsNyBAQAogCQkJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1
c2hlZEF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyog
REZHRmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzE2MURCNTlDQjIwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyREQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OUEwOTA4MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcElt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjlDQzg5MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdG
cm96ZW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjMyLDYgKzc3OTEsNyBAQAogCQkJCTBG
MkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NjE1MjI4MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjhGMTQzNjFBREYwOTAxMDBFRDc5MkMgLyogREZHTW92SGludFJlbW92
YWxQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUYxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkYyQ0Q1QzFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9v
cHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdO
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2ODMsNiArNzg0Myw3IEBACiAJCQkJODZFQ0EzRkEx
MzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcy
QUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0NTYgLyogREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMDUxREI1OERBRDAw
QjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5
MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBERkdT
cGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Njk2LDYgKzc4NTcsNyBAQAogCQkJ
CTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAw
Njc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUQyRkNDMUExREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTk5QjI0OTFDMjRDM0QzMDBDODIxNTkgLyogSklU
TmVnR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMx
MEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkZDQ0ZGMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAq
LywKQEAgLTc3MjYsNiArNzg4OCw3IEBACiAJCQkJMEZFMDUwMTgxQUE5MDkxMTAwRDMzQjMzIC8q
IERpcmVjdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMTYxQUE5MDkxMTAw
RDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NDI3MzExNThFQkQ1NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI0MThBMUIyNTkwMDI2
RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NTEsNiArNzkx
NCw3IEBACiAJCQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8q
IEV4aXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYg
LyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkIxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjRERTFDRjFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1Nw
aWxscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZs
b2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzY0LDYgKzc5MjgsNyBAQAog
CQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MzhFMEMxQkYwMjc2QzAwMTNDODhGIC8qIEIzQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMU3Rh
Y2ttYXBBcmd1bWVudExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzg2Miw2ICs4MDI3LDcgQEAK
IAkJCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwMzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5m
by5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUMxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0
NDE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
MzQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5
MDAxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTc4
NzcsNiArODA0Myw3IEBACiAJCQkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8q
IEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2
MDAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUIx
REI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0Rjk3NDQ3MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTY4LDYgKzgxMzUsNyBAQAogCQkJCUJDMThDNDE0
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBRDJGQ0JFOTFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8q
IEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAv
KiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVC
QTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTc5
LDcgKzgxNDcsOSBAQAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVFRjkxRjE2ODc4RjdEMDAz
RTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MyMTFEQjU5Q0Iy
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzcxMkUzMTdDRDg3OTMwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRTMxREI1OERBRDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXku
aCBpbiBIZWFkZXJzICovLApAQCAtODAxMCw2ICs4MTgwLDcgQEAKIAkJCQlCQzE4QzQxRTBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNDb250ZXh0UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBF
RTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZklu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MwMzFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUI0OURE
MUJFQzgwODYwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNjksNiArODI0MCw3IEBACiAJ
CQkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTSm9iLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDIzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xvY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUFEMkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RDcwOUMxNkRFOTlG
NDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTRCQjdG
MzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcwMDg3NDIxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggaW4gSGVhZGVycyAq
LywKQEAgLTgwNzcsNiArODI0OSw3IEBACiAJCQkJOTk1OUU5MkQxQkQxN0ZBNDAwMUFBNDEzIC8q
IGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMThDQkMxMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQUQyRkNDMTcxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNFOEQxRDFCOTAxM0Mz
MDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MjQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTgw
OTUsNiArODI2OCw3IEBACiAJCQkJRTMyMkU1QTMxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzRUY4ODc1MUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8q
IEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTI4RkYzQzE4QUM0QUVD
MDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTE2
LDYgKzgyOTAsNyBAQAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pv
aW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
U3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYg
LyogQjNNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JGMzFEQjU4REFEMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTgyNTgsNiArODQzMyw3IEBACiAJCQkJ
QTc3RjE4MjUxNjQxOTJDNzAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzI4QzZDOTFEQTQzMkY5MDBEMjU1RkQgLyogUmVnaXN0ZXJBdE9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjUzMDNENjQxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOUNFNzQxQjlD
RDZEMDAwNEVEQ0E2IC8qIFBvbHltb3JwaGljQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU4MzQxODFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVt
cFRhcmdldHMuaCBpbiBIZWFkZXJzICovLApAQCAtODMzNCw2ICs4NTEwLDcgQEAKIAkJCQlGRTMx
OEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFy
Z3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkY3MURCNThEQUQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFy
Z3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODM1MCw2ICs4NTI3LDcgQEAK
IAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1
cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMTgxREI1OUNCMjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJD
IC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTg0MDIsMTAgKzg1ODAsMTIgQEAK
IAkJCQlFMzJGRjFFQTFEQTc1NzFDMDBBOEJGMjEgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8qIFdBU01DYWxsaW5n
Q29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMjAxREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk5NkI3MzI4MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9s
VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBT
eW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3
MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUQxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVy
blR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5
MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTg0NjUsNiAr
ODY0NSw3IEBACiAJCQkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0MxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCBp
biBIZWFkZXJzICovLAorCQkJCUFEMkZDQkU1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0MwMEQ2RDVE
NCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIxRkMwMDM2
NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEODZBOTNFMUFBNEQ4OEQw
MDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg0OTAsNiAr
ODY3MSw3IEBACiAJCQkJNzlCMTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8qIEpJVE1hdGhJQ0Zvcndh
cmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFy
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkZGMURCNThEQUQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCNDc2N0YxRDk5QUVBRDAwOEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTAyLDYgKzkyODQsNyBAQAogCQkJCTE0Mjgw
ODYzMTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQyODA4NjQxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5PYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NjUxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5Qcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRjYxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUVBNUM3QTExOTBGMDg0MjAwNTA4RUJFIC8qIEJ1bmRsZVBhdGgubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDMkZDQUUxMDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTExOSw2ICs5MzAyLDcgQEAKIAkJCQk2MkQ3NTVE
NDFCODRGQjNEMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGRTFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCOEFEQzFD
NEVGQUMzMDA5NjkwNTIgLyogQjNTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTYyNzY3MzIzMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05MjA5LDYgKzkzOTMsNyBAQAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZF
NCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUz
NEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkU4MURCNThEQUQwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY1QTEyNzMxOTJEOUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTI4OSw2ICs5NDc0LDcgQEAKIAkJCQkwRjJCOUNFQzE5RDBCQTdEMDBC
MUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCMTc2NjIxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNBMUJGOTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRUExREI1OERBRDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQ0NGQjE4QTYwMDcw
MDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REQy
MTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTkyOTYsNiArOTQ4Miw3IEBACiAJCQkJMEY2ODJGQjIxOUJD
QjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEODlDRkYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkMyMENCOTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGMDFEQjU4REFEMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUZCNEY0MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNEYyOURGMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVj
dXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlFMzI2
MzFCMDVBQjA0MDA4MDFFRDUgLyogREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC05MzIxLDYgKzk1MDgsNyBAQAogCQkJCTBGRERCRkI1MTY2NkVFRDgw
MEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOTQ5NTg3MUM1N0Y0NzUwMDQxM0E0OCAvKiBCM1N0YWNrU2xvdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGMjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0QTE1
MjI4MDlBMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkZGQzk1RjE0RUY5MEJCMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxs
b2NhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJD
OUIyNiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtOTMzNCw2ICs5NTIyLDcgQEAKIAkJCQk5OUU0NUEyNTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5j
b2RlZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUM3MTA3RUMzNzYwMDQyN0E0
OCAvKiBFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDODEwN0VDMzc2MDA0MjdB
NDggLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFQzFE
QjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRUI1OEMxNDE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUM5MTA3RUMzNzYwMDQyN0E0
OCAvKiBFcnJvckluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNBMTA3RUMz
NzYwMDQyN0E0OCAvKiBFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0NTQs
NiArOTY0Myw3IEBACiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZG
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBRDJGQ0MwNDFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTNBMDZCRjFDMTEwNDE2MDAzOTBGREQg
LyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjJEODVC
NjFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUzMjJFNUE2MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExET01KSVRQYXRj
aHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTQ3Niw2ICs5NjY2LDcgQEAKIAkJ
CQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkFGN0VGRDE2NUJBOTFCMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkRCN0VDMUQ2MTdEMTEwMENEQkY4RSAvKiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRTIxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0
NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCMTRFMUUxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRP
cGNvZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUwOSw2ICs5NzAwLDcgQEAKIAkJCQkxNEFC
REY2MDBBNDM3RkVGMDBFQ0NBMDEgLyogSlNDYWxsYmFja09iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTdDRjQ1ODE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUFEMkZDQzAwMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQxMTA3RUMz
NzYwMDQyN0E0OCAvKiBKU0NlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDYxMDdF
QzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEZD
RTQwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05
NTQ4LDYgKzk3NDAsNyBAQAogCQkJCTcwMTNDQThCMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAw
MTNFN0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGQTFEQjU4REFE
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjk1MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU1Nyw2ICs5NzUwLDcgQEAKIAkJCQlFMzlE
QTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCMzg3OTIxQkZEMzFBMTAwRTNBQjFFIC8qIEZUTENvbXBpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTMzRThEMUMxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRjgxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ3RjM5RDQxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0ODJCN0U0MEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0Y5OTM2MDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk2MzAsNiArOTgyNCw3IEBACiAJCQkJRkU2OEM2MzgxQjkwREUwQjAw
NDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
N0E0QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkUzQTA2QUMxQzEwQzM5RTAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkZDMURCNThEQUQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcw
MDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTY4OSw2ICs5ODg0LDcgQEAKIAkJCQkwRjE5
MENBQzE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkY3MjlCMzE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2Zp
bGVyT3JpZ2luU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRTYxREI1OERBRDAw
QjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
RDRDMEMxQzNFMUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkIxMDU4QjE2NzU0ODMxMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNThEMTY3NTQ4MzcwMEY4QUI2RSAvKiBQcm9maWxl
ck9TUkV4aXRTaXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcyMSw2ICs5OTE3LDcgQEAKIAkJ
CQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUUxODIzNDBCNDAw
QTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
KwkJCQlBRDJGQ0JGNDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyog
UmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCOEFEODFDNEVEREEyMDA5NjkwNTIg
LyogQjNEdXBsaWNhdGVUYWlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4
M0FDMDBCREU3RTggLyogUnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05Nzk3LDgg
Kzk5OTQsMTAgQEAKIAkJCQkwRkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJf
aG9sZGVyLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRD
QjlGRiAvKiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFRTFE
QjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4u
YyBpbiBTb3VyY2VzICovLAogCQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFNDFEQjU4
REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29k
ZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0QkY0QiAv
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4MDks
NiArMTAwMDgsNyBAQAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1
YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBC
MzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNDMDIxREI1OERBRDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
NTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1M0Y0MEU4RjFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNjA0YzBiZi4uMTVhOTQxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODIz
LDEyICs4MjMsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBhdXRvKiB3YXNt
ID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVByaXZh
dGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
SW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCi0gICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdldERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRlTmFt
ZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIkNv
bXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCisjZGVmaW5lIFJFR0lTVEVSX1dBU01fQ09OU1RSVUNUT1JfQVNfR0xP
QkFMX1BST1BFUlRZKE5BTUUsIC4uLikgXAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk5BTUUgIyMgUHJpdmF0ZU5hbWUoKSwg
d2FzbS0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICNOQU1FKSks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEZPUl9FQUNI
X1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoUkVHSVNURVJfV0FTTV9DT05TVFJVQ1RPUl9BU19H
TE9CQUxfUFJPUEVSVFkpCiAgICAgICAgIH07CiAgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMoZXh0
cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0
LmNwcAppbmRleCA0NGMyMjliLi45MzcyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCkBAIC0yNiwxNzcgKzI2LDM0IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3QuaCIKIAotI2luY2x1
ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCi0jaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNs
dWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IuaCIKKyNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNp
bmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAianMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIK
KyNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgImpzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFdlYkFzc2VtYmx5T2JqZWN0KTsK
IAotLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKLSNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9DT05TVFJV
Q1RPUl9QUk9QRVJUWShETykgXAotICAgIERPKE1vZHVsZSwgMSkgXAotICAgIERPKEluc3RhbmNl
LCAyKSBcCi0gICAgRE8oTWVtb3J5LCAxKSBcCi0gICAgRE8oVGFibGUsIDEpIFwKLSAgICBETyhD
b21waWxlRXJyb3IsIDEpIFwKLSAgICBETyhSdW50aW1lRXJyb3IsIDEpCi0KLS8vIE5hbWUsIGZ1
bmN0aW9uTGVuZ3RoCi0jZGVmaW5lIEZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoRE8p
IFwKLSAgICBETyh2YWxpZGF0ZSwgMSkgXAotICAgIERPKGNvbXBpbGUsIDEpCi0KLS8vIEZJWE1F
IEltcGxlbWVudCBlYWNoIG9mIHRoZXNlIGluIHRoZWlyIG93biBoZWFkZXIgZmlsZSwgYW5kIGF1
dG9nZW5lcmF0ZSAqLmx1dC5oIGZpbGVzIGZvciAqUHJvdG90eXBlVGFibGUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKLSNkZWZpbmUgREVGSU5FX1dBU01f
T0JKRUNUX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUsIGZ1bmN0aW9uTGVuZ3RoKSBcCi0gICAg
Y2xhc3MgSlNXZWJBc3NlbWJseSAjIyBOQU1FIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IEJhc2U7IFwKLSAgICAgICAgXAotICAgICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSAjIyBOQU1F
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAg
ICAgICAgICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vi
QXNzZW1ibHkgIyMgTkFNRT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkgIyMgTkFNRSh2bSwgc3Ry
dWN0dXJlKTsgXAotICAgICAgICAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKLSAg
ICAgICAgICAgIHJldHVybiBmb3JtYXQ7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCi0gICAgICAgIH0gXAot
ICAgICAgICBcCi0gICAgICAgIERFQ0xBUkVfSU5GTzsgXAotICAgICAgICBcCi0gICAgcHJvdGVj
dGVkOiBcCi0gICAgICAgIEpTV2ViQXNzZW1ibHkgIyMgTkFNRShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKSBcCi0gICAgICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpIFwKLSAgICAgICAgeyBcCi0gICAgICAgIH0gXAotICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsgXAotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOyBcCi0g
ICAgICAgIH0gXAotICAgIH07IFwKLSAgICBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseSAj
IyBOQU1FOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS4iICNOQU1FLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHkgIyMgTkFNRSkgfTsgXAotICAgIFwK
LSAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7IFwKLSAgICBwdWJsaWM6IFwKLSAgICAgICAgdHlwZWRlZiBKU0Rl
c3RydWN0aWJsZU9iamVjdCBCYXNlOyBcCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlU
YWJsZTsgXAotICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBXZWJBc3NlbWJseSAjIyBOQU1FICMj
IFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlPih2
bS5oZWFwKSkgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
IFwKLSAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOyBcCi0gICAgICAgICAg
ICByZXR1cm4gb2JqZWN0OyBcCi0gICAgICAgIH0gXAotICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9IFwKLSAgICAgICAg
XAotICAgICAgICBERUNMQVJFX0lORk87IFwKLSAgICAgICAgXAotICAgIHByb3RlY3RlZDogXAot
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkgXAotICAgICAgICB7IFwKLSAgICAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsgXAotICAgICAgICB9IFwKLSAgICAgICAg
XAotICAgIHByaXZhdGU6IFwKLSAgICAgICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICAgICAgOiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKSBcCi0gICAgICAgIHsgXAotICAgICAgICB9IFwK
LSAgICB9OyBcCi0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IE5BTUUg
IyMgUHJvdG90eXBlVGFibGVJbmRleFtdID0geyB7IDAsIDAgfSB9OyBcCi0gICAgc3RhdGljIGNv
bnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PSB7IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgUHJvdG90eXBlVGFibGUgPSB7IDAsIDAsIHRy
dWUsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVWYWx1ZXMsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVJ
bmRleCB9OyBcCi0gICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS4iICNOQU1FICIucHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgJk5BTUUgIyMgUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUpIH07IFwKLSAgICBcCi0gICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseSAjIyBO
QU1FKEV4ZWNTdGF0ZSogc3RhdGUpIFwKLSAgICB7IFwKLSAgICAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7IFwKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBc
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNj
b3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0
IHlldCBpbXBsZW1lbnQgdGhlICIgI05BTUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBc
Ci0gICAgfSBcCi0gICAgXAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxKU1dlYkFzc2VtYmx5ICMjIE5BTUUoRXhlY1N0YXRlKiBzdGF0ZSkgXAotICAgIHsgXAot
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOyBcCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOyBcCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2Vt
Ymx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgIiAjTkFNRSAiIGNvbnN0cnVjdG9yIHByb3Bl
cnR5IikpKSk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFN
RSAjIyBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsgXAotICAgIHB1Ymxp
YzogXAotICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsgXAotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7IFwKLSAgICAgICAgXAotICAgICAgICBzdGF0aWMg
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBOQU1FICMj
IFByb3RvdHlwZSwgU3RydWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSkgXAotICAgICAgICB7IFwK
LSAgICAgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7IFwKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgTkFNRSAjIyBQcm90b3R5cGUsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOyBcCi0gICAgICAgIH0gXAotICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9IFwKLSAg
ICAgICAgXAotICAgICAgICBERUNMQVJFX0lORk87IFwKLSAgICAgICAgXAotICAgICAgICBTdHJ1
Y3R1cmUqIE5BTUUgIyMgU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTkFNRSAjIyBT
dHJ1Y3R1cmUuZ2V0KCk7IH0gXAotICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiBcCi0gICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3Rv
dHlwZSogTkFNRSAjIyBQcm90b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUpIFwK
LSAgICAgICAgeyBcCi0gICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlM
aXRlcmFsKCNOQU1FKSk7IFwKLSAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIE5BTUUgIyMgUHJvdG90eXBlLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7IFwKLSAgICAgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGZ1
bmN0aW9uTGVuZ3RoKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOyBcCi0gICAg
ICAgICAgICBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE5BTUUgIyMgU3Ry
dWN0dXJlKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgIHByaXZhdGU6IFwKLSAgICAg
ICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKSBcCi0gICAgICAgICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVy
ZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseSAjIyBOQU1FOyBcCi0gICAgICAgICAgICByZXR1
cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsgXAotICAgICAgICB9IFwKLSAgICAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkgXAotICAgICAg
ICB7IFwKLSAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFz
c2VtYmx5ICMjIE5BTUU7IFwKLSAgICAgICAgICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsgXAot
ICAgICAgICB9IFwKLSAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9y
Kj4oY2VsbCk7IFwKLSAgICAgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsgXAotICAgICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsgXAotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fICMjIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZTsgXAot
ICAgIH07IFwKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggTkFNRSAj
IyBDb25zdHJ1Y3RvclRhYmxlSW5kZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAotICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVz
W10gPSB7IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAgIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSA9IHsgMCwg
MCwgdHJ1ZSwgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBOQU1FICMjIENvbnN0cnVj
dG9yVGFibGVJbmRleCB9OyBcCi0gICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5B
TUUgIyMgQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
Jk5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJs
eSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKSB9OwotCi1GT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9S
X1BST1BFUlRZKERFRklORV9XQVNNX09CSkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWSkKLQotCiAj
ZGVmaW5lIERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04oTkFNRSwgLi4uKSBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5jICMjIE5BTUUoRXhlY1N0YXRlKik7CiBG
T1JfRUFDSF9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJ
T04pCiAKLQogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5T2JqZWN0OjpzX2luZm8gPSB7ICJX
ZWJBc3NlbWJseSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlPYmplY3QpIH07CiAKIFdlYkFzc2VtYmx5T2JqZWN0KiBXZWJBc3NlbWJseU9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkBAIC0yMzcsOSArOTQsNiBAQCBXZWJBc3NlbWJseU9iamVjdDo6V2ViQXNzZW1i
bHlPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0gICAgCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVu
Y3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2FzbU9iamVjdEZ1bmN2YWxpZGF0ZShFeGVjU3RhdGUqIHN0YXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmgKaW5kZXgg
NTU5NjM0MS4uN2I1MmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2ViQXNzZW1ibHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJB
c3NlbWJseU9iamVjdC5oCkBAIC00NSw0ICs0NSwxOCBAQCBwcml2YXRlOgogICAgIFdlYkFzc2Vt
Ymx5T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0
aAorI2RlZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAg
RE8oTW9kdWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEp
IFwKKyAgICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERP
KFJ1bnRpbWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9S
X0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBc
CisgICAgRE8oY29tcGlsZSwgMSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZmNmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIEpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1i
bHlDb21waWxlRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBm
b3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
cjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvcio+KGNlbGwpLT5KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjp+SlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcigpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisg
ICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3Ii
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViODZkY2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3Rh
dGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44MTBlZjAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJBc3NlbWJseUluc3RhbmNlKiBK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9y
bWF0OworfQorCitTdHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQor
Cit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihjZWxsKS0+SlNX
ZWJBc3NlbWJseUluc3RhbmNlOjp+SlNXZWJBc3NlbWJseUluc3RhbmNlKCk7Cit9CisKK3ZvaWQg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDog
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENs
YXNzSW5mbyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lklu
c3RhbmNlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTRiZjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJs
eUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NjRhOTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlNZW1vcnkuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0pTV2ViQXNzZW1ibHlNZW1vcnkqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNZW1vcnk+KHZtLmhlYXApKSBKU1dlYkFz
c2VtYmx5TWVtb3J5KHZtLCBzdHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJseU1l
bW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5TWVtb3J5OjpKU1dlYkFzc2VtYmx5
TWVtb3J5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1lbW9yeTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1lbW9yeTo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KGNl
bGwpLT5KU1dlYkFzc2VtYmx5TWVtb3J5Ojp+SlNXZWJBc3NlbWJseU1lbW9yeSgpOworfQorCit2
b2lkIEpTV2ViQXNzZW1ibHlNZW1vcnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2Vi
QXNzZW1ibHlNZW1vcnkqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDog
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENs
YXNzSW5mbyBKU1dlYkFzc2VtYmx5TWVtb3J5OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5NZW1v
cnkiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlN
ZW1vcnkpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE5NjVhOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeSA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNZW1vcnkqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MzkxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlN
b2R1bGUqIEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTV2ViQXNzZW1ibHlNb2R1bGU+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TW9kdWxlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBm
b3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitKU1dlYkFzc2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3Zv
aWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9
CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5
TW9kdWxlOjp+SlNXZWJBc3NlbWJseU1vZHVsZSgpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlN
b2R1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
Ly8gRklYTUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlNb2R1bGUpIH07CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3
MjMyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAg
ICBKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU3M2Q1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIK
KworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I+KHZtLmhlYXApKSBK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisK
K3ZvaWQgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7
CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcio+KGNlbGwpLT5KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yOjp+SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcigpOworfQor
Cit2b2lkIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgLy8gRklYTUUgSlMgb2JqZWN0cyB2aXNp
dGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fU29tZU9iamVjdCk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpzX2luZm8g
PSB7ICJXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpIH07CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQxYjU5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiwg
U3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDQzMzQyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApA
QCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5o
IgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJB
c3NlbWJseVRhYmxlKiBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTV2ViQXNzZW1ibHlUYWJsZT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHlUYWJsZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitKU1dlYkFzc2VtYmx5VGFibGU6OkpTV2ViQXNzZW1ibHlUYWJsZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2
b2lkIEpTV2ViQXNzZW1ibHlUYWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9
CisKK3ZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPihjZWxsKS0+SlNXZWJBc3NlbWJseVRh
YmxlOjp+SlNXZWJBc3NlbWJseVRhYmxlKCk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseVRhYmxl
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgLy8gRklY
TUUgSlMgb2JqZWN0cyB2aXNpdGVkIGhlcmUgd2l0aDogdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fU29tZU9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5VGFi
bGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlRhYmxlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5VGFibGUpIH07CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
VGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzk5ZjllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eVRhYmxlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVP
YmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNXZWJBc3NlbWJseVRhYmxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgSlNXZWJBc3NlbWJseVRhYmxlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJs
eVRhYmxlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmUyYmVhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5j
dGlvbnMgZ28gaGVyZS4KKworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Is
IENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcikg
fTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1
dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgorIEBl
bmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3Bl
LCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHll
dCBpbXBsZW1lbnQgdGhlIENvbXBpbGVFcnJvciBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rp
b25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIikpOwor
fQorCitXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUsIFN0cnVjdHVy
ZSogdGhpc1N0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0
cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkNv
bXBpbGVFcnJvciIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnRE
ZWxldGUpOworICAgIG1fQ29tcGlsZUVycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgc3RydWN0
dXJlKTsKK30KKworV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCitDb25zdHJ1Y3RUeXBlIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
K3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKK3ZvaWQgV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX0NvbXBpbGVFcnJvclN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdhNTI0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAg
ICBzdGF0aWMgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKiwgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBD
b21waWxlRXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX0NvbXBpbGVFcnJvclN0cnVj
dHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZh
dGU6CisgICAgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fQ29tcGlsZUVycm9y
U3RydWN0dXJlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkOWM1
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgiCisKKyNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUuCisKK30K
KworI2luY2x1ZGUgIldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Db21waWxlRXJyb3IucHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Is
IENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUpIH07
CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmgK
KyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgorIEBlbmQKKyAq
LworCitXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMzljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmUyMTViODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4K
KworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3Ry
dWN0b3JUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNz
ZW1ibHlJbnN0YW5jZQorIEBlbmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBzdGF0ZSkK
K3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2Vt
Ymx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgSW5zdGFuY2UgY29uc3RydWN0b3IgcHJvcGVy
dHkiKSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7
Cit9CisKK1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJlKiB0aGlzU3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkluc3RhbmNlIikpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFk
T25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9JbnN0YW5jZVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvcjo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5
cGUgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQor
eworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCit2b2lkIFdlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fSW5zdGFuY2VT
dHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YmQ4YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVy
bmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1i
bHlJbnN0YW5jZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGlj
OgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUq
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
U3RydWN0dXJlKiBJbnN0YW5jZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fSW5zdGFuY2VT
dHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZh
dGU6CisgICAgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9JbnN0YW5jZVN0cnVjdHVy
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTM3MjlmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBG
SVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1i
bHkuSW5zdGFuY2UucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2Vi
QXNzZW1ibHlJbnN0YW5jZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseUluc3RhbmNlCisgQGVu
ZAorICovCisKK1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIFdlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6V2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2I0YWM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2YxYTJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisgICAgLy8gRklYTUUgbHV0IGZ1bmN0aW9ucyBnbyBoZXJlLgorCit9
CisKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFi
bGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IubHV0LmgKKyBAYmVnaW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TWVtb3J5Cisg
QGVuZAorICovCisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGlt
cGxlbWVudCB0aGUgTWVtb3J5IGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7Cit9CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEV4
ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsICJXZWJBc3NlbWJseS5NZW1vcnkiKSk7Cit9CisKK1dlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogdGhpc1By
b3RvdHlwZSwgU3RydWN0dXJlKiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlLCB0
aGlzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSog
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IikpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9NZW1v
cnlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOworfQorCitXZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0Nv
bnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeTsKKyAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKK30KKworQ2FsbFR5cGUgV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRh
KQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5TWVt
b3J5OworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30KKwordm9pZCBXZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fTWVtb3J5U3RydWN0
dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUyNTM2NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOworCitjbGFzcyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
KworICAgIHN0YXRpYyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIE1lbW9yeVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fTWVtb3J5U3RydWN0dXJlLmdldCgpOyB9CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9NZW1vcnlTdHJ1Y3R1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40MWJmNGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCIKKworI2luY2x1ZGUg
IkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisj
aW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OnNfaW5m
byA9IHsgIldlYkFzc2VtYmx5Lk1lbW9yeS5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJv
dG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TWVtb3J5
CisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1v
cnlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKK30KKworV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OldlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzZjg1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVP
YmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA5
OTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAv
LyBGSVhNRSBsdXQgZnVuY3Rpb25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TW9kdWxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IpIH07CisKKy8q
IFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdpbiBj
b25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlNb2R1bGUKKyBAZW5kCisgKi8KKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShF
eGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSBNb2R1bGUgY29u
c3RydWN0b3IgcHJvcGVydHkiKSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIldlYkFzc2VtYmx5
Lk1vZHVsZSIpKTsKK30KKworV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3RvciogV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIHRo
aXNTdHJ1Y3R1cmUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+
ZmluaXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUsIHRoaXNTdHJ1Y3R1cmUpOworICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogcHJv
dG90eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBtX01vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIHN0cnVjdHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OldlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworQ29uc3RydWN0VHlwZSBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
OjpIb3N0OworfQorCitDYWxsVHlwZSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGU7CisgICAgcmV0dXJuIENhbGxU
eXBlOjpIb3N0OworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9Nb2R1bGVTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zYWE0YWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGU7CisKK2NsYXNzIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9Nb2R1bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSosIFN0cnVjdHVyZSop
OworCitwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX01vZHVsZVN0
cnVjdHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWIxNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3Nl
bWJseU1vZHVsZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisgICAgLy8gRklY
TUUgbHV0IGZ1bmN0aW9ucyBnbyBoZXJlLgorCit9CisKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9k
dWxlLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
TW9kdWxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKSB9
OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oCisgQGJl
Z2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlNb2R1bGUKKyBAZW5kCisgKi8KKworV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVj
dDsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44YTcxM2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMmEwOTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMgZ28gaGVyZS4KKworfQorCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxl
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcgorIEBlbmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIFJ1bnRpbWVFcnJvciBjb25z
dHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yIikpOworfQorCitXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUq
IHRoaXNQcm90b3R5cGUsIFN0cnVjdHVyZSogdGhpc1N0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBw
cm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlJ1bnRpbWVFcnJvciIpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fUnVudGltZUVycm9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKK30KKworV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQor
CitDb25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAg
ICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0NhbGxU
eXBlIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhv
c3Q7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcio+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1J1bnRpbWVFcnJvclN0cnVjdHVyZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzkxYzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgU3RydWN0dXJlKiBSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX1J1bnRpbWVFcnJvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
KiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fUnVudGltZUVycm9yU3RydWN0dXJlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGM5Mzc1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQg
ZnVuY3Rpb25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJs
eS5SdW50aW1lRXJyb3IucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxl
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcgorIEBlbmQKKyAqLworCitXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZSogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90
b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9
CisKK1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3Mjlm
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAg
IHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2
YXRlOgorICAgIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDBlOGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIC8vIEZJWE1FIGx1dCBmdW5jdGlvbnMg
Z28gaGVyZS4KKworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29u
c3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlU
YWJsZQorIEBlbmQKKyAqLworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3Qg
eWV0IGltcGxlbWVudCB0aGUgVGFibGUgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlUYWJs
ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUiKSk7Cit9CisKK1dlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3RvciogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogdGhpc1By
b3RvdHlwZSwgU3RydWN0dXJlKiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhp
c1N0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIikpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9UYWJsZVN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvcjo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5
cGUgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGU7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5VGFibGU7CisgICAgcmV0
dXJuIENhbGxUeXBlOjpIb3N0OworfQorCit2b2lkIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9y
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVGFibGVTdHJ1Y3R1cmUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODk0YjUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgU3RydWN0dXJlKiBUYWJsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fVGFibGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisK
K3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9UYWJsZVN0cnVjdHVy
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWZkNzk3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICAvLyBGSVhNRSBsdXQgZnVu
Y3Rpb25zIGdvIGhlcmUuCisKK30KKworI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2Ug
Zm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFi
bGVXZWJBc3NlbWJseVRhYmxlCisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZT4odm0uaGVhcCkp
IFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBX
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6V2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNlMDAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKLS0gCjIu
MTAuMQoK
</data>
<flag name="review"
          id="315167"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292112</attachid>
            <date>2016-10-19 14:37:43 -0700</date>
            <delta_ts>2016-10-19 15:13:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-JavaScript-WebAssembly-API-baby-steps.patch</filename>
            <type>text/plain</type>
            <size>209167</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxM2U3MzhiNmI2ZGI5NDc1MzljNzgxYzU2MzgzY2U4YTA5Y2Y3YmUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IE9jdCAyMDE2IDE2OjI1OjUwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gSmF2YVNj
cmlwdCBXZWJBc3NlbWJseSBBUEk6IGJhYnkgc3RlcHMKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVu
dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6IDhiaXQKCiAqIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBv
d24gZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKICAgYm9pbGVycGxhdGUsIGFzIHdlbGwg
YXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFsbCBvZiB0aGUKICAgSlNXZWJBc3NlbWJseSou
e2gsY3BwfSwgYXMgd2VsbCBhcyBDb25zdHJ1Y3RvciBhbmQgUHJvdG90eXBlIGZpbGVzLCBhcmUK
ICAgY3VycmVudGx5IHRoZSBzYW1lIGJldHdlZW4gdGhlIDQgc3BlY2lmaWVkIFdlYkFzc2VtYmx5
IGNvbnN0cnVjdG9ycy4gSXQnbGwgYmUKICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBm
dW5jdGlvbnMgb24gY29uc3RydWN0ZWQgb2JqZWN0cyBhcyBwZXIgdGhlCiAgIHNwZWMsIGFuZCBo
YXZlIGVhY2ggb2YgdGhlc2UgZmlsZXMgZGl2ZXJnZS4gVGhlIGVycm9yIGNvbnN0cnVjdG9ycyBh
cmUgYWxzbwogICBzaW1pbGFyLCBleGNlcHQgdGhhdCB0aGVpciBpbnN0YW5jZSBkZXJpdmVzIGZy
b20gRXJyb3JJbnN0YW5jZS4KICogVXNlIGNvbnN0cnVjdG9yIG1hY3JvIHdoZW4gaW5pdGlhbGl6
aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgogKiBEcmFtYXRpY2FsbHkgaW1wcm92ZSB0ZXN0aW5nIG9m
IHRoZSBXZWJBc3NlbWJseSBBUEkgYnkgY2hlY2tpbmcgZm9yCiAgIHByb3BlcnRpZXMgc3BlY2lm
aWVkIGluIHRoZSBzcGVjIOKAoC4KICogQ2xlYW4gdXAgYXNzZXJ0LmpzJyBleGNlcHRpb24gdGVz
dGluZy4KICogRml4IGEgY29weS1wYXN0ZSBidWcgaW4gd2FzbS5qc29uOiBmbG9hdGluZy1wb2lu
dCBjb25zdCByZXR1cm4gdmFsdWVzIHdlcmUKICAgc3dhcHBlZC4KCuKAoCBodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCi0tLQogSlNUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKysrKysKIEpT
VGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsr
LS0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMgICAgICAgICAgICAgIHwg
IDg2ICsrKysrLS0tLQogSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpz
ICAgICAgICAgfCAgMTYgKy0KIC4uLi93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5
X3ZhcmludC5qcyAgIHwgICA0ICstCiAuLi4vd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJp
bmFyeV92YXJ1aW50LmpzICB8ICAgNCArLQogSlNUZXN0cy93YXNtL3V0aWxpdGllcy5qcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIEpTVGVzdHMvd2FzbS93YXNtLmpzb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICB8ICAzMiArKysrCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE4OSArKysrKysrKysrKysrKysr
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSAgICAgICAgICB8
ICAxOSArLQogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgICB8ICAgOSArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwICAgfCAxODIgKystLS0tLS0tLS0tLS0tLS0tLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgMTQg
KysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwICAgICAgICAgIHwg
IDQ4ICsrKysrCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggICAgICAg
ICAgICB8ICA0NCArKysrKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCAg
ICAgICAgICAgICAgfCAgNzEgKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIHwgIDQ5ICsrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCB8ICA3MSArKysrKysrKwogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oICAgfCAgNDkgKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIHwgIDcxICsrKysr
KysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggICB8
ICA0OSArKysrKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgICAg
ICAgICAgfCAgNDggKysrKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iu
aCAgICAgICAgICAgIHwgIDQ0ICsrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuY3BwICB8ICA3MSArKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggfCAgNDkgKysrKysKIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwIHwgMTAzICsrKysrKysrKysrCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggICB8ICA1OSAr
KysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcCAg
IHwgIDY1ICsrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlLmggICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmNwcCAgICAgfCAxMDMgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICAgICAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgICAgICAgfCAgNjUgKysrKysrKwogLi4u
L3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICAgICAgICAgfCAgNTAgKysr
KysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcCAgICAgICB8
IDEwMyArKysrKysrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5oICAgICAgICAgfCAgNTkgKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5jcHAgICAgICAgICB8ICA2NSArKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5oICAgICAgICAgICB8ICA1MCArKysrKysKIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICAgICAgIHwgMTAzICsrKysrKysrKysrCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmggICAgICAgICB8ICA1OSAr
KysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCAgICAgICAg
IHwgIDY1ICsrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgg
ICAgICAgICAgIHwgIDUwICsrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgfCAxMDMgKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAgIHwgIDU5ICsrKysrKwogLi4uL3dhc20vanMv
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwICAgfCAgNjUgKysrKysrKwogLi4u
L3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCAgICAgfCAgNTAgKysr
KysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwICAgICAgICB8
IDEwMyArKysrKysrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9y
LmggICAgICAgICAgfCAgNTkgKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcCAgICAgICAgICB8ICA2NSArKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlLmggICAgICAgICAgICB8ICA1MCArKysrKysKIDUxIGZpbGVzIGNoYW5n
ZWQsIDI5MjYgaW5zZXJ0aW9ucygrKSwgMjQ1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNb2R1bGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseVRhYmxlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3Rv
dHlwZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTdhNzMyOC4uZjdiZTczYiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NiBAQAorMjAxNi0xMC0xOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSmF2YVNjcmlwdCBXZWJBc3NlbWJseSBBUEk6IGJhYnkgc3RlcHMKKworICAgICAg
ICAgLSBFeHBhbmQgV2ViQXNzZW1ibHkgY29uc3RydWN0b3JzIGludG8gdGhlaXIgb3duIGZpbGVz
LiBUaGlzIHJlcXVpcmVzIGEgbG90IG9mCisgICAgICAgICAgIGJvaWxlcnBsYXRlLCBhcyB3ZWxs
IGFzIGFkZGluZyB0aGUgLmx1dC5oIGZpbGVzLiBBbGwgb2YgdGhlCisgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHkqLntoLGNwcH0sIGFzIHdlbGwgYXMgQ29uc3RydWN0b3IgYW5kIFByb3RvdHlwZSBm
aWxlcywgYXJlCisgICAgICAgICAgIGN1cnJlbnRseSB0aGUgc2FtZSBiZXR3ZWVuIHRoZSA0IHNw
ZWNpZmllZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvcnMuIEl0J2xsIGJlCisgICAgICAgICAgIGVh
c3kgdG8gaW1wbGVtZW50IGluZGl2aWR1YWwgZnVuY3Rpb25zIG9uIGNvbnN0cnVjdGVkIG9iamVj
dHMgYXMgcGVyIHRoZQorICAgICAgICAgICBzcGVjLCBhbmQgaGF2ZSBlYWNoIG9mIHRoZXNlIGZp
bGVzIGRpdmVyZ2UuIFRoZSBlcnJvciBjb25zdHJ1Y3RvcnMgYXJlIGFsc28KKyAgICAgICAgICAg
c2ltaWxhciwgZXhjZXB0IHRoYXQgdGhlaXIgaW5zdGFuY2UgZGVyaXZlcyBmcm9tIEVycm9ySW5z
dGFuY2UuCisgICAgICAgICAtIFVzZSBjb25zdHJ1Y3RvciBtYWNybyB3aGVuIGluaXRpYWxpemlu
ZyB0aGUgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgIC0gRHJhbWF0aWNhbGx5IGltcHJvdmUgdGVz
dGluZyBvZiB0aGUgV2ViQXNzZW1ibHkgQVBJIGJ5IGNoZWNraW5nIGZvcgorICAgICAgICAgICBw
cm9wZXJ0aWVzIHNwZWNpZmllZCBpbiB0aGUgc3BlYyBbKl0uCisgICAgICAgICAtIENsZWFuIHVw
IGFzc2VydC5qcycgZXhjZXB0aW9uIHRlc3RpbmcuCisgICAgICAgICAtIEZpeCBhIGNvcHktcGFz
dGUgYnVnIGluIHdhc20uanNvbjogZmxvYXRpbmctcG9pbnQgY29uc3QgcmV0dXJuIHZhbHVlcyB3
ZXJlCisgICAgICAgICAgIHN3YXBwZWQuCisKKyAgICAgICAgWypdIGh0dHBzOi8vZ2l0aHViLmNv
bS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQKKworICAgICAgICBJbXBsZW1l
bnQgbW9yZSBvZiB0aGUgSmF2YVNjcmlwdCBXZWJBc3NlbWJseSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzU3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIHdhc20vYXNzZXJ0LmpzOgorICAgICAg
ICAoZXhwb3J0LmNvbnN0LmlzVW5kZWYpOiBhZGQgdGhpcyB1c2VmdWwgaGVscGVyCisgICAgICAg
IChleHBvcnQuY29uc3QudGhyb3dzKTogZm9sZCBvdGhlciB0aHJvdyBjaGVja3MgaW50byB0aGlz
IG9uZSwgYW5kIGNoZWNrIG1lc3NhZ2UgYXMgd2VsbAorICAgICAgICAqIHdhc20vanMtYXBpL3Rl
c3RfYmFzaWNfYXBpLmpzOgorICAgICAgICAoY29uc3QuY2hlY2tPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOiBjaGVjayBvd24gcHJvcGVydHkgZGVzY3JpcHRvciBmb2xsb3dzIHRoZSBzcGVjCisgICAg
ICAgICogd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qczoKKyAgICAgICAgKGNvbnN0
LmFzc2VydE9wVGhyb3dzKTogdXNlIG5ldyBhc3NlcnQgQVBJCisgICAgICAgIChDaGVja2VkT3Bj
b2RlQXJndW1lbnRzVG9vTWFueSk6IGRpdHRvCisgICAgICAgIChDaGVja2VkT3Bjb2RlQXJndW1l
bnRzTm90RW5vdWdoKTogZGl0dG8KKyAgICAgICAgKENhbGxJbnZhbGlkKTogZGl0dG8KKyAgICAg
ICAgKEkzMkNvbnN0SW52YWxpZCk6IGRpdHRvCisgICAgICAgIChGMzJDb25zdEludmFsaWQpOiBk
aXR0byAoYW5kIHRoaXMgY2F1Z3RoIHRoZSBKU09OIGNvcHktcGFzdGUgYnVnKQorICAgICAgICAo
RjY0Q29uc3RJbnZhbGlkKTogZGl0dG8KKyAgICAgICAgKiB3YXNtL3NlbGYtdGVzdC90ZXN0X0xv
d0xldmVsQmluYXJ5X3ZhcmludC5qczogdXNlIG5ldyBhc3NlcnQgQVBJCisgICAgICAgICogd2Fz
bS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50LmpzOiB1c2UgbmV3IGFzc2Vy
dCBBUEkKKyAgICAgICAgKiB3YXNtL3V0aWxpdGllcy5qczogYWRkICJnbG9iYWwiIG9iamVjdCwg
dXNlZCBpbiBiYXNpYyBBUEkgdGVzdCAodG8gYWNjZXNzIGdsb2JhbC5XZWJBc3NlbWJseSkuCisg
ICAgICAgICogd2FzbS93YXNtLmpzb246IGZpeCBjb3B5LXBhc3RlCisKIDIwMTYtMTAtMTggIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEludm9raW5nIE9iamVjdC5w
cm90b3R5cGUuX19wcm90b19fIGFjY2Vzc29ycyBkaXJlY3RseSBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3IuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNt
L2Fzc2VydC5qcwppbmRleCBhMTE0YjMzLi41YzcxY2M0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dh
c20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTI0LDEwICsyNCwx
NSBAQAogICovCiAKIGV4cG9ydCBjb25zdCBub3RVbmRlZiA9ICh2KSA9PiB7Ci0gICAgaWYgKHYg
PT09IHVuZGVmaW5lZCkKKyAgICBpZiAodHlwZW9mIHYgPT09ICJ1bmRlZmluZWQiKQogICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZG4ndCBiZSB1bmRlZmluZWQiKTsKIH07CiAKK2V4cG9y
dCBjb25zdCBpc1VuZGVmID0gKHYpID0+IHsKKyAgICBpZiAodHlwZW9mIHYgIT09ICJ1bmRlZmlu
ZWQiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBiZSB1bmRlZmluZWQiKTsKK307
CisKIGV4cG9ydCBjb25zdCBlcSA9IChsaHMsIHJocykgPT4gewogICAgIGlmIChsaHMgIT09IHJo
cykKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgdGhlIHNhbWU6ICIke2xoc30iIGFuZCAi
JHtyaHN9ImApOwpAQCAtNDAsMzAgKzQ1LDEzIEBAIGV4cG9ydCBjb25zdCBnZSA9IChsaHMsIHJo
cykgPT4gewogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkOiAiJHtsaHN9IiA8ICIk
e3Joc30iYCk7CiB9OwogCi1leHBvcnQgY29uc3QgdGhyb3dzRXJyb3IgPSAob3BGbiwgbWVzc2Fn
ZSwgLi4uYXJncykgPT4gewotICAgIGlmIChtZXNzYWdlKQotICAgICAgICBtZXNzYWdlID0gIiBm
b3IgIiArIG1lc3NhZ2U7Ci0KLSAgICB0cnkgewotICAgICAgICBvcEZuKC4uLmFyZ3MpOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbiBFcnJvciR7
bWVzc2FnZX0sIGdvdCAke2V9YCk7Ci0gICAgfQotICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgdG8gdGhyb3cgYW4gRXJyb3Ike21lc3NhZ2V9YCk7Ci19OwotCi1leHBvcnQgY29uc3QgdGhy
b3dzUmFuZ2VFcnJvciA9IChvcEZuLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7Ci0gICAgaWYgKG1l
c3NhZ2UpCi0gICAgICAgIG1lc3NhZ2UgPSAiIGZvciAiICsgbWVzc2FnZTsKLQorZXhwb3J0IGNv
bnN0IHRocm93cyA9IChmdW5jLCB0eXBlLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgdHJ5
IHsKLSAgICAgICAgb3BGbiguLi5hcmdzKTsKKyAgICAgICAgZnVuYyguLi5hcmdzKTsKICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikKKyAgICAg
ICAgaWYgKGUgaW5zdGFuY2VvZiB0eXBlICYmIGUubWVzc2FnZSA9PT0gbWVzc2FnZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIFJhbmdl
RXJyb3Ike21lc3NhZ2V9LCBnb3QgJHtlfWApOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkIHRvIHRocm93IGEgJHt0eXBlLm5hbWV9IHdpdGggbWVzc2FnZSAiJHttZXNzYWdlfSIs
IGdvdCAke2UubmFtZX0gd2l0aCBtZXNzYWdlICIke2UubWVzc2FnZX0iYCk7CiAgICAgfQotICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSBSYW5nZUVycm9yJHttZXNzYWdl
fWApOworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFt
ZX0gd2l0aCBtZXNzYWdlICIke21lc3NhZ2V9ImApOwogfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3Rf
YmFzaWNfYXBpLmpzCmluZGV4IDE5NTNjYjAuLmJiZDUwYjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90
ZXN0X2Jhc2ljX2FwaS5qcwpAQCAtMSwzNyArMSw1NSBAQAotaWYgKFdlYkFzc2VtYmx5ID09PSB1
bmRlZmluZWQpCi0gICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5
IGdsb2JhbCBvYmplY3QiKTsKLQotY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0
ZSIsICJjb21waWxlIl07Ci1jb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIs
ICJJbnN0YW5jZSIsICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07Ci0KLWZvciAo
Y29uc3QgZiBvZiBmdW5jdGlvblByb3BlcnRpZXMpCi0gICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09
PSB1bmRlZmluZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJB
c3NlbWJseSBmdW5jdGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKLQotZm9yIChjb25zdCBjIG9mIGNv
bnN0cnVjdG9yUHJvcGVydGllcykKLSAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNv
bnN0cnVjdG9yIHByb3BlcnR5ICIke2N9ImApOwotCi0vLyBGSVhNRSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBB
UElzIGZ1cnRoZXIuIEZvciBub3cgdGhleSBqdXN0IHRocm93LgotCi1mb3IgKGNvbnN0IGYgb2Yg
ZnVuY3Rpb25Qcm9wZXJ0aWVzKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgV2ViQXNzZW1ibHlbZl0o
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBX
ZWJBc3NlbWJseS4ke2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7Ci0gICAgfQot
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93
IGFuIEVycm9yYCk7CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2lt
cG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi91dGlsaXRpZXMuanMnOworCitjb25zdCBjaGVj
a093blByb3BlcnR5RGVzY3JpcHRvciA9IChvYmosIHByb3AsIGV4cGVjdCkgPT4geworICAgIGNv
bnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJv
cCk7CisgICAgYXNzZXJ0LmVxKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlLCBleHBlY3QudHlwZW9m
dmFsdWUpOworICAgIGFzc2VydC5lcShkZXNjcmlwdG9yLndyaXRhYmxlLCBleHBlY3Qud3JpdGFi
bGUpOworICAgIGFzc2VydC5lcShkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwgZXhwZWN0LmNvbmZp
Z3VyYWJsZSk7CisgICAgYXNzZXJ0LmVxKGRlc2NyaXB0b3IuZW51bWVyYWJsZSwgZXhwZWN0LmVu
dW1lcmFibGUpOworfTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0geworICAgICJ2YWxp
ZGF0ZSI6IHsgbGVuZ3RoOiAxIH0sCisgICAgImNvbXBpbGUiOiAgeyBsZW5ndGg6IDEgfSwKK307
Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSB7CisgICAgIk1vZHVsZSI6ICAgICAgIHsg
dHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRy
dWUsIGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEsIGlzRXJyb3I6IGZhbHNlIH0sCisgICAg
Ikluc3RhbmNlIjogICAgIHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVl
LCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEsIGlzRXJy
b3I6IGZhbHNlIH0sCisgICAgIk1lbW9yeSI6ICAgICAgIHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlv
biIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNl
LCBsZW5ndGg6IDEsIGlzRXJyb3I6IGZhbHNlIH0sCisgICAgIlRhYmxlIjogICAgICAgIHsgdHlw
ZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUs
IGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEsIGlzRXJyb3I6IGZhbHNlIH0sCisgICAgIkNv
bXBpbGVFcnJvciI6IHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRhYmxlOiB0cnVlLCBj
b25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6IDEsIGlzRXJyb3I6
IHRydWUgIH0sCisgICAgIlJ1bnRpbWVFcnJvciI6IHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIs
IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBs
ZW5ndGg6IDEsIGlzRXJyb3I6IHRydWUgIH0sCit9OworCisKK2Fzc2VydC5ub3RVbmRlZihXZWJB
c3NlbWJseSk7CitjaGVja093blByb3BlcnR5RGVzY3JpcHRvcih1dGlsaXRpZXMuZ2xvYmFsLCAi
V2ViQXNzZW1ibHkiLCB7IHR5cGVvZnZhbHVlOiAib2JqZWN0Iiwgd3JpdGFibGU6IHRydWUsIGNv
bmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UgfSk7Cithc3NlcnQuZXEoU3RyaW5n
KFdlYkFzc2VtYmx5KSwgIltvYmplY3QgV2ViQXNzZW1ibHldIik7Cithc3NlcnQuaXNVbmRlZihX
ZWJBc3NlbWJseS5sZW5ndGgpOworCitmb3IgKGNvbnN0IGYgaW4gZnVuY3Rpb25Qcm9wZXJ0aWVz
KSB7CisgICAgYXNzZXJ0Lm5vdFVuZGVmKFdlYkFzc2VtYmx5W2ZdKTsKKyAgICBhc3NlcnQuZXEo
V2ViQXNzZW1ibHlbZl0ubmFtZSwgZik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5W2ZdLmxl
bmd0aCwgZnVuY3Rpb25Qcm9wZXJ0aWVzW2ZdLmxlbmd0aCk7CiB9CiAKLWZvciAoY29uc3QgYyBv
ZiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKLSAgICB0cnkgewotICAgICAgICBsZXQgdiA9IG5l
dyBXZWJBc3NlbWJseVtjXSgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgaW5z
dGFuY2VvZiBFcnJvcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3Is
IGdvdCAke2V9YCk7Ci0gICAgfQotICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgbmV3IFdl
YkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmApOworZm9yIChjb25zdCBjIGluIGNv
bnN0cnVjdG9yUHJvcGVydGllcykgeworICAgIGFzc2VydC5ub3RVbmRlZihXZWJBc3NlbWJseVtj
XSk7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5W2NdLm5hbWUsIGMpOworICAgIGFzc2VydC5l
cShXZWJBc3NlbWJseVtjXS5sZW5ndGgsIGNvbnN0cnVjdG9yUHJvcGVydGllc1tjXS5sZW5ndGgp
OworICAgIGNoZWNrT3duUHJvcGVydHlEZXNjcmlwdG9yKFdlYkFzc2VtYmx5LCBjLCBjb25zdHJ1
Y3RvclByb3BlcnRpZXNbY10pOworICAgIC8vIENoZWNrIHRoZSBjb25zdHJ1Y3RvcidzIHByb3Rv
dHlwZS4KKyAgICBjaGVja093blByb3BlcnR5RGVzY3JpcHRvcihXZWJBc3NlbWJseVtjXSwgInBy
b3RvdHlwZSIsIHsgdHlwZW9mdmFsdWU6ICJvYmplY3QiLCB3cml0YWJsZTogZmFsc2UsIGNvbmZp
Z3VyYWJsZTogZmFsc2UsIGVudW1lcmFibGU6IGZhbHNlIH0pOworICAgIGFzc2VydC5lcShTdHJp
bmcoV2ViQXNzZW1ibHlbY10ucHJvdG90eXBlKSwgYFtvYmplY3QgV2ViQXNzZW1ibHkuJHtjfS5w
cm90b3R5cGVdYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseVtjXSgpLCBU
eXBlRXJyb3IsIGBjYWxsaW5nIFdlYkFzc2VtYmx5LiR7Y30gY29uc3RydWN0b3Igd2l0aG91dCBu
ZXcgaXMgaW52YWxpZGApOwogfQorCisvLyBGSVhNRSBJbXBsZW1lbnQgYW5kIHRlc3QgdGhlc2Ug
QVBJcyBmdXJ0aGVyLiBGb3Igbm93IHRoZXkganVzdCB0aHJvdy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTc3NQorCitmb3IgKGNvbnN0IGYgaW4gZnVuY3Rpb25Q
cm9wZXJ0aWVzKSB7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseVtmXSgpLCBF
cnJvciwgYFdlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgJHtmfSBmdW5jdGlv
biBwcm9wZXJ0eWApOworfQorCitmb3IgKGNvbnN0IGMgaW4gY29uc3RydWN0b3JQcm9wZXJ0aWVz
KQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5W2NdKCksIEVycm9yLCBg
V2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSAke2N9IGNvbnN0cnVjdG9yIHBy
b3BlcnR5YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRl
ckpTT04uanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMKaW5k
ZXggYWM5YjgxZi4uMDkzNDIzMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90
ZXN0X0J1aWxkZXJKU09OLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWls
ZGVySlNPTi5qcwpAQCAtMSw5ICsxLDkgQEAKIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9h
c3NlcnQuanMnOwogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAKLWNvbnN0
IGFzc2VydE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4geworY29uc3QgYXNzZXJ0
T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSkgPT4gewogICAgIGxldCBmID0gKG5ldyBCdWlsZGVy
KCkpLkNvZGUoKS5GdW5jdGlvbigpOwotICAgIGFzc2VydC50aHJvd3NFcnJvcihvcEZuLCBtZXNz
YWdlLCBmKTsKKyAgICBhc3NlcnQudGhyb3dzKG9wRm4sIEVycm9yLCBtZXNzYWdlLCBmKTsKIH07
CiAKIChmdW5jdGlvbiBFbXB0eU1vZHVsZSgpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBjb25zdCBh
c3NlcnRPcFRocm93cyA9IChvcEZuLCBtZXNzYWdlID0gIiIpID0+IHsKIH0pKCk7CiAKIChmdW5j
dGlvbiBDaGVja2VkT3Bjb2RlQXJndW1lbnRzVG9vTWFueSgpIHsKLSAgICBhc3NlcnRPcFRocm93
cyhmID0+IGYuTm9wKCJ1aC1vaCEiKSk7CisgICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLk5vcCgi
dWgtb2ghIiksIGAibm9wIiBleHBlY3RzIDAgaW1tZWRpYXRlcywgZ290IDFgKTsKIH0pKCk7CiAK
IChmdW5jdGlvbiBVbmNoZWNrZWRPcGNvZGVBcmd1bWVudHNUb29NYW55KCkgewpAQCAtMjAxLDcg
KzIwMSw3IEBAIGNvbnN0IGFzc2VydE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4g
ewogfSkoKTsKIAogKGZ1bmN0aW9uIENoZWNrZWRPcGNvZGVBcmd1bWVudHNOb3RFbm91Z2goKSB7
Ci0gICAgYXNzZXJ0T3BUaHJvd3MoZiA9PiBmLkkzMkNvbnN0KCkpOworICAgIGFzc2VydE9wVGhy
b3dzKGYgPT4gZi5JMzJDb25zdCgpLCBgImkzMi5jb25zdCIgZXhwZWN0cyAxIGltbWVkaWF0ZXMs
IGdvdCAwYCk7CiB9KSgpOwogCiAoZnVuY3Rpb24gVW5jaGVja2VkT3Bjb2RlQXJndW1lbnRzTm90
RW5vdWdoKCkgewpAQCAtMjIxLDcgKzIyMSw3IEBAIGNvbnN0IGFzc2VydE9wVGhyb3dzID0gKG9w
Rm4sIG1lc3NhZ2UgPSAiIikgPT4gewogCiAoZnVuY3Rpb24gQ2FsbEludmFsaWQoKSB7CiAgICAg
Zm9yIChsZXQgYyBvZiBbLTEsIDB4MTAwMDAwMDAwLCAiMCIsIHt9LCBJbmZpbml0eSwgLUluZmlu
aXR5LCBOYU4sIC1OYU4sIG51bGxdKQotICAgICAgICBhc3NlcnRPcFRocm93cyhmID0+IGYuQ2Fs
bChjKSwgYyk7CisgICAgICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5DYWxsKGMpLCBgSW52YWxp
ZCB2YWx1ZSBvbiBjYWxsOiBnb3QgIiR7Y30iLCBleHBlY3RlZCBpMzJgKTsKIH0pKCk7CiAKIChm
dW5jdGlvbiBJMzJDb25zdFZhbGlkKCkgewpAQCAtMjM3LDcgKzIzNyw3IEBAIGNvbnN0IGFzc2Vy
dE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4gewogCiAoZnVuY3Rpb24gSTMyQ29u
c3RJbnZhbGlkKCkgewogICAgIGZvciAobGV0IGMgb2YgWy0xLCAweDEwMDAwMDAwMCwgMC4xLCAt
MC4xLCAiMCIsIHt9LCBJbmZpbml0eSwgbnVsbF0pCi0gICAgICAgIGFzc2VydE9wVGhyb3dzKGYg
PT4gZi5JMzJDb25zdChjKSwgYyk7CisgICAgICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5JMzJD
b25zdChjKSwgYEludmFsaWQgdmFsdWUgb24gaTMyLmNvbnN0OiBnb3QgIiR7Y30iLCBleHBlY3Rl
ZCBpMzJgKTsKIH0pKCk7CiAKIC8vIEZJWE1FOiB0ZXN0IGk2NC4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMApAQCAtMjU1LDcgKzI1NSw3IEBAIGNvbnN0IGFz
c2VydE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4gewogCiAoZnVuY3Rpb24gRjMy
Q29uc3RJbnZhbGlkKCkgewogICAgIGZvciAobGV0IGMgb2YgWyIwIiwge30sIEluZmluaXR5LCAt
SW5maW5pdHksIE5hTiwgLU5hTiwgbnVsbF0pCi0gICAgICAgIGFzc2VydE9wVGhyb3dzKGYgPT4g
Zi5GMzJDb25zdChjKSwgYyk7CisgICAgICAgIGFzc2VydE9wVGhyb3dzKGYgPT4gZi5GMzJDb25z
dChjKSwgYEludmFsaWQgdmFsdWUgb24gZjMyLmNvbnN0OiBnb3QgIiR7Y30iLCBleHBlY3RlZCBm
MzJgKTsKIH0pKCk7CiAKIChmdW5jdGlvbiBGNjRDb25zdFZhbGlkKCkgewpAQCAtMjcxLDcgKzI3
MSw3IEBAIGNvbnN0IGFzc2VydE9wVGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UgPSAiIikgPT4gewog
CiAoZnVuY3Rpb24gRjY0Q29uc3RJbnZhbGlkKCkgewogICAgIGZvciAobGV0IGMgb2YgWyIwIiwg
e30sIEluZmluaXR5LCAtSW5maW5pdHksIE5hTiwgLU5hTiwgbnVsbF0pCi0gICAgICAgIGFzc2Vy
dE9wVGhyb3dzKGYgPT4gZi5GNjRDb25zdChjKSwgYyk7CisgICAgICAgIGFzc2VydE9wVGhyb3dz
KGYgPT4gZi5GNjRDb25zdChjKSwgYEludmFsaWQgdmFsdWUgb24gZjY0LmNvbnN0OiBnb3QgIiR7
Y30iLCBleHBlY3RlZCBmNjRgKTsKIH0pKCk7CiAKIChmdW5jdGlvbiBDYWxsT25lRnJvbVN0YWNr
KCkgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmlu
YXJ5X3ZhcmludC5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFy
eV92YXJpbnQuanMKaW5kZXggYjJjMmQ4MS4uN2RkYzhjZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcmludC5qcworKysgYi9KU1Rlc3Rz
L3dhc20vc2VsZi10ZXN0L3Rlc3RfTG93TGV2ZWxCaW5hcnlfdmFyaW50LmpzCkBAIC0yMCwxMSAr
MjAsMTEgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heCArIDE7ICsraSkgewog
ICAgIGxldCBiID0gbmV3IExvd0xldmVsQmluYXJ5KCk7CiAgICAgZm9yIChsZXQgaiA9IDA7IGog
PCBpOyArK2opCiAgICAgICAgIGIudWludDgoMHg4MCk7Ci0gICAgYXNzZXJ0LnRocm93c1Jhbmdl
RXJyb3IoKCkgPT4gYi5nZXRWYXJpbnQoMCkpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5n
ZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBbJHtpfSwgJHtpKzF9KSBpcyBvdXQgb2YgYnVmZmVy
IHJhbmdlIFswLCAke2l9KWApOwogfQogCiBsZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwog
Zm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFyQml0c01heDsgKytpKQogICAgIGIudWludDgoMHg4
MCk7CiBiLnVpbnQ4KDB4MDApOwotYXNzZXJ0LnRocm93c1JhbmdlRXJyb3IoKCkgPT4gYi5nZXRW
YXJpbnQoMCkpOworYXNzZXJ0LnRocm93cygoKSA9PiBiLmdldFZhcmludCgwKSwgUmFuZ2VFcnJv
ciwgYFNoaWZ0aW5nIHRvbyBtdWNoIGF0IDZgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9z
ZWxmLXRlc3QvdGVzdF9Mb3dMZXZlbEJpbmFyeV92YXJ1aW50LmpzIGIvSlNUZXN0cy93YXNtL3Nl
bGYtdGVzdC90ZXN0X0xvd0xldmVsQmluYXJ5X3ZhcnVpbnQuanMKaW5kZXggZThiOWNiYi4uYmU4
MmUxMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVsQmlu
YXJ5X3ZhcnVpbnQuanMKKysrIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0xvd0xldmVs
QmluYXJ5X3ZhcnVpbnQuanMKQEAgLTE5LDExICsxOSwxMSBAQCBmb3IgKGxldCBpID0gMDsgaSA8
IExMQi52YXJCaXRzTWF4ICsgMTsgKytpKSB7CiAgICAgbGV0IGIgPSBuZXcgTG93TGV2ZWxCaW5h
cnkoKTsKICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikKICAgICAgICAgYi51aW50OCgw
eDgwKTsKLSAgICBhc3NlcnQudGhyb3dzUmFuZ2VFcnJvcigoKSA9PiBiLmdldFZhcnVpbnQoMCkp
OworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5nZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBb
JHtpfSwgJHtpKzF9KSBpcyBvdXQgb2YgYnVmZmVyIHJhbmdlIFswLCAke2l9KWApOwogfQogCiBs
ZXQgYiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwogZm9yIChsZXQgaSA9IDA7IGkgPCBMTEIudmFy
Qml0c01heDsgKytpKQogICAgIGIudWludDgoMHg4MCk7CiBiLnVpbnQ4KDB4MDApOwotYXNzZXJ0
LnRocm93c1JhbmdlRXJyb3IoKCkgPT4gYi5nZXRWYXJ1aW50KDApKTsKK2Fzc2VydC50aHJvd3Mo
KCkgPT4gYi5nZXRWYXJpbnQoMCksIFJhbmdlRXJyb3IsIGBTaGlmdGluZyB0b28gbXVjaCBhdCA2
YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vdXRpbGl0aWVzLmpzIGIvSlNUZXN0cy93YXNt
L3V0aWxpdGllcy5qcwppbmRleCA3YzYzODY3Li42ZGFhN2JlIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vdXRpbGl0aWVzLmpzCisrKyBiL0pTVGVzdHMvd2FzbS91dGlsaXRpZXMuanMKQEAgLTMw
LDYgKzMwLDEzIEBAIGNvbnN0IF9lbnZpcm9ubWVudCA9CiAgICAgICAgIDogKHR5cGVvZiBpbXBv
cnRTY3JpcHRzID09PSAiZnVuY3Rpb24iID8gIndvcmtlciIKICAgICAgICAgICAgOiAic2hlbGwi
KSkpOwogCitsZXQgX2dsb2JhbCA9ICh0eXBlb2YgZ2xvYmFsICE9PSAnb2JqZWN0JyB8fCAhZ2xv
YmFsIHx8IGdsb2JhbC5NYXRoICE9PSBNYXRoIHx8IGdsb2JhbC5BcnJheSAhPT0gQXJyYXkpCisg
ICAgPyAoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgPyBzZWxmCisgICAgICAgOiAodHlw
ZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gd2luZG93CisgICAgICAgOiAodHlwZW9mIGds
b2JhbCAhPT0gJ3VuZGVmaW5lZCcpID8gZ2xvYmFsCisgICAgICAgOiBGdW5jdGlvbigncmV0dXJu
IHRoaXMnKSgpKQorICAgIDogZ2xvYmFsOworCiBjb25zdCBfZXZhbCA9IHggPT4gZXZhbC5jYWxs
KG51bGwsIHgpOwogCiBjb25zdCBfcmVhZCA9IGZpbGVuYW1lID0+IHsKQEAgLTYwLDQgKzY3LDQg
QEAgY29uc3QgX2pzb24gPSBmaWxlbmFtZSA9PiB7CiB9CiAKIC8vIFVzZSB1bmRlcnNjb3JlIG5h
bWVzIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggYnVpbHRpbiBuYW1lcy4KLWV4cG9ydCB7IF9ldmFs
IGFzIGV2YWwsIF9yZWFkIGFzIHJlYWQsIF9sb2FkIGFzIGxvYWQsIF9qc29uIGFzIGpzb24gfTsK
K2V4cG9ydCB7IF9ldmFsIGFzIGV2YWwsIF9yZWFkIGFzIHJlYWQsIF9sb2FkIGFzIGxvYWQsIF9q
c29uIGFzIGpzb24sIF9nbG9iYWwgYXMgZ2xvYmFsIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA1NWEwZWVlLi5hODIz
OWQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2Fz
bS93YXNtLmpzb24KQEAgLTU4LDggKzU4LDggQEAKICAgICAgICAgImVuZCI6ICAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjb250cm9sIiwgICAgInZhbHVlIjogIDE1LCAicmV0dXJuIjog
W10sICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiZW5kIGEgYmxvY2ssIGxvb3AsIG9yIGlmIiB9LAogICAgICAgICAiaTMyLmNvbnN0IjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4i
OiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidmFyaW50MzIi
fV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGkzMiIgfSwKICAgICAgICAgImk2
NC5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjog
IDE3LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBl
IjogInZhcmludDY0In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBpNjQiIH0s
Ci0gICAgICAgICJmNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAxOCwgInJldHVybiI6IFsiZjMyIl0sICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAg
ICAgICAgICAidHlwZSI6ICJ1aW50NjQifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0
ZWQgYXMgZjY0IiB9LAotICAgICAgICAiZjMyLmNvbnN0IjogICAgICAgICAgIHsgImNhdGVnb3J5
IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMTksICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAidWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNvbnN0YW50IHZh
bHVlIGludGVycHJldGVkIGFzIGYzMiIgfSwKKyAgICAgICAgImY2NC5jb25zdCI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDE4LCAicmV0dXJuIjogWyJm
NjQiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogInVpbnQ2NCJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
YSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBmNjQiIH0sCisgICAgICAgICJmMzIuY29u
c3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAxOSwg
InJldHVybiI6IFsiZjMyIl0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUgaW50ZXJwcmV0ZWQgYXMgZjMyIiB9LAogICAg
ICAgICAiZ2V0X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMjAsICJyZXR1cm4iOiBbImxvY2FsIl0sICAgICJwYXJhbWV0ZXIiOiBbXSwgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1l
dGVyIiB9LAogICAgICAgICAic2V0X2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNw
ZWNpYWwiLCAgICAidmFsdWUiOiAgMjEsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0
ZXIiOiBbImxvY2FsIl0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxv
Y2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlh
YmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDI1LCAicmV0dXJuIjogWyJwcmV2Il0s
ICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUg
YSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxZTkzZDRiLi45NjhkMDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NjgsNiArODY4LDI1IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9XQVNNUGxhbi5jcHAKICAgICB3
YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcAogCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yLmNwcAorICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorICAg
IHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKKyAgICB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuY3BwCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcAor
ICAgIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCisgICAgd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAK
KyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCisKICAgICB5YXJyL1JlZ3VsYXJFeHByZXNz
aW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCiAgICAgeWFyci9ZYXJy
SW50ZXJwcmV0ZXIuY3BwCkBAIC05MTgsNiArOTM3LDE5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9P
QkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBl
LmNwcAorCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuY3BwCisgICAg
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKyAg
ICB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZUNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5j
cHAKICkKIAogc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggNWJiN2NlOC4uODllZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkyIEBACisyMDE2LTEwLTE5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNv
bT4KKworICAgICAgICBKYXZhU2NyaXB0IFdlYkFzc2VtYmx5IEFQSTogYmFieSBzdGVwcworCisg
ICAgICAgICAtIEV4cGFuZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBvd24g
ZmlsZXMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUsIGFz
IHdlbGwgYXMgYWRkaW5nIHRoZSAubHV0LmggZmlsZXMuIEFsbCBvZiB0aGUKKyAgICAgICAgICAg
SlNXZWJBc3NlbWJseSoue2gsY3BwfSwgYXMgd2VsbCBhcyBDb25zdHJ1Y3RvciBhbmQgUHJvdG90
eXBlIGZpbGVzLCBhcmUKKyAgICAgICAgICAgY3VycmVudGx5IHRoZSBzYW1lIGJldHdlZW4gdGhl
IDQgc3BlY2lmaWVkIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9ycy4gSXQnbGwgYmUKKyAgICAgICAg
ICAgZWFzeSB0byBpbXBsZW1lbnQgaW5kaXZpZHVhbCBmdW5jdGlvbnMgb24gY29uc3RydWN0ZWQg
b2JqZWN0cyBhcyBwZXIgdGhlCisgICAgICAgICAgIHNwZWMsIGFuZCBoYXZlIGVhY2ggb2YgdGhl
c2UgZmlsZXMgZGl2ZXJnZS4gVGhlIGVycm9yIGNvbnN0cnVjdG9ycyBhcmUgYWxzbworICAgICAg
ICAgICBzaW1pbGFyLCBleGNlcHQgdGhhdCB0aGVpciBpbnN0YW5jZSBkZXJpdmVzIGZyb20gRXJy
b3JJbnN0YW5jZS4KKyAgICAgICAgIC0gVXNlIGNvbnN0cnVjdG9yIG1hY3JvIHdoZW4gaW5pdGlh
bGl6aW5nIHRoZSBnbG9iYWwgb2JqZWN0LgorICAgICAgICAgLSBEcmFtYXRpY2FsbHkgaW1wcm92
ZSB0ZXN0aW5nIG9mIHRoZSBXZWJBc3NlbWJseSBBUEkgYnkgY2hlY2tpbmcgZm9yCisgICAgICAg
ICAgIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBzcGVjIFsqXS4KKyAgICAgICAgIC0gQ2xl
YW4gdXAgYXNzZXJ0LmpzJyBleGNlcHRpb24gdGVzdGluZy4KKyAgICAgICAgIC0gRml4IGEgY29w
eS1wYXN0ZSBidWcgaW4gd2FzbS5qc29uOiBmbG9hdGluZy1wb2ludCBjb25zdCByZXR1cm4gdmFs
dWVzIHdlcmUKKyAgICAgICAgICAgc3dhcHBlZC4KKworICAgICAgICBbKl0gaHR0cHM6Ly9naXRo
dWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIElt
cGxlbWVudCBtb3JlIG9mIHRoZSBKYXZhU2NyaXB0IFdlYkFzc2VtYmx5IEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IGFk
ZCAubHV0LmggZ2VuZXJhdGlvbgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IGRpdHRv
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRk
IC5sdXQuaCBnZW5lcmF0aW9uIGFuZCBhbGwgdGhlIG5ldyBmaWxlcworICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6IHVzZSBtYWNybyB0byBsaXN0IGFsbCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgKiB3YXNtL1dl
YkFzc2VtYmx5T2JqZWN0LmNwcDogdW5ib2lsZXJwbGF0ZSwgYWxsIGNvbnN0cnVjdG9ycyBpbnRv
IHRoZWlyIG93biBmaWxlcworICAgICAgICAqIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuaDogZGl0
dG8KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6SlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvcik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVj
dC5oLgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TWVtb3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Vi
QXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJseU1lbW9y
eSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6ZGVzdHJveSk6CisgICAgICAgIChK
U0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseU1lbW9yeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dl
YkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OkpTV2ViQXNzZW1ibHlNb2R1
bGUpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmRlc3Ryb3kpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcik6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMvSlNXZWJB
c3NlbWJseVRhYmxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6SlNXZWJBc3NlbWJseVRhYmxl
KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlUYWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5VGFibGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmguCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OkNvbXBpbGVFcnJv
clN0cnVjdHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlDb21w
aWxlRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6OldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmguCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNl
KToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpXZWJBc3Nl
bWJseUluc3RhbmNlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6Okluc3RhbmNlU3RydWN0dXJlKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OldlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
ZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlD
b25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TWVtb3J5KToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OldlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeUNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvcjo6TWVtb3J5U3RydWN0dXJlKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZTo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaC4KKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OmNh
bGxKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0
LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6Ok1vZHVsZVN0
cnVjdHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2Jq
ZWN0LmguCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OldlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dl
YkFzc2VtYmx5T2JqZWN0LmguCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oLgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpSdW50aW1lRXJyb3JTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5oLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5o
LgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAg
IChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcjo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpUYWJsZVN0cnVj
dHVyZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3Qu
aC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlP
YmplY3QuaC4KKwogMjAxNi0xMC0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFtYY29kZV0gSmF2YVNjcmlwdENvcmUgZmFpbHMgdG8gYnVpbGQgd2hlbiBDTEFO
R19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiNTMzNmE2Li5lZWNiNTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOSArMjgsMTAgQEAg
VlBBVEggPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L3BhcnNlciBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcnVudGltZSBcCi0JJChKYXZhU2NyaXB0
Q29yZSkvaW50ZXJwcmV0ZXIgXAotCSQoSmF2YVNjcmlwdENvcmUpL2ppdCBcCi0JJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS93YXNtL2pzIFwKICMKIAogUFlUSE9OID0gcHl0
aG9uCkBAIC0xNTksNiArMTYwLDE4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBTdHJp
bmdQcm90b3R5cGUubHV0LmggXAogICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBT
eW1ib2xQcm90b3R5cGUubHV0LmggXAorICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IubHV0LmggXAorICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5o
IFwKKyAgICBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmggXAorICAgIFdlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmggXAorICAgIFdlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3IubHV0LmggXAorICAgIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIFwK
KyAgICBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHlwZS5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5sdXQuaCBcCisgICAgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0
LmggXAorICAgIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCBcCiAjCiAKICQoT0JKRUNUX0xVVF9IRUFERVJTKTog
JS5sdXQuaCA6ICUuY3BwICQoSmF2YVNjcmlwdENvcmUpL2NyZWF0ZV9oYXNoX3RhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3ZDUxNGMuLmFlY2QxYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODgxLDYgKzE4ODEsNTQgQEAKIAkJQThBNDc0OEUxNTFB
ODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEQxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hICov
OyB9OwogCQlBRDJGQ0I4ODFEQUVCRjNDMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCODYx
REFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCAqLzsgfTsKIAkJQUQyRkNC
ODkxREFFQkYzRjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlPYmplY3QuaCAqLzsgfTsKKwkJQUQyRkNCRTIxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IuY3BwICovOyB9OworCQlBRDJGQ0JFMzFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IuaCAqLzsgfTsKKwkJQUQyRkNCRTQxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBODFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcCAqLzsgfTsKKwkJQUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oICovOyB9OworCQlBRDJGQ0JFNjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDJGQ0JBQTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgKi87
IH07CisJCUFEMkZDQkU3MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBQjFE
QjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICovOyB9OworCQlBRDJGQ0JF
ODFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBQzFEQjU4REE0
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgKi87IH07CisJCUFEMkZD
QkU5MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBRDFEQjU4REE0
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oICovOyB9OworCQlBRDJGQ0JF
QTFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFFMURCNThEQTQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuY3BwICovOyB9OworCQlBRDJGQ0JFQjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JBRjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseVRhYmxlLmggKi87IH07CisJCUFEMkZDQkVDMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIwMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQUQyRkNCRUQxREI1OERB
RDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CisJ
CUFEMkZDQkVFMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDJGQ0JCMjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuY3BwICovOyB9OworCQlBRDJGQ0JFRjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFEMkZDQkIzMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvclByb3RvdHlwZS5oICovOyB9OworCQlBRDJGQ0JGMDFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkI0MURCNThEQTQwMEIzRTczNiAvKiBXZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBRDJGQ0JGMTFEQjU4REFE
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCNTFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggKi87IH07CisJCUFEMkZDQkYy
MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkI2MURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJ
QUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkI3
MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggKi87IH07
CisJCUFEMkZDQkY0MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
MkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKKwkJQUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkI5MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmggKi87IH07CisJCUFEMkZDQkY2MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDJGQ0JCQTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuY3BwICovOyB9OworCQlBRDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQkJCMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5oICovOyB9OworCQlBRDJGQ0JGODFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCQzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQkY5MURCNThEQUQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCRDFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlB
RDJGQ0JGQTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQkUxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
LmNwcCAqLzsgfTsKKwkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkNCRkMxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JDMDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQUQyRkNCRkQxREI1OERBRDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQzExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JGRTFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JDMjFEQjU4REE0MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUFEMkZDQkZGMURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JDMzFEQjU4REE0MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oICovOyB9OworCQlBRDJGQ0MwMDFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0I5ODFEQjU4NUE2MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUFEMkZDQzAxMURCNThE
QUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0I5OTFEQjU4NUE2MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0MwMjFE
QjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOUExREI1ODVBNjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQUQyRkND
MDMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0I5QjFEQjU4NUE2
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkND
MDQxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOEMxREI1ODQ0MDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUuY3BwICovOyB9OworCQlBRDJGQ0MwNTFEQjU4REFE
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOEQxREI1ODQ0MDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlNb2R1bGUuaCAqLzsgfTsKKwkJQUQyRkNDMTYxREI1OUNCMjAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQUQyRkND
MTcxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkND
MEIxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1
dC5oICovOyB9OworCQlBRDJGQ0MxODFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNDMEMxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMTkxREI1OUNCMjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MwRDFEQjU5QzU5MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMUExREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MwRTFEQjU5QzU5MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQUQy
RkNDMUIxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMEYx
REI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICovOyB9
OworCQlBRDJGQ0MxQzFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQzEwMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
Lmx1dC5oICovOyB9OworCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDJGQ0MxMTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUubHV0LmggKi87IH07CisJCUFEMkZDQzFFMURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMTIxREI1OUM1OTAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzFG
MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzEz
MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQu
aCAqLzsgfTsKKwkJQUQyRkNDMjAxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQzE0MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzIxMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseVRhYmxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQyRkNDMTUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBX
ZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYz
MThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3Bh
cXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FC
MkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKQEAgLTQyMTMsNiArNDI2MSw1
NCBAQAogCQlBRDFDRjA2ODE2RENBQjJEMDBCOTcxMjMgLyogUHJvcGVydHlUYWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0eVRhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNCODYxREFFQkYzNzAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkFzc2VtYmx5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQy
RkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5
TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNz
ZW1ibHlNb2R1bGUuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjhEMURCNTg0NDAwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5TW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2Vi
QXNzZW1ibHlNb2R1bGUuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCOTgxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA7IHBhdGggPSBqcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I5QTFEQjU4NUE2MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOyBwYXRoID0ganMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0I5QjFEQjU4NUE2MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkE3
MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDsgcGF0
aCA9IGpzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQUQyRkNCQTgxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBQTFEQjU4REE0MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBKU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlNZW1v
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBQjFEQjU4REE0MDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Lmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5TWVt
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkFDMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwOyBwYXRoID0g
anMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUUxREI1OERBNDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U1dlYkFzc2VtYmx5VGFibGUuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBK
U1dlYkFzc2VtYmx5VGFibGUuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlUYWJsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMDFEQjU4REE0MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDsg
cGF0aCA9IGpzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFEMkZDQkIyMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQkIzMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvclByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjQxREI1OERBNDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjUxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDsgcGF0aCA9IGpzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
RDJGQ0JCNjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCNzFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmg7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkI5MURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaDsgcGF0aCA9
IGpzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQUQyRkNCQkExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQkIxREI1OERBNDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmg7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0JCQzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
RDJGQ0JCRDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJFMURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclBy
b3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJGMURCNThEQTQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOyBwYXRo
ID0ganMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlUYWJs
ZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzEx
REI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaDsg
cGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBRDJGQ0JDMjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JDMzFEQjU4REE0
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CisJCUFEMkZDQzBCMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQzBDMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZD
QzBFMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MwRjFEQjU5
QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0MxMDFEQjU5QzU5MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMTExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUQyRkNDMTIxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFEMkZDQzEzMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFEMkZDQzE0MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUQyRkNDMTUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEODZBOTNE
MUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlUm9vdFNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzNzE4OTFBRDMzMDBENUNDREMgLyogVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NjEwLDYgKzU3MDYsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQg
U291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMEIxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUFEMkZDQzBDMURCNTlDNTkw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJ
QUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
bHV0LmggKi8sCisJCQkJQUQyRkNDMEUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMEYxREI1OUM1OTAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICovLAorCQkJCUFEMkZDQzEwMURCNTlD
NTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJ
CUFEMkZDQzExMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5s
dXQuaCAqLywKKwkJCQlBRDJGQ0MxMjFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxMzFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQUQy
RkNDMTQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQu
aCAqLywKKwkJCQlBRDJGQ0MxNTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQkwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyogQWlyT3Bj
b2RlLmggKi8sCiAJCQkJMEY2MTgzMzQxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdlbmVy
YXRlZC5oICovLAogCQkJCTBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVVdGls
cy5oICovLApAQCAtNTY5NSw2ICs1ODAzLDcgQEAKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0
IC8qIHdhc20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUFEMkZDQjhBMURCNTg0MDAwMEIzRTczNiAvKiBqcyAqLywKIAkJCQlBRDJGQ0I4NjFEQUVCRjM3
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovLAogCQkJCUFEMkZDQjg3MURBRUJG
MzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovLAogCQkJCTdCOThEMTM0MUI2MENE
NUEwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwICovLApAQCAtNzIwMCw2ICs3MzA5LDQ5IEBA
CiAJCQlwYXRoID0gYnVpbHRpbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlBRDJGQ0I4QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCAqLywKKwkJCQlBRDJGQ0JBNzFEQjU4REE0MDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oICovLAorCQkJCUFEMkZDQkE4MURCNThE
QTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwICovLAorCQkJCUFEMkZDQkE5
MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCAqLywKKwkJCQlBRDJG
Q0JBQTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgKi8sCisJCQkJ
QUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLywKKwkJ
CQlBRDJGQ0JBQzFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5j
cHAgKi8sCisJCQkJQUQyRkNCQUQxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IuaCAqLywKKwkJCQlBRDJGQ0JBRTFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseVRhYmxlLmNwcCAqLywKKwkJCQlBRDJGQ0JBRjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseVRhYmxlLmggKi8sCisJCQkJQUQyRkNCQjAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkIxMURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJ
CQkJQUQyRkNCQjIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0JCMzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0JCNDFEQjU4REE0MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JC
NTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggKi8s
CisJCQkJQUQyRkNCQjYxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuY3BwICovLAorCQkJCUFEMkZDQkI3MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNCQjgxREI1OERBNDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkI5MURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQy
RkNCQkExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCAq
LywKKwkJCQlBRDJGQ0JCQjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0JCQzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQyRkNCQkQxREI1OERBNDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBRDJG
Q0JCRTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
Y3BwICovLAorCQkJCUFEMkZDQkJGMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZS5oICovLAorCQkJCUFEMkZDQkMwMURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkMxMURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBRDJGQ0JD
MjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgKi8sCisJ
CQkJQUQyRkNCQzMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
aCAqLywKKwkJCQlBRDJGQ0I5ODFEQjU4NUE2MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBRDJGQ0I5QTFEQjU4NUE2MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwICovLAorCQkJCUFEMkZDQjlCMURC
NTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oICovLAorCQkJCUFE
MkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCAqLywKKwkJ
CQlBRDJGQ0I4RDFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5oICovLAor
CQkJKTsKKwkJCW5hbWUgPSBqczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUM0NzAzQ0MxMTkyODQ0QTQwMDEzRkJFQSAvKiBjb2RlZ2VuICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTczMTMsNiArNzQ2NSw3IEBACiAJCQkJQkMxOEMz
RTUwRTE2RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0Ew
NkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCURDRUUyMjA5MUNFQjk4
OTUwMDBDMjM5NiAvKiBERkdCYWNrd2FyZHNDRkcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1
MDE0MUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzMyMSw2ICs3NDc0LDcgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIg
LyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2Njgw
MDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBRDJGQ0MxQjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBB
QiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzQxNSw2ICs3NTY5LDcgQEAKIAkJCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTI5NTI3QTFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9p
bXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLywKKwkJCQlBRDJGQ0MwMTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlN
b2R1bGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QTYxQzEwQjcyRDAw
MzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBB
NDFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQk5OURBMDBBNTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhl
YWRlcnMgKi8sCkBAIC03NDIzLDYgKzc1NzgsNyBAQAogCQkJCURDRkRGQkQ5MUQxRjVEOUIwMEZF
M0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1
RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQUQyRkNCRjExREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5
dGVjb2RlQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAw
QURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEw
NzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NDUzLDYgKzc2MDksNyBAQAogCQkJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBD
bGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAv
KiBCM0R1cGxpY2F0ZVRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyNjFBQTkwOTU2
MDBEMzNCMzMgLyogQ2xvbmVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JG
RDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2NrSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGMzQxODIwMjBENzAwMkM5QjI2IC8qIENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTI5LDYgKzc2
ODYsNyBAQAogCQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyog
REZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRjUxREI1OERB
RDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxNDFBQjNEOEJF
MDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc2
MDQsNiArNzc2Miw3IEBACiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0ZpeHVw
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzk3MTdGRkM0RTYwMDczQzJCQyAvKiBE
RkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMTYxREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJERDgxNTFBQjNEOEJFMDBCQkI4RTggLyogREZHRm9yQWxsS2ls
bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QTA5MDgwMUQ3Njg0NjUwMDhCODg5QiAvKiBIYXNo
TWFwSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2OUNDODkxOTNBQzYwQTAwNDU3NTlFIC8q
IERGR0Zyb3plblZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2NDEsNiArNzgwMCw3IEBACiAJ
CQkJMEYyRTg5MkQxNkQwMkJBRjAwOUU0RkQyIC8qIERGR01pbmlmaWVkSUQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkJEQzQ2MTUyMjgwMjAwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOEYxNDM2MUFERjA5MDEwMEVENzkyQyAvKiBERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JFRjFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRjJDRDVDMUI2MUE0RjgwMDQ5NTVBOCAvKiBERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVy
YWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8q
IERGR05vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzY5Miw2ICs3ODUyLDcgQEAKIAkJCQk4NkVD
QTNGQTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdT
aWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MwNTFEQjU4
REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hl
Y2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlERDMxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR1NwZWN1bGF0aXZlSklULmggaW4gSGVhZGVycyAqLywKQEAgLTc3MDUsNiArNzg2Niw3IEBA
CiAJCQkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUwQUYzQzE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBRDJGQ0MxQTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOTlCMjQ5MUMyNEMzRDMwMEM4MjE1OSAv
KiBKSVROZWdHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIw
MEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzczNSw2ICs3ODk3LDcgQEAKIAkJCQkwRkUwNTAxODFBQTkwOTExMDBEMzNC
MzMgLyogRGlyZWN0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAxNjFBQTkw
OTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBRDJGQ0JFNzFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjQxOEExQjI1
OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzc2MCw2
ICs3OTIzLDcgQEAKIAkJCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFC
NkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4
NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JG
QjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZp
b3VzU3BpbGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTc3NzMsNiArNzkzNyw3
IEBACiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0
QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMzOEUwQzFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9w
ZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExTdGFja21hcEFyZ3VtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODcxLDYgKzgwMzYs
NyBAQAogCQkJCTBGOTMzMkEwMTRDQTdEQ0QwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlh
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NjQ2NTZBMUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQ
dXRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MxQzFEQjU5Q0IyMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjRFNTQ0MTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDJFMzEzNDEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCBpbiBIZWFkZXJzICovLApA
QCAtNzg4Nyw2ICs4MDUzLDcgQEAKIAkJCQlGRTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklU
RGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUQ4OTMyQjE3RTM4NjhGMDA2Njgy
NzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFC
QjRCNDYwMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJG
Q0JFQjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRGOTc0NDcxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBT
dGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5NzgsNiArODE0NSw3IEBACiAJCQkJQkMx
OEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQxNTBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MjlEOTMwMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUFEMkZDQkU5MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdG
OUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAy
MzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkFGN0VG
RTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODksNyArODE1Nyw5IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0Ug
LyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUVGOTFGMTY4NzhG
N0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzIxMURC
NTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDNzEyRTMxN0NEODc5MzAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JFMzFEQjU4REFE
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNB
cnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDIwLDYgKzgxOTAsNyBAQAogCQkJCUJDMThDNDFF
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NvbnRleHRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RUE3MEVFMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0
UmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzAzMURCNThEQUQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVB
QjQ5REQxQkVDODA4NjAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJl
ZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODA4MCw2ICs4MjUxLDcg
QEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMTkxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2
REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
NEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtODA4OCw2ICs4MjYwLDcgQEAKIAkJCQk5OTU5RTkyRDFCRDE3RkE0MDAxQUE0
MTMgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxOENCQzEx
QjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBRDJGQ0MxNzFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzlEQTRBNzFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0U4RDFEMUI5
MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyNDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNPYmplY3QuaCBpbiBIZWFkZXJzICovLApA
QCAtODEwNiw2ICs4Mjc5LDcgQEAKIAkJCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyogREZH
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNFRjg4NzUxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFBRERCOEZFMDAxMzk3
MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjhGRjNDMThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKQEAg
LTgxMjcsNiArODMwMSw3IEBACiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQUIyNkM2MUMxQTUzNTkwMEQ4
MkFFNiAvKiBCM01hdGhFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQkYzMURCNThE
QUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQyOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdSZWZDRi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtODI2OSw2ICs4NDQ0LDcgQEAK
IAkJCQlBNzdGMTgyNTE2NDE5MkM3MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzMjhDNkM5MURBNDMyRjkwMEQyNTVGRCAvKiBSZWdpc3RlckF0T2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTMwM0Q2NDE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9r
ZW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY5Q0U3
NDFCOUNENkQwMDA0RURDQTYgLyogUG9seW1vcnBoaWNBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTgzNDE4MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5ODIwNjExNkJGRTM4MzAwMjQwRDAyIC8qIFByZWNp
c2VKdW1wVGFyZ2V0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzQ1LDYgKzg1MjEsNyBAQAogCQkJ
CUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2Nv
cGVkQXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYw
MEQzM0IzMyAvKiBTY29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRjcxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4OUFGRTlDMDA2MzMyMzEgLyogU2Ny
aXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBG
MTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzYxLDYgKzg1Mzgs
NyBAQAogCQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0RTkzIC8q
IFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MxODFEQjU5Q0Iy
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVk
QXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBNzhGMTEzQUFCODhGMDA1
QjdDMkMgLyogU2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODQxMywxMCArODU5MSwx
MiBAQAogCQkJCUUzMkZGMUVBMURBNzU3MUMwMEE4QkYyMSAvKiBET01KSVRTbG93UGF0aENhbGxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV0FTTUNh
bGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFCMjFBNkU1MDFFMDA3
MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MyMDFE
QjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk2QjczMjgxQkRBMDhFRjAwMzMxQjg0IC8qIFN5bWJvbFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBT
eW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFD
IC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA4MUFGREJFQTIw
MDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JF
RDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QjRBMzMxQzg0RjBENjAwRjFCMTdFIC8qIFNsb3dQYXRo
UmV0dXJuVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtODQ3
Niw2ICs4NjU2LDcgQEAKIAkJCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRBNEU3RCAvKiBXYXRjaHBv
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vh
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGOUYxNEVFMUFDQzAw
RDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCRkNFNjkxMENEQjFG
QzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ4NkE5M0UxQUE0
RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODUw
MSw2ICs4NjgyLDcgQEAKIAkJCQk3OUIxNzg4RTFEMzk5QjgwMDBCMUE1NjcgLyogSklUTWF0aElD
Rm9yd2FyZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAv
KiBZYXJyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzdBRDgzQzFEQTQ5Mjg2MDBGM0Q0MTIgLyog
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkYxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2Q0IgLyogR0NEZWZlcnJhbENv
bnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTMsNiArOTI5NSw3IEBACiAJCQkJ
MTQyODA4NjMxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDI4MDg2NDEwN0VDMTFBMDAxM0U3QjIgLyogQm9vbGVhbk9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg2NTEwN0VDMTFBMDAxM0U3QjIgLyogQm9vbGVh
blByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGNjFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUMyRkNBRTEwMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJh
c2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTMwLDYgKzkzMTMsNyBAQAogCQkJCTYy
RDc1NUQ0MUI4NEZCM0QwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlcjY0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyOUQxNENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkZFMURCNThEQUQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkI4
QURDMUM0RUZBQzMwMDk2OTA1MiAvKiBCM1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjI3NjczMjMxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTkyMjAsNiArOTQwNCw3IEBACiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAw
NDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyOTgxRkQ4MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRTgxREI1OERBRDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGNDI3NjQxNTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjVBMTI3MzE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05MzAxLDYgKzk0ODYsNyBAQAogCQkJCTBGMkI5Q0VDMTlEMEJB
N0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFQTFEQjU4REFEMDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDQ0ZCMThB
NjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
QzlERDIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTMwOCw2ICs5NDk0LDcgQEAKIAkJCQkwRjY4MkZC
MjE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGRjE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzIwQ0I5MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FM
b3dlcmluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkYwMURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0RjI5REYxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OUUzMjYzMUIwNUFCMDQwMDgwMUVENSAvKiBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTkzMzMsNiArOTUyMCw3IEBACiAJCQkJMEZEREJGQjUxNjY2
RUVEODAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY5NDk1ODcxQzU3RjQ3NTAwNDEzQTQ4IC8qIEIzU3RhY2tTbG90LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMkJEQzUxMTUyMjhGRkQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkYyMURCNThEQUQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJE
QzRBMTUyMjgwOUEwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRkZDOTVGMTRFRjkwQkIwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0
ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDOTdGNDExODIwMjEx
OTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05MzQ2LDYgKzk1MzQsNyBAQAogCQkJCTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAv
KiBFbmNvZGVkVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzcxMDdFQzM3NjAw
NDI3QTQ4IC8qIEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUM4MTA3RUMzNzYw
MDQyN0E0OCAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZD
QkVDMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzkxMDdFQzM3NjAw
NDI3QTQ4IC8qIEVycm9ySW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0Ex
MDdFQzM3NjAwNDI3QTQ4IC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTQ2Niw2ICs5NjU1LDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENv
bGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1
ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQzA0MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFz
c2VtYmx5TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFM0EwNkJGMUMxMTA0MTYwMDM5
MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2
MkQ4NUI2MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyMkU1QTYxREE2NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NDg4LDYgKzk2NzgsNyBA
QAogCQkJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQUY3RUZEMTY1QkE5MUIwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2REI3RUMxRDYxN0QxMTAwQ0RCRjhFIC8qIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFMjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkIxNEUxRTE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4QkRDIC8q
IEpJVE9wY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTIxLDYgKzk3MTIsNyBAQAogCQkJ
CTE0QUJERjYwMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1N0NGNDU4MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNDMDAxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDEx
MDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlE
NjEwN0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQwRkNFNDBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTk1NjAsNiArOTc1Miw3IEBACiAJCQkJNzAxM0NBOEIxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpT
Sm9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBK
U0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VD
MTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQkZBMURC
NThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFs
dWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogSlNN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTUxODJEOTkxNDAwNTIyQzIyIC8qIEpT
TWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTY5LDYgKzk3NjIsNyBAQAogCQkJ
CUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkIzODc5MjFCRkQzMUExMDBFM0FCMUUgLyogRlRMQ29tcGlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JGODFEQjU4REFEMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlENDEwN0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtOTY0Miw2ICs5ODM2LDcgQEAKIAkJCQlGRTY4QzYzODFCOTBE
RTBCMDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTNBMDZBQzFDMTBDMzlFMDAzOTBGREQgLyogSklUQml0
T3JHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCRkMxREI1OERBRDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzAwODczOTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBN
YXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NzAxLDYgKzk4OTYsNyBAQAogCQkJ
CTBGMTkwQ0FDMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlck9y
aWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMgLyog
UHJvZmlsZXJPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JFNjFEQjU4
REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjlENEMwQzFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQjEwNThCMTY3NTQ4MzEwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4
aXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1OEQxNjc1NDgzNzAwRjhBQjZFIC8qIFBy
b2ZpbGVyT1NSRXhpdFNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NzMzLDYgKzk5MjksNyBA
QAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFRTE4MjM0
MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUFEMkZDQkY0MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIx
NyAvKiBSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkI4QUQ4MUM0RUREQTIwMDk2
OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzc3M0RF
MUFBRjgzQUMwMEJERTdFOCAvKiBSdW50aW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4
MDksOCArMTAwMDYsMTAgQEAKIAkJCQkwRkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2
X2l0YWJfaG9sZGVyLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5
RkYgLyogdWRpczg2X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJF
OTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKKwkJCQlBRDJG
Q0JFRTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4
Nl9zeW4uYyBpbiBTb3VyY2VzICovLAogCQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDJGQ0JF
NDFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlu
a2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0
QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTk4MjEsNiArMTAwMjAsNyBAQAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJP
ZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8q
IFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNDMDIxREI1OERBRDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0Y0MEU4RjFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIz
SVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNjA0YzBiZi4uMTVhOTQxMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtODIzLDEyICs4MjMsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBhdXRv
KiB3YXNtID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVs
ZVByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0g
ICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuSW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCi0gICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20t
PmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2
YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgIkNvbXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAot
ICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisjZGVmaW5lIFJFR0lTVEVSX1dBU01fQ09OU1RSVUNUT1Jf
QVNfR0xPQkFMX1BST1BFUlRZKE5BTUUsIC4uLikgXAorICAgICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk5BTUUgIyMgUHJpdmF0ZU5h
bWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICNO
QU1FKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEZP
Ul9FQUNIX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoUkVHSVNURVJfV0FTTV9DT05TVFJVQ1RP
Ul9BU19HTE9CQUxfUFJPUEVSVFkpCiAgICAgICAgIH07CiAgICAgICAgIGFkZFN0YXRpY0dsb2Jh
bHMoZXh0cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFs
cykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5
T2JqZWN0LmNwcAppbmRleCA0NGMyMjliLi45MzcyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCkBAIC0yNiwxNzcgKzI2LDM0IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3QuaCIKIAot
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgi
Ci0jaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
LSNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuaCIKKyNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgiCisjaW5jbHVkZSAianMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IuaCIKKyNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRlICJqcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAianMvV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJv
dG90eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAianMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFdlYkFzc2VtYmx5T2Jq
ZWN0KTsKIAotLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKLSNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9D
T05TVFJVQ1RPUl9QUk9QRVJUWShETykgXAotICAgIERPKE1vZHVsZSwgMSkgXAotICAgIERPKElu
c3RhbmNlLCAyKSBcCi0gICAgRE8oTWVtb3J5LCAxKSBcCi0gICAgRE8oVGFibGUsIDEpIFwKLSAg
ICBETyhDb21waWxlRXJyb3IsIDEpIFwKLSAgICBETyhSdW50aW1lRXJyb3IsIDEpCi0KLS8vIE5h
bWUsIGZ1bmN0aW9uTGVuZ3RoCi0jZGVmaW5lIEZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVS
VFkoRE8pIFwKLSAgICBETyh2YWxpZGF0ZSwgMSkgXAotICAgIERPKGNvbXBpbGUsIDEpCi0KLS8v
IEZJWE1FIEltcGxlbWVudCBlYWNoIG9mIHRoZXNlIGluIHRoZWlyIG93biBoZWFkZXIgZmlsZSwg
YW5kIGF1dG9nZW5lcmF0ZSAqLmx1dC5oIGZpbGVzIGZvciAqUHJvdG90eXBlVGFibGUuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKLSNkZWZpbmUgREVGSU5F
X1dBU01fT0JKRUNUX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUsIGZ1bmN0aW9uTGVuZ3RoKSBc
Ci0gICAgY2xhc3MgSlNXZWJBc3NlbWJseSAjIyBOQU1FIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IEJhc2U7IFwKLSAgICAgICAgXAotICAgICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSAj
IyBOQU1FKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICB7
IFwKLSAgICAgICAgICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTV2ViQXNzZW1ibHkgIyMgTkFNRT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkgIyMgTkFNRSh2
bSwgc3RydWN0dXJlKTsgXAotICAgICAgICAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7
IFwKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSBcCi0gICAgICAgIHsgXAotICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCi0gICAgICAg
IH0gXAotICAgICAgICBcCi0gICAgICAgIERFQ0xBUkVfSU5GTzsgXAotICAgICAgICBcCi0gICAg
cHJvdGVjdGVkOiBcCi0gICAgICAgIEpTV2ViQXNzZW1ibHkgIyMgTkFNRShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKSBcCi0gICAgICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpIFwKLSAgICAgICAgeyBcCi0gICAgICAgIH0gXAotICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsgXAotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OyBcCi0gICAgICAgIH0gXAotICAgIH07IFwKLSAgICBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3Nl
bWJseSAjIyBOQU1FOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS4iICNOQU1FLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHkgIyMgTkFNRSkgfTsgXAot
ICAgIFwKLSAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7IFwKLSAgICBwdWJsaWM6IFwKLSAgICAgICAgdHlwZWRl
ZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOyBcCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsgXAotICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBXZWJBc3NlbWJseSAjIyBO
QU1FICMjIFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90
eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7IFwKLSAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOyBcCi0gICAg
ICAgICAgICByZXR1cm4gb2JqZWN0OyBcCi0gICAgICAgIH0gXAotICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9IFwKLSAg
ICAgICAgXAotICAgICAgICBERUNMQVJFX0lORk87IFwKLSAgICAgICAgXAotICAgIHByb3RlY3Rl
ZDogXAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkgXAotICAgICAgICB7IFwK
LSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsgXAotICAgICAgICB9IFwKLSAg
ICAgICAgXAotICAgIHByaXZhdGU6IFwKLSAgICAgICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQ
cm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAotICAgICAgICAgICAgOiBK
U0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKSBcCi0gICAgICAgIHsgXAotICAgICAg
ICB9IFwKLSAgICB9OyBcCi0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IE5BTUUgIyMgUHJvdG90eXBlVGFibGVJbmRleFtdID0geyB7IDAsIDAgfSB9OyBcCi0gICAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPSB7IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAgIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgUHJvdG90eXBlVGFibGUgPSB7IDAs
IDAsIHRydWUsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVWYWx1ZXMsIE5BTUUgIyMgUHJvdG90eXBl
VGFibGVJbmRleCB9OyBcCi0gICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUg
IyMgUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS4iICNOQU1FICIucHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJk5BTUUgIyMgUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0Rf
VEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUpIH07IFwKLSAgICBcCi0gICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJs
eSAjIyBOQU1FKEV4ZWNTdGF0ZSogc3RhdGUpIFwKLSAgICB7IFwKLSAgICAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7IFwKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOyBcCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3Rh
dGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBk
b2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlICIgI05BTUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIp
KSkpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5ICMjIE5BTUUoRXhlY1N0YXRlKiBzdGF0ZSkgXAotICAg
IHsgXAotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOyBcCi0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOyBcCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldl
YkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgIiAjTkFNRSAiIGNvbnN0cnVjdG9y
IHByb3BlcnR5IikpKSk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgY2xhc3MgV2ViQXNzZW1ibHkg
IyMgTkFNRSAjIyBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsgXAotICAg
IHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsgXAotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7IFwKLSAgICAgICAgXAotICAgICAgICBz
dGF0aWMgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBO
QU1FICMjIFByb3RvdHlwZSwgU3RydWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSkgXAotICAgICAg
ICB7IFwKLSAgICAgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFN
RSAjIyBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7IFwKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgTkFNRSAjIyBQcm90b3R5cGUsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOyBcCi0gICAgICAgIH0gXAotICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAotICAgICAgICB9
IFwKLSAgICAgICAgXAotICAgICAgICBERUNMQVJFX0lORk87IFwKLSAgICAgICAgXAotICAgICAg
ICBTdHJ1Y3R1cmUqIE5BTUUgIyMgU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTkFN
RSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7IH0gXAotICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiBcCi0g
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMj
IFByb3RvdHlwZSogTkFNRSAjIyBQcm90b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1
cmUpIFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
QVNDSUlMaXRlcmFsKCNOQU1FKSk7IFwKLSAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIE5BTUUgIyMgUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7IFwKLSAgICAgICAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGZ1bmN0aW9uTGVuZ3RoKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOyBc
Ci0gICAgICAgICAgICBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE5BTUUg
IyMgU3RydWN0dXJlKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgXAotICAgIHByaXZhdGU6IFwK
LSAgICAgICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKSBcCi0gICAgICAgICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSkgXAotICAgICAgICB7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHN0YXRpYyBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseSAjIyBOQU1FOyBcCi0gICAgICAgICAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsgXAotICAgICAgICB9IFwKLSAgICAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkgXAot
ICAgICAgICB7IFwKLSAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxK
U1dlYkFzc2VtYmx5ICMjIE5BTUU7IFwKLSAgICAgICAgICAgIHJldHVybiBDYWxsVHlwZTo6SG9z
dDsgXAotICAgICAgICB9IFwKLSAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBcCi0gICAgICAgIHsgXAotICAgICAgICAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0
cnVjdG9yKj4oY2VsbCk7IFwKLSAgICAgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsgXAotICAgICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsgXAotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fICMjIE5BTUUgIyMgU3RydWN0dXJlKTsgXAotICAgICAgICB9IFwKLSAgICAgICAg
XAotICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtXyAjIyBOQU1FICMjIFN0cnVjdHVy
ZTsgXAotICAgIH07IFwKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
TkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlSW5kZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAotICAgIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzW10gPSB7IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAotICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSA9
IHsgMCwgMCwgdHJ1ZSwgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBOQU1FICMjIENv
bnN0cnVjdG9yVGFibGVJbmRleCB9OyBcCi0gICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgJk5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJB
c3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKSB9OwotCi1GT1JfRUFDSF9XQVNNX0NPTlNU
UlVDVE9SX1BST1BFUlRZKERFRklORV9XQVNNX09CSkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWSkK
LQotCiAjZGVmaW5lIERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04oTkFNRSwgLi4uKSBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5jICMjIE5BTUUoRXhlY1N0YXRl
Kik7CiBGT1JfRUFDSF9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKERFQ0xBUkVfV0FTTV9PQkpFQ1Rf
RlVOQ1RJT04pCiAKLQogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5T2JqZWN0OjpzX2luZm8g
PSB7ICJXZWJBc3NlbWJseSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
V2ViQXNzZW1ibHlPYmplY3QpIH07CiAKIFdlYkFzc2VtYmx5T2JqZWN0KiBXZWJBc3NlbWJseU9i
amVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC0yMzcsOSArOTQsNiBAQCBXZWJBc3NlbWJseU9iamVjdDo6V2Vi
QXNzZW1ibHlPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0gICAgCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2FzbU9iamVjdEZ1bmN2YWxpZGF0ZShFeGVjU3RhdGUqIHN0
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmgK
aW5kZXggNTU5NjM0MS4uN2I1MmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XZWJBc3NlbWJseU9iamVjdC5oCkBAIC00NSw0ICs0NSwxOCBAQCBwcml2YXRlOgogICAgIFdl
YkFzc2VtYmx5T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCisvLyBOYW1lLCBmdW5jdGlv
bkxlbmd0aAorI2RlZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBc
CisgICAgRE8oTW9kdWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1v
cnksIDEpIFwKKyAgICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAor
ICAgIERPKFJ1bnRpbWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRl
LCAxKSBcCisgICAgRE8oY29tcGlsZSwgMSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZTEzNmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIEpTV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkK
K3sKKyAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8qIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcj4odm0uaGVh
cCkpIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVudEZyYW1lKTsK
KyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OkpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3I6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvcikgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3N2VmYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yIDogcHVibGlj
IEVycm9ySW5zdGFuY2UgeworcHVibGljOgorICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBCYXNl
OworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworcHJvdGVjdGVkOgorICAgIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxNTliYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4odm0uaGVhcCkpIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKworU3RydWN0dXJlKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dl
YkFzc2VtYmx5SW5zdGFuY2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3Nl
bWJseUluc3RhbmNlKj4oY2VsbCktPkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6fkpTV2ViQXNzZW1i
bHlJbnN0YW5jZSgpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKworY29uc3QgQ2xhc3NJbmZv
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuSW5zdGFuY2Ui
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSkgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmRhNGJmODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0NjVkZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3Bw
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9y
eS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSlNX
ZWJBc3NlbWJseU1lbW9yeSogSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5TWVtb3J5Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJs
eU1lbW9yeSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKworU3RydWN0dXJlKiBKU1dlYkFzc2VtYmx5TWVt
b3J5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0pTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlN
ZW1vcnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKK3sKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4oY2Vs
bCktPkpTV2ViQXNzZW1ibHlNZW1vcnk6On5KU1dlYkFzc2VtYmx5TWVtb3J5KCk7Cit9CisKK3Zv
aWQgSlNXZWJBc3NlbWJseU1lbW9yeTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXZWJB
c3NlbWJseU1lbW9yeSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5TWVtb3J5OjpzX2lu
Zm8gPSB7ICJXZWJBc3NlbWJseS5NZW1vcnkiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlNZW1vcnkpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjVhOTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNXZWJBc3NlbWJseU1lbW9yeSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGlj
IEpTV2ViQXNzZW1ibHlNZW1vcnkqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5
TWVtb3J5KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
b2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYzU0Y2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TW9kdWxlLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlNb2R1bGUuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK0pTV2ViQXNzZW1ibHlNb2R1bGUqIEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseU1vZHVsZT4odm0uaGVhcCkp
IEpTV2ViQXNzZW1ibHlNb2R1bGUodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK1N0cnVjdHVyZSogSlNX
ZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1dlYkFzc2VtYmx5TW9kdWxlOjpK
U1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseU1vZHVs
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJs
eU1vZHVsZSo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5TW9kdWxlOjp+SlNXZWJBc3NlbWJseU1vZHVs
ZSgpOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJs
eU1vZHVsZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5TW9kdWxlKSB9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzIz
MjExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsK
KworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5TW9kdWxlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAg
SlNXZWJBc3NlbWJseU1vZHVsZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44Y2UyZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCisK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoRXhlY1N0
YXRlKiBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Ym9vbCB1c2VDdXJyZW50RnJhbWUpCit7CisgICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihzdGF0ZSwgdm0sIG1lc3Nh
Z2UsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yOjpKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpzX2luZm8gPSB7ICJXZWJB
c3NlbWJseS5SdW50aW1lRXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMmEx
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RXJyb3JJbnN0YW5jZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEVycm9ySW5zdGFuY2UgQmFzZTsKKworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgU3RyaW5nJiwgYm9v
bCk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICBKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlU
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFi
bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZDUyNTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
VGFibGUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseVRhYmxlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitKU1dlYkFzc2VtYmx5VGFibGUqIEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5VGFibGU+KHZtLmhlYXApKSBKU1dlYkFz
c2VtYmx5VGFibGUodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK1N0cnVjdHVyZSogSlNXZWJBc3NlbWJs
eVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTV2ViQXNzZW1ibHlUYWJsZTo6SlNXZWJBc3NlbWJs
eVRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5VGFibGU6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+KGNlbGwp
LT5KU1dlYkFzc2VtYmx5VGFibGU6On5KU1dlYkFzc2VtYmx5VGFibGUoKTsKK30KKwordm9pZCBK
U1dlYkFzc2VtYmx5VGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1i
bHlUYWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5VGFibGU6OnNfaW5mbyA9IHsg
IldlYkFzc2VtYmx5LlRhYmxlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1dlYkFzc2VtYmx5VGFibGUpIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzk5ZjllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJs
eVRhYmxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eVRhYmxlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseVRhYmxlKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQxNzg2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVj
dG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oIgor
CisjaW5jbHVkZSAiV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25z
dHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUo
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVj
dG9yVGFibGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvcgorIEBlbmQKKyAqLworCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIENvbXBp
bGVFcnJvciBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yIikpOworfQorCitXZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUsIFN0cnVjdHVyZSogdGhpc1N0cnVjdHVyZSkKK3sK
KyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwgdGhpc1N0cnVjdHVyZSk7CisgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkNvbXBpbGVFcnJvciIpKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fQ29tcGls
ZUVycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKK30KKworV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQoreworfQorCitDb25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7
Cit9CisKK0NhbGxUeXBlIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3I6OmdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjsKKyAgICByZXR1cm4g
Q2FsbFR5cGU6Okhvc3Q7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX0NvbXBpbGVFcnJvclN0cnVj
dHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTI0YjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZTsKKworY2xh
c3MgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBDb21waWxlRXJyb3JTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX0NvbXBpbGVFcnJvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAg
IHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fQ29tcGlsZUVycm9yU3RydWN0dXJlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzYzQ5NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworI2luY2x1ZGUgIldlYkFzc2VtYmx5Q29t
cGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJB
c3NlbWJseS5Db21waWxlRXJyb3IucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnByb3RvdHlw
ZVRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcgorIEBlbmQKKyAqLworCitXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZSogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7Cit9CisKK1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjFhMzljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
KworICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
Citwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKFZNJiwgU3Ry
dWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Njg1NWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKSB9OworCisv
KiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdp
biBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZQorIEBlbmQKKyAqLworCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5z
dGFuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRl
LCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgSW5z
dGFuY2UgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIHN0
YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAi
V2ViQXNzZW1ibHkuSW5zdGFuY2UiKSk7Cit9CisKK1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3RvciogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogdGhpc1Byb3Rv
dHlwZSwgU3RydWN0dXJlKiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3RvdHlwZSwg
dGhpc1N0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUq
IFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlKiBwcm90b3R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkluc3RhbmNl
IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cisg
ICAgbV9JbnN0YW5jZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7Cit9CisKK1dl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEp
Cit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5SW5zdGFuY2U7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK0Nh
bGxUeXBlIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0Owor
fQorCit2b2lkIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fSW5zdGFuY2VTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzM2YmQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3Rv
dHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBJbnN0YW5jZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fSW5zdGFuY2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
KiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9JbnN0YW5jZVN0cnVjdHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lZGUzYzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgiCisKKyNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworI2lu
Y2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6c19p
bmZvID0geyAiV2ViQXNzZW1ibHkuSW5zdGFuY2UucHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
JnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3Nl
bWJseUluc3RhbmNlCisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUq
IFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZT4odm0uaGVh
cCkpIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0
dXJlKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQg
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvdHlwZTo6V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45M2I0YWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
cHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY2MzcwZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVt
b3J5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNv
bnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IubHV0LmgKKyBAYmVnaW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2Vt
Ymx5TWVtb3J5CisgQGVuZAorICovCisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRv
ZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgTWVtb3J5IGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2Vt
Ymx5TWVtb3J5KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJXZWJBc3NlbWJseS5NZW1vcnkiKSk7Cit9CisKK1dlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJlKiB0aGlzU3RydWN0dXJlKQoreworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlz
UHJvdG90eXBlLCB0aGlzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisK
K1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
Cit2b2lkIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTWVt
b3J5IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgbV9NZW1vcnlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOworfQorCitX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQorewor
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJs
eU1lbW9yeTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKK30KKworQ2FsbFR5cGUg
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dl
YkFzc2VtYmx5TWVtb3J5OworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30KKwordm9pZCBX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxX
ZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
TWVtb3J5U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUyNTM2NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOworCitjbGFzcyBXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1
cmUqIE1lbW9yeVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fTWVtb3J5U3RydWN0dXJlLmdl
dCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Cisg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9NZW1vcnlTdHJ1Y3R1cmU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42MGU0ODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lk1lbW9yeS5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZv
LCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1lbW9yeSwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
TWVtb3J5CisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OldlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzZjg1MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jODM4YjNkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCIKKworI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJXZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseU1vZHVsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKSB9OworCisv
KiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmgKKyBAYmVnaW4g
Y29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TW9kdWxlCisgQGVuZAorICovCisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgTW9kdWxlIGNv
bnN0cnVjdG9yIHByb3BlcnR5IikpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0ZSogc3RhdGUpCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJXZWJBc3NlbWJs
eS5Nb2R1bGUiKSk7Cit9CisKK1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IqIFdlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSwgU3RydWN0dXJlKiB0
aGlzU3RydWN0dXJlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzUHJvdG90eXBlLCB0aGlzU3RydWN0dXJlKTsKKyAgICBy
ZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIHBy
b3RvdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBzdHJ1Y3R1cmUpOworfQorCitXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpXZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZTo6SG9zdDsKK30KKworQ2FsbFR5cGUgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxlOworICAgIHJldHVybiBDYWxs
VHlwZTo6SG9zdDsKK30KKwordm9pZCBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fTW9kdWxlU3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uM2FhNGFmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlOworCitjbGFzcyBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBXZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIE1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqLCBTdHJ1Y3R1cmUq
KTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9Nb2R1bGVT
dHJ1Y3R1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGIwY2U5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lk1vZHVsZS5w
cm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseU1vZHVs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSkgfTsKKwor
LyogU291cmNlIGZvciBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBw
cm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5TW9kdWxlCisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9
CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
Kwordm9pZCBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGU6OldlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOGE3MTNkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6
CisgICAgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzA2N2U1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIldlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5
UnVudGltZUVycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9y
Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaAorIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IKKyBAZW5kCisgKi8KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1i
bHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSBSdW50aW1lRXJyb3IgY29uc3RydWN0b3IgcHJv
cGVydHkiKSkpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIldlYkFzc2VtYmx5LlJ1bnRp
bWVFcnJvciIpKTsKK30KKworV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvciogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiB0aGlzUHJvdG90
eXBlLCBTdHJ1Y3R1cmUqIHRoaXNTdHJ1Y3R1cmUpCit7CisgICAgYXV0byogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRoaXNQcm90
b3R5cGUsIHRoaXNTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3Ry
dWN0dXJlKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK3ZvaWQgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVND
SUlMaXRlcmFsKCJSdW50aW1lRXJyb3IiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBtX1J1bnRpbWVFcnJvclN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIHN0cnVjdHVyZSk7Cit9CisKK1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3I6OldlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworQ29uc3RydWN0
VHlwZSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCitDYWxsVHlwZSBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCit2
b2lkIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9SdW50aW1lRXJyb3JTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM5MWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGU7CisKK2NsYXNzIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IFN0cnVjdHVyZSogUnVudGltZUVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9SdW50
aW1lRXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSosIFN0cnVjdHVy
ZSopOworCitwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X1J1bnRpbWVFcnJvclN0cnVjdHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRiYzY2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisKKyNpbmNsdWRlICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLnBy
b3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
Lmx1dC5oCisgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IKKyBA
ZW5kCisgKi8KKworV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIFdlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlPih2bS5oZWFwKSkg
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0
dXJlKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7
CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2
b2lkIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvclByb3RvdHlwZTo6V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzI5ZmIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0
aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNTNkOGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIldlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcikg
fTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmgKKyBA
YmVnaW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5VGFibGUKKyBAZW5kCisgKi8KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRh
YmxlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIFRhYmxl
IGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIldlYkFzc2Vt
Ymx5LlRhYmxlIikpOworfQorCitXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IqIFdlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUsIFN0cnVjdHVyZSogdGhp
c1N0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFdlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHRoaXNQcm90b3R5cGUsIHRoaXNTdHJ1Y3R1cmUpOworICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSogcHJvdG90eXBl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
QVNDSUlMaXRlcmFsKCJUYWJsZSIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51
bSB8IERvbnREZWxldGUpOworICAgIG1fVGFibGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1
Y3R1cmUpOworfQorCitXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OldlYkFzc2VtYmx5VGFi
bGVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCitDb25zdHJ1Y3RUeXBlIFdlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
SlNXZWJBc3NlbWJseVRhYmxlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQor
CitDYWxsVHlwZSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsSlNXZWJBc3NlbWJseVRhYmxlOworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30K
Kwordm9pZCBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX1RhYmxlU3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NGI1MTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU7CisKK2NsYXNzIFdlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVy
ZSogVGFibGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX1RhYmxlU3RydWN0dXJlLmdldCgp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIFdlYkFzc2Vt
Ymx5VGFibGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fVGFibGVTdHJ1Y3R1cmU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWMzMjA5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgorCisjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKKyNpbmNs
dWRlICJXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVU
YWJsZVdlYkFzc2VtYmx5VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
Lmx1dC5oCisgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlUYWJsZQorIEBlbmQKKyAq
LworCitXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
eworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGU6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzYzZTAwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
KworICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZh
dGU6CisgICAgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>