<?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>184689</bug_id>
          
          <creation_ts>2018-04-17 06:26:14 -0700</creation_ts>
          <short_desc>[WebAssembly][Modules] Implement function import from wasm modules</short_desc>
          <delta_ts>2018-04-18 02:49:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184600</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184717</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>jlewis3</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415109</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 06:26:14 -0700</bug_when>
    <thetext>[WebAssembly][Modules] Implement function import from wasm modules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415111</commentid>
    <comment_count>1</comment_count>
      <attachid>338105</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 06:37:02 -0700</bug_when>
    <thetext>Created attachment 338105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415112</commentid>
    <comment_count>2</comment_count>
      <attachid>338106</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 06:45:40 -0700</bug_when>
    <thetext>Created attachment 338106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415113</commentid>
    <comment_count>3</comment_count>
      <attachid>338107</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 06:55:46 -0700</bug_when>
    <thetext>Created attachment 338107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415114</commentid>
    <comment_count>4</comment_count>
      <attachid>338108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 07:00:05 -0700</bug_when>
    <thetext>Created attachment 338108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415182</commentid>
    <comment_count>5</comment_count>
      <attachid>338108</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-17 09:43:02 -0700</bug_when>
    <thetext>Comment on attachment 338108
Patch

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

Wooh! Very cool :)
r=me

&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:58
&gt; +            specifier-&gt;importedName() == analyzer.vm().propertyNames-&gt;timesIdentifier,

It&apos;s nicer to have an enum class here, like:
  specifier-&gt;importedName() == analyzer.vm().propertyNames-&gt;timesIdentifier ? IMPORT_ENTIRE_NAMESPACE : IMPORT_SINGLE_IDENTIFIER

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:203
&gt; +            false,

Ditto here for enum class.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:158
&gt; +                throwSyntaxError(exec, scope, makeString(&quot;Importing binding name &apos;default&apos; cannot be resolved by star export entries.&quot;));

This message confused me. How can it happen?

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:184
&gt; +            value = jsUndefined();

Isn&apos;t it a TDZ in this case? IIUC that&apos;s where you have a circular import, and you&apos;re going to try using it in evaluate() ? That should fail wasm loading, just like TDZ does for JS.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:230
&gt; +        }

Drop extra braces here and below.

&gt; Tools/Scripts/run-jsc-stress-tests:1017
&gt; +def runWebAssemblyDirect

Maybe it&apos;s better to rename runWebAssembly above? The one you&apos;re adding is really the &quot;run the simple thing&quot;, whereas above is &quot;run with all these extra imports&quot;. This could be a follow-up cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415207</commentid>
    <comment_count>6</comment_count>
      <attachid>338108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 10:41:21 -0700</bug_when>
    <thetext>Comment on attachment 338108
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:58
&gt;&gt; +            specifier-&gt;importedName() == analyzer.vm().propertyNames-&gt;timesIdentifier,
&gt; 
&gt; It&apos;s nicer to have an enum class here, like:
&gt;   specifier-&gt;importedName() == analyzer.vm().propertyNames-&gt;timesIdentifier ? IMPORT_ENTIRE_NAMESPACE : IMPORT_SINGLE_IDENTIFIER

Cool. Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:203
&gt;&gt; +            false,
&gt; 
&gt; Ditto here for enum class.

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:158
&gt;&gt; +                throwSyntaxError(exec, scope, makeString(&quot;Importing binding name &apos;default&apos; cannot be resolved by star export entries.&quot;));
&gt; 
&gt; This message confused me. How can it happen?

It is a bit complicated thing :) If &quot;default&quot; query hits with export *, and default export, this error happens. I&apos;ll add a test for this

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:184
&gt;&gt; +            value = jsUndefined();
&gt; 
&gt; Isn&apos;t it a TDZ in this case? IIUC that&apos;s where you have a circular import, and you&apos;re going to try using it in evaluate() ? That should fail wasm loading, just like TDZ does for JS.

If it is TDZ, it&apos;s empty. And the following `if (!value.isFunction())` should fail. But right now, we cannot `isFunction()` to JSEmpty. (We do not perform such predicate for JSEmpty).
So now, we just use undefined here. And it soon raises an error in the following switch statement. This meets the description in the proposal. https://github.com/WebAssembly/esm-integration/tree/master/proposals/esm-integration#instantiation

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:230
&gt;&gt; +        }
&gt; 
&gt; Drop extra braces here and below.

OK fixed.

&gt;&gt; Tools/Scripts/run-jsc-stress-tests:1017
&gt;&gt; +def runWebAssemblyDirect
&gt; 
&gt; Maybe it&apos;s better to rename runWebAssembly above? The one you&apos;re adding is really the &quot;run the simple thing&quot;, whereas above is &quot;run with all these extra imports&quot;. This could be a follow-up cleanup.

OK, I&apos;ll do it in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415211</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 11:00:13 -0700</bug_when>
    <thetext>Committed r230720: &lt;https://trac.webkit.org/changeset/230720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415212</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-17 11:02:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/39496166&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415350</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-17 17:01:31 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 184717</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338105</attachid>
            <date>2018-04-17 06:37:02 -0700</date>
            <delta_ts>2018-04-17 06:45:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184689-20180417223701.patch</filename>
            <type>text/plain</type>
            <size>64897</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDBjZWQ2ZTRkZTUzZjhmZTM5ZjU4N2U3MDU3YzkzM2JiYmNjMGY2Li44YzcxYTdiYzYzZjA2NWJh
MDUxZjk1NTJhOTE5OTc4Y2M3NDc3MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAxOC0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIEltcGxlbWVudCBmdW5jdGlv
biBpbXBvcnQgZnJvbSB3YXNtIG1vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmdW5jdGlvbiBpbXBvcnQg
ZnJvbSB3YXNtIG1vZHVsZXMuIFdlIG1vdmUgZnVuY3Rpb24gaW1wb3J0aW5nIHBhcnQKKyAgICAg
ICAgZnJvbSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UncyBjcmVhdGlvbiBmdW5jdGlvbiB0byBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluay4gVGhpcworICAgICAgICBpcyBiZWNhdXNlIGxpbmtp
bmcgdGhlc2UgZnVuY3Rpb25zIHJlcXVpcmVzIHRoYXQgYWxsIHRoZSBkZXBlbmRlbnQgbW9kdWxl
cyBhcmUgY3JlYXRlZC4KKyAgICAgICAgV2hpbGUgd2Ugd2FudCB0byBtb3ZlIGFsbCB0aGUgbGlu
a2luZyBmdW5jdGlvbmFsaXR5IGZyb20gSlNXZWJBc3NlbWJseUluc3RhbmNlIHRvCisgICAgICAg
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rLCB3ZSBkbyBub3QgdGhhdCBpbiB0aGlzIHBh
dGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UgbW92ZSBvbmx5CisgICAgICAgIGZ1bmN0aW9uIGltcG9y
dGluZyBwYXJ0IGJlY2F1c2UgZWZmaWNpZW50IGNvbXBpbGF0aW9uIG9mIFdlYkFzc2VtYmx5IG5l
ZWRzIHRvIGtub3cKKyAgICAgICAgdGhlIHR5cGUgb2YgV2ViQXNzZW1ibHlNZW1vcnkgKHNpZ25h
bGluZyBvciBib3VuZCBjaGVja2luZykuIFRoaXMgbmVlZHMgdG8ga25vdyBpbXBvcnRlZAorICAg
ICAgICBvciBhdHRhY2hlZCBXZWJBc3NlbWJseSBtZW1vcnkgb2JqZWN0LiBTbyB3ZSBjYW5ub3Qg
ZGVmZXIgdGhpcyBsaW5raW5nIHRvCisgICAgICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rIG5vdy4KKworICAgICAgICBUaGUgbGFyZ2VzdCBkaWZmZXJlbmNlIGZyb20gSlMgbW9kdWxl
IGxpbmtpbmcgaXMgdGhhdCBXZWJBc3NlbWJseSBtb2R1bGUgbGlua2luZyBsaW5rcworICAgICAg
ICBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUgYnkgc25hcHNob3R0aW5nLiBXaGVuIHlvdSBoYXZl
IGEgY3ljbGljIG1vZHVsZSBncmFwaCBsaWtlIHRoaXMsCisKKyAgICAgICAgLT4gSlMxIChleHBv
cnQgImZ1biIpIC0+IFdhc20xIChpbXBvcnQgImZ1biBmcm9tIEpTMSkgLSsKKyAgICAgICAgICAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICB3ZSBmYWlsIHRvIGxpbmsgdGhpcyBzaW5jZSAiZnVuIiBpcyBub3Qg
aW5zdGFudGlhdGVkIHdoZW4gV2FzbTEgaXMgZmlyc3QgbGlua2VkLiBUaGlzIGJlaGF2aW9yCisg
ICAgICAgIGlzIGRlc2NyaWJlZCBpbiBbMV0sIGFuZCB0ZXN0ZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9lc20taW50ZWdyYXRp
b24vdHJlZS9tYXN0ZXIvcHJvcG9zYWxzL2VzbS1pbnRlZ3JhdGlvbiNqcy0tLXdhc20tY3ljbGUt
d2hlcmUtanMtaXMtaGlnaGVyLWluLXRoZS1tb2R1bGUtZ3JhcGgKKworICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQpOgorICAgICAgICAoY2hlY2tF
eGNlcHRpb24pOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICBTbWFsbCBmaXhl
cyBmb3Igd2FzbSBtb2R1bGUgbG9hZGluZy4KKworICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5
emVNb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5
emVNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiBydW50aW1l
L0Fic3RyYWN0TW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVj
b3JkOjptb2R1bGVFbnZpcm9ubWVudE1heUJlTnVsbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0
TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICBOb3csIHdhc20gbW9kdWxlcyBjYW4gaGF2ZSBpbXBvcnQgd2hpY2ggaXMgbmFtZWQg
IioiLiBTbyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsuCisgICAgICAgIFNpbmNlIHdhc20g
bW9kdWxlcyBuZXZlciBoYXZlIG5hbWVzcGFjZSBpbXBvcnRpbmcsIHdlIGNoZWNrIHRoaXMgaW4g
SlMncyBtb2R1bGUgYW5hbHl6ZXIuCisKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMp
OgorICAgICAgICAqIHdhc20vV2FzbUNyZWF0aW9uTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6Omlu
c3RhbnRpYXRlKToKKyAgICAgICAgKEpTQzo6Y29tcGlsZUFuZEluc3RhbnRpYXRlKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlQcm90b3R5cGU6Omluc3RhbnRpYXRlKToKKyAgICAgICAgKEpT
Qzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOgorCiAyMDE4LTA0LTE2ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXZWJBc3NlbWJseV1bTW9k
dWxlc10gUHJvdG90eXBlIHdhc20gaW1wb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDEwYTQ0
YWZlNTE4OTVkY2UyMDBiZWZiODJlYmY4YjY2ZmU1ODJjMTUuLjc0NGRlMzBlZjdlNGZlOGM5Mjgw
OTcxNmIxYjQzMzlmNmZmMGM5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgY2xhc3MgV29ya2VyczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIGludCBydW5K
U0MoQ29tbWFuZExpbmUsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lk
IGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNF
eGNlcHRpb24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMg
dm9pZCBjaGVja0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBHbG9iYWxPYmplY3QqLCBib29sIGlzTGFz
dEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBDb21tYW5kTGluZSYsIGJvb2wmIHN1
Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1l
c3NhZ2U+IHsKIHB1YmxpYzoKQEAgLTE2MzIsNyArMTYzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSwgU291cmNlT3JpZ2luKEFTQ0lJTGl0ZXJhbCgi
d29ya2VyIikpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBjaGVja0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRydWUsIGV2YWx1YXRpb25FeGNlcHRp
b24sIHJlc3VsdCwgY29tbWFuZExpbmUsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCB0
cnVlLCBldmFsdWF0aW9uRXhjZXB0aW9uLCByZXN1bHQsIGNvbW1hbmRMaW5lLCBzdWNjZXNzKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0yMjU5
LDcgKzIyNTksNyBAQCBzdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQorc3RhdGljIHZvaWQgY2hlY2tFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBp
c0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUm
IG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogCkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhcwogICAg
IGlmICghb3B0aW9ucy5tX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZSB8fCAhaXNMYXN0RmlsZSkgewog
ICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiAhaGFzRXhjZXB0aW9uOwogICAgICAgICBpZiAo
b3B0aW9ucy5tX2R1bXAgJiYgIWhhc0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHByaW50ZigiRW5k
OiAlc1xuIiwgdmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCB2YWx1ZS50b1dU
RlN0cmluZyhleGVjKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGhhc0V4Y2VwdGlvbikK
ICAgICAgICAgICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgfSBl
bHNlCkBAIC0yMzI0LDEyICsyMzI0LDEyIEBAIHN0YXRpYyBib29sIHJ1bldpdGhPcHRpb25zKEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9ucykKICAgICAgICAg
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1
bGZpbGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsIFN0cmluZygpLCBbJiwgaXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7Ci0gICAg
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBpc0xhc3RGaWxlLCBmYWxz
ZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAg
IGNoZWNrRXhjZXB0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgZmFsc2UsIGV4
ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfSk7CiAKICAg
ICAgICAgICAgIEpTRnVuY3Rpb24qIHJlamVjdEhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBpc0xhc3RGaWxlXShF
eGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIGlzTGFzdEZpbGUsIHRydWUsIGV4ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNj
ZXNzKTsKKyAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGlzTGFzdEZpbGUsIHRydWUsIGV4ZWMtPmFyZ3VtZW50KDApLCBvcHRpb25zLCBzdWNjZXNzKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgICAgICAgICAgfSk7CiAKQEAgLTIzNDIsNyArMjM0Miw3IEBAIHN0YXRpYyBib29sIHJ1bldp
dGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9u
cykKICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGV2
YWx1YXRpb25FeGNlcHRpb24tPnZhbHVlKCk7Ci0gICAgICAgICAgICBjaGVja0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIGlzTGFzdEZpbGUsIGV2YWx1YXRpb25FeGNlcHRpb24sIHJldHVyblZhbHVl
LCBvcHRpb25zLCBzdWNjZXNzKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGlzTGFzdEZpbGUsIGV2YWx1YXRpb25F
eGNlcHRpb24sIHJldHVyblZhbHVlLCBvcHRpb25zLCBzdWNjZXNzKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHNjcmlwdEJ1ZmZlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCmluZGV4IDQyNmU1M2I5ZDFkNzdiMDBm
NDI5ZjliNzQ0OWFkZTQxMmQ1ZDU5ZTIuLmM1YzZkZjA5ZTMyZDRkMGFjNjY5ZGUwMmVjOTI0ZmQ0
YTA0YWYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNB
bmFseXplTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAKQEAgLTU0LDcgKzU0LDggQEAgdm9pZCBJbXBvcnREZWNsYXJhdGlv
bk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogICAgICAgICBh
bmFseXplci5tb2R1bGVSZWNvcmQoKS0+YWRkSW1wb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6Oklt
cG9ydEVudHJ5IHsKICAgICAgICAgICAgIG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpLAogICAg
ICAgICAgICAgc3BlY2lmaWVyLT5pbXBvcnRlZE5hbWUoKSwKLSAgICAgICAgICAgIHNwZWNpZmll
ci0+bG9jYWxOYW1lKCkKKyAgICAgICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1lKCksCisgICAg
ICAgICAgICBzcGVjaWZpZXItPmltcG9ydGVkTmFtZSgpID09IGFuYWx5emVyLnZtKCkucHJvcGVy
dHlOYW1lcy0+dGltZXNJZGVudGlmaWVyLAogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5j
cHAKaW5kZXggMmM4MDQyZGZlZDNkZWQ0YWE5MTE4YmQwOWJiMWI3NDFiMGQ1MDZmOS4uZDY4OWEx
MjkwNWQ2YWUzYTMxMjg0OTBhZGFiZjI5ODlmMGY3NjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMTYw
LDcgKzE2MCw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhCiAgICAgICAgIHJldHVybiBSZXNv
bHV0aW9uOjpub3RGb3VuZCgpOwogCiAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5
ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7Ci0gICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNl
KGV4ZWMtPnZtKCkpKQorICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSkKICAgICAgICAg
cmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKICAgICBBYnN0cmFjdE1vZHVsZVJlY29y
ZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9y
dEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwpAQCAtNzc2LDcgKzc3Niw3IEBAIHZvaWQgQWJzdHJhY3RN
b2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
CiAgICAgICAgIHJldHVybiBqc01vZHVsZVJlY29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVy
KTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKGF1dG8qIHdhc21Nb2R1bGVSZWNv
cmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQot
ICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVy
KTsKKyAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0
Y2hlciwgbnVsbHB0ciwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tTW9kdWxlTG9hZGVyKTsKICNl
bmRpZgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaAppbmRleCA1
NTg4YjJmMDM4NzRlOGY0YzM1YjU2YjhhMTdlZGZkNzY4ODZkODk5Li40NzM0Nzk1Zjk5N2NjZWJh
YjE4ZDBkNmM5ZWE3YTE5ZGU0NzJjZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKQEAgLTY1LDExICs2NSw3IEBAIGNs
YXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
ICAgICAgICAgSWRlbnRpZmllciBtb2R1bGVSZXF1ZXN0OwogICAgICAgICBJZGVudGlmaWVyIGlt
cG9ydE5hbWU7CiAgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwotCi0gICAgICAgIGJvb2wg
aXNOYW1lc3BhY2UoVk0mIHZtKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
aW1wb3J0TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXI7Ci0gICAgICAg
IH0KKyAgICAgICAgYm9vbCBpc05hbWVzcGFjZTsKICAgICB9OwogCiAgICAgdHlwZWRlZiBXVEY6
Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PiBPcmRlcmVkSWRlbnRpZmllclNldDsKQEAgLTExOSw2ICsxMTUsMTEgQEAgY2xhc3MgQWJzdHJh
Y3RNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKICAgICB9CiAKKyAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudE1heUJlTnVsbCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKKyAgICB9CisKICAgICB2b2lkIGxpbmso
RXhlY1N0YXRlKiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGM2MTczMTQ4
NTBiZjhjYWQyMTRjMjMyYjA0NzI2NTc2MTRiYTgzZTguLjE4M2ZiZDI4ZGRmYjhhNDAyZDkzZGY3
MjFhYTMyNDFkNTFjNzZmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDMsMTAgKzEwMyw5IEBAIHZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqCiB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5
TmFtZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7Ci0gICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNPYmplY3Qt
Pm1vZHVsZVJlY29yZCgpLT5pbXBvcnRFbnRyaWVzKCkpIHsKICAgICAgICAgICAgIGNvbnN0IEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVl
OwotICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSkpCisgICAgICAg
ICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKQogICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0RW50cnkubG9jYWxOYW1lKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAppbmRleCBhN2M5OWRjYzQ4MzMwNjBhOWMzMjY1YmYzNGI1YjFmZTI1OThiYjA5Li5kNjVmNjgw
YjczYjE2YTYzNzUxOTkyZjRjNzM3OTM2MTkwYjM5OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBl
eGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9y
dEVudHJ5ID0gcGFpci52YWx1ZTsKICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9y
dGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkgeworICAgICAgICBp
ZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UpIHsKICAgICAgICAgICAgIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVsZS0+Z2V0TW9kdWxlTmFt
ZXNwYWNlKGV4ZWMpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKICAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ3JlYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ3JlYXRpb25Nb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJmZThjYzBi
ZmQ0ZWU3NDQ3MzhmOTAzNDEzMWQ4OTc5YjM3ZmI1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DcmVhdGlvbk1vZGUuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20geworCitlbnVtIGNsYXNzIENyZWF0aW9uTW9kZSB7CisgICAgRnJvbUpT
LAorICAgIEZyb21Nb2R1bGVMb2FkZXIKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNt
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAyMzc5
OThjNjlkOTRkMTUzYjExMzYyOWI5ZmQ4Yjc0MTEzYjRiOThjLi5jZTEwYjA5NzRkMjhjYjg2NDBm
MDNjMDBjZDA2YTRiNDcyMTdiNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3Qt
Pmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaSkp
OyAvLyBUaGlzIGFsc28ga2VlcHMgdGhlIGZ1bmN0aW9ucycgSlNXZWJBc3NlbWJseUluc3RhbmNl
IGFsaXZlLgogfQogCi12b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlv
bihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNtQ29k
ZUJsb2NrLCBNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCit2b2lkIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVmPFdh
c206OkNvZGVCbG9jaz4mJiB3YXNtQ29kZUJsb2NrLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBX
YXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewogICAgIG1faW5zdGFuY2UtPmZpbmFs
aXplQ3JlYXRpb24odGhpcywgd2FzbUNvZGVCbG9jay5jb3B5UmVmKCkpOwogCkBAIC0xMjksOCAr
MTI5LDggQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZjxXYXNtOjoKICAgICBhdXRvKiBtb2R1bGVSZWNvcmQg
PSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihtX21vZHVsZU5hbWVzcGFjZU9iamVj
dC0+bW9kdWxlUmVjb3JkKCkpOwogICAgIG1vZHVsZVJlY29yZC0+cHJlcGFyZUxpbmsodm0sIHRo
aXMpOwogCi0gICAgaWYgKG1vZHVsZVJ1bk1vZGUgPT0gTW9kdWxlUnVuTW9kZTo6UnVuKSB7Ci0g
ICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwoKSk7CisgICAgaWYgKGNyZWF0
aW9uTW9kZSA9PSBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUykgeworICAgICAgICBtb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywganNOdWxsKCksIGltcG9ydE9iamVjdCwgY3JlYXRpb25Nb2RlKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgICAgICBK
U1ZhbHVlIHN0YXJ0UmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShleGVjKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBJZGVudGlmaWVyIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJp
dmF0ZU1vZHVsZUtleSgpCiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5h
bWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIpKTsKIH0K
IAotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0
dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4mJiBtb2R1bGUpCitKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIGpzTW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGlu
c3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSwgV2FzbTo6Q3JlYXRp
b25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CkBAIC0xNjMsMTAgKzE2Myw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGJlZm9yZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4
KGltcG9ydC5tb2R1bGUpLCAiOiIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSwgIiAi
LCBhZnRlcik7CiAgICAgfTsKIAotICAgIC8vIElmIHRoZSBsaXN0IG9mIG1vZHVsZS5pbXBvcnRz
IGlzIG5vdCBlbXB0eSBhbmQgVHlwZShpbXBvcnRPYmplY3QpIGlzIG5vdCBPYmplY3QsIGEgVHlw
ZUVycm9yIGlzIHRocm93bi4KLSAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXpl
KCkgJiYgIWltcG9ydE9iamVjdCkKLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjYW4ndCBtYWtlIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IGJlY2F1c2UgdGhlcmUgaXMgbm8gaW1wb3J0cyBPYmplY3QgYW5kIHRoZSBXZWJBc3NlbWJseS5N
b2R1bGUgcmVxdWlyZXMgaW1wb3J0cyIpKSk7Ci0KICAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLCB2
bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBtb2R1
bGVLZXksIG1vZHVsZUluZm9ybWF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIG51bGxwdHIpOwogCkBAIC0xODQsNjkgKzE4MCw1OSBAQCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjLCBjbwogCiAgICAgLy8gTGV0IGZ1bmNzLCBtZW1vcmllcyBhbmQgdGFibGVzIGJlIGluaXRp
YWxseS1lbXB0eSBsaXN0cyBvZiBjYWxsYWJsZSBKYXZhU2NyaXB0IG9iamVjdHMsIFdlYkFzc2Vt
Ymx5Lk1lbW9yeSBvYmplY3RzIGFuZCBXZWJBc3NlbWJseS5UYWJsZSBvYmplY3RzLCByZXNwZWN0
aXZlbHkuCiAgICAgLy8gTGV0IGltcG9ydHMgYmUgYW4gaW5pdGlhbGx5LWVtcHR5IGxpc3Qgb2Yg
ZXh0ZXJuYWwgdmFsdWVzLgotICAgIHVuc2lnbmVkIG51bUltcG9ydEZ1bmN0aW9ucyA9IDA7CiAg
ICAgdW5zaWduZWQgbnVtSW1wb3J0R2xvYmFscyA9IDA7CiAKICAgICBib29sIGhhc01lbW9yeUlt
cG9ydCA9IGZhbHNlOwogICAgIGJvb2wgaGFzVGFibGVJbXBvcnQgPSBmYWxzZTsKKworICAgIGlm
IChjcmVhdGlvbk1vZGUgPT0gV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpIHsKKyAgICAgICAg
Ly8gSWYgdGhlIGxpc3Qgb2YgbW9kdWxlLmltcG9ydHMgaXMgbm90IGVtcHR5IGFuZCBUeXBlKGlt
cG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgorICAgICAg
ICBpZiAobW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXplKCkgJiYgIWltcG9ydE9iamVjdCkK
KyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiY2FuJ3QgbWFrZSBXZWJBc3NlbWJseS5JbnN0YW5jZSBiZWNhdXNlIHRoZXJlIGlz
IG5vIGltcG9ydHMgT2JqZWN0IGFuZCB0aGUgV2ViQXNzZW1ibHkuTW9kdWxlIHJlcXVpcmVzIGlt
cG9ydHMiKSkpOworICAgIH0KKwogICAgIC8vIEZvciBlYWNoIGltcG9ydCBpIGluIG1vZHVsZS5p
bXBvcnRzOgogICAgIGZvciAoYXV0byYgaW1wb3J0IDogbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0
cykgewotICAgICAgICAvLyAxLiBMZXQgbyBiZSB0aGUgcmVzdWx0YW50IHZhbHVlIG9mIHBlcmZv
cm1pbmcgR2V0KGltcG9ydE9iamVjdCwgaS5tb2R1bGVfbmFtZSkuCi0gICAgICAgIEpTVmFsdWUg
aW1wb3J0TW9kdWxlVmFsdWUgPSBpbXBvcnRPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9kdWxlKSkpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgICAgICAvLyAy
LiBJZiBUeXBlKG8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yLgotICAgICAgICBp
ZiAoIWltcG9ydE1vZHVsZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJp
bXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50
aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOworICAgICAgICBJZGVudGlmaWVy
IG1vZHVsZU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRG
OChpbXBvcnQubW9kdWxlKSk7CisgICAgICAgIElkZW50aWZpZXIgZmllbGROYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSk7Cisg
ICAgICAgIG1vZHVsZVJlY29yZC0+YXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1vZHVsZU5hbWUpOwor
ICAgICAgICBtb2R1bGVSZWNvcmQtPmFkZEltcG9ydEVudHJ5KFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpJbXBvcnRFbnRyeSB7CisgICAgICAgICAgICBtb2R1bGVOYW1lLAorICAgICAgICAgICAg
ZmllbGROYW1lLAorICAgICAgICAgICAgSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQ
cml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJXZWJBc3NlbWJseUltcG9ydE5hbWUiKSksCisgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gU2tpcCBXYXNtOjpFeHRl
cm5hbEtpbmQ6OkZ1bmN0aW9uIHZhbGlkYXRpb24gaGVyZS4gSXQgd2lsbCBiZSBkb25lIGluIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rLgorICAgICAgICAvLyBFdmVudHVhbGx5IHdlIHdp
bGwgbW92ZSBhbGwgdGhlIGxpbmtpbmcgY29kZSBoZXJlIHRvIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rLgorICAgICAgICBzd2l0Y2ggKGltcG9ydC5raW5kKSB7CisgICAgICAgIGNhc2Ug
V2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlvbjoKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6VGFibGU6CisgICAgICAgIGNhc2UgV2FzbTo6
RXh0ZXJuYWxLaW5kOjpNZW1vcnk6CisgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpH
bG9iYWw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIDMuIExl
dCB2IGJlIHRoZSB2YWx1ZSBvZiBwZXJmb3JtaW5nIEdldChvLCBpLml0ZW1fbmFtZSkKLSAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGltcG9ydE1vZHVsZVZhbHVl
KTsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5maWVsZCkpKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgSlNW
YWx1ZSB2YWx1ZTsKKyAgICAgICAgaWYgKGNyZWF0aW9uTW9kZSA9PSBXYXNtOjpDcmVhdGlvbk1v
ZGU6OkZyb21KUykgeworICAgICAgICAgICAgLy8gMS4gTGV0IG8gYmUgdGhlIHJlc3VsdGFudCB2
YWx1ZSBvZiBwZXJmb3JtaW5nIEdldChpbXBvcnRPYmplY3QsIGkubW9kdWxlX25hbWUpLgorICAg
ICAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGltcG9ydE9iamVjdC0+Z2V0KGV4
ZWMsIG1vZHVsZU5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9iamVj
dCwgdGhyb3cgYSBUeXBlRXJyb3IuCisgICAgICAgICAgICBpZiAoIWltcG9ydE1vZHVsZVZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVUeXBl
RXJyb3IoZXhlYywgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0IiwgIm11c3QgYmUg
YW4gb2JqZWN0IiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZShp
bXBvcnRNb2R1bGVWYWx1ZSkpKTsKKworICAgICAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZh
bHVlIG9mIHBlcmZvcm1pbmcgR2V0KG8sIGkuaXRlbV9uYW1lKQorICAgICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGltcG9ydE1vZHVsZVZhbHVlKTsKKyAgICAg
ICAgICAgIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgZmllbGROYW1lKTsKKyAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0ganNVbmRlZmluZWQoKTsKIAog
ICAgICAgICBzd2l0Y2ggKGltcG9ydC5raW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJu
YWxLaW5kOjpGdW5jdGlvbjogewotICAgICAgICAgICAgLy8gNC4gSWYgaSBpcyBhIGZ1bmN0aW9u
IGltcG9ydDoKLSAgICAgICAgICAgIC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRo
cm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1
bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBv
cnQgZnVuY3Rpb24iLCAibXVzdCBiZSBjYWxsYWJsZSIpKSk7Ci0KLSAgICAgICAgICAgIFdhc206
Okluc3RhbmNlKiBjYWxsZWVJbnN0YW5jZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBXYXNtVG9X
YXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlv
biA9IG51bGxwdHI7Ci0gICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNP
YmplY3QqPih2YWx1ZSk7Ci0KLSAgICAgICAgICAgIC8vIGlpLiBJZiB2IGlzIGFuIEV4cG9ydGVk
IEZ1bmN0aW9uIEV4b3RpYyBPYmplY3Q6Ci0gICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9u
KiB3YXNtRnVuY3Rpb247Ci0gICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiog
d2FzbVdyYXBwZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1
bmN0aW9uKHZtLCBmdW5jdGlvbiwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkg
ewotICAgICAgICAgICAgICAgIC8vIGEuIElmIHRoZSBzaWduYXR1cmUgb2YgdiBkb2VzIG5vdCBt
YXRjaCB0aGUgc2lnbmF0dXJlIG9mIGksIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgot
ICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGltcG9ydGVkU2lnbmF0dXJlSW5k
ZXg7Ci0gICAgICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICBpbXBvcnRlZFNpZ25hdHVyZUluZGV4ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRl
eCgpOwotICAgICAgICAgICAgICAgICAgICBjYWxsZWVJbnN0YW5jZSA9ICZ3YXNtRnVuY3Rpb24t
Pmluc3RhbmNlKCktPmluc3RhbmNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRM
b2FkTG9jYXRpb24gPSB3YXNtRnVuY3Rpb24tPmVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGltcG9ydGVkU2lnbmF0dXJlSW5kZXggPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWduYXR1
cmVJbmRleCgpOwotICAgICAgICAgICAgICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBiZSB2Lltb
Q2xvc3VyZV1dLgotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFwcGVyRnVu
Y3Rpb24tPmZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFdh
c206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1h
dGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF07Ci0g
ICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2lnbmF0dXJlSW5kZXggIT0gZXhwZWN0ZWRTaWdu
YXR1cmVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQs
ICJpbXBvcnRlZCBmdW5jdGlvbiIsICJzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlk
ZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiKSkpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgLy8gaWlpLiBPdGhlcndpc2U6Ci0gICAgICAgICAgICAvLyBhLiBMZXQgY2xv
c3VyZSBiZSBhIG5ldyBob3N0IGZ1bmN0aW9uIG9mIHRoZSBnaXZlbiBzaWduYXR1cmUgd2hpY2gg
Y2FsbHMgdiBieSBjb2VyY2luZyBXZWJBc3NlbWJseSBhcmd1bWVudHMgdG8gSmF2YVNjcmlwdCBh
cmd1bWVudHMgdmlhIFRvSlNWYWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LCBpZiBhbnksIGJ5
IGNvZXJjaW5nIHZpYSBUb1dlYkFzc2VtYmx5VmFsdWUuCi0gICAgICAgICAgICAvLyBOb3RlOiBk
b25lIGFzIHBhcnQgb2YgUGxhbiBjb21waWxhdGlvbi4KLSAgICAgICAgICAgIC8vIGl2LiBBcHBl
bmQgdiB0byBmdW5jcy4KLSAgICAgICAgICAgIC8vIE5vdGU6IGFkZGluZyB0aGUgSlNDZWxsIHRv
IHRoZSBpbnN0YW5jZSBsaXN0IGZ1bGZpbGxzIGNsb3N1cmUgcmVxdWlyZW1lbnRzIGIuIGFib3Zl
ICh0aGUgV2ViQXNzZW1ibHkuSW5zdGFuY2Ugd2lsIGJlIGtlcHQgYWxpdmUpIGFuZCB2LiBiZWxv
dyAodGhlIEpTRnVuY3Rpb24pLgotCi0gICAgICAgICAgICBBU1NFUlQobnVtSW1wb3J0RnVuY3Rp
b25zID09IGltcG9ydC5raW5kSW5kZXgpOwotICAgICAgICAgICAgYXV0byogaW5mbyA9IGpzSW5z
dGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb25JbmZvKG51bUltcG9ydEZ1bmN0aW9ucyk7
Ci0gICAgICAgICAgICBpbmZvLT50YXJnZXRJbnN0YW5jZSA9IGNhbGxlZUluc3RhbmNlOwotICAg
ICAgICAgICAgaW5mby0+d2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gPSBlbnRyeXBvaW50TG9h
ZExvY2F0aW9uOwotICAgICAgICAgICAganNJbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5j
dGlvbjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihudW1JbXBvcnRGdW5jdGlvbnMpLT5zZXQo
dm0sIGpzSW5zdGFuY2UsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrbnVtSW1wb3J0RnVuY3Rp
b25zOwotICAgICAgICAgICAgLy8gdi4gQXBwZW5kIGNsb3N1cmUgdG8gaW1wb3J0cy4KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5k
OjpUYWJsZTogewpAQCAtMzM3LDYgKzMyMyw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBBU1NFUlQobW9kdWxlUmVjb3JkLT5pbXBv
cnRFbnRyaWVzKCkuc2l6ZSgpID09IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMuc2l6ZSgpKTsK
IAogICAgIHsKICAgICAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5ICYmIG1vZHVs
ZUluZm9ybWF0aW9uLm1lbW9yeS5pc0ltcG9ydCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IDAzMmI1NjVm
MDgxZTBlMDcxYmZjZGIzYWJlNzliOTllNzg5MTNmOWIuLjNjYTQ2ZDZkYmZkZTk0OTU4NTBmZTA5
ZDljZGVhNTgxYTU3ZWU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1v
cnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKKyNpbmNsdWRlICJXYXNtQ3Jl
YXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiV2FzbUluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCkBAIC01MiwxMyArNTMsMTIgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIGZp
bmFsIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKTsKIAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVj
dHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtl
eSwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVy
ZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYsIFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBlbnVtIGNsYXNzIE1vZHVsZVJ1
bk1vZGUgeyBSdW4sIE5vbmUgfTsKLSAgICB2b2lkIGZpbmFsaXplQ3JlYXRpb24oVk0mLCBFeGVj
U3RhdGUqLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmLCBNb2R1bGVSdW5Nb2RlKTsKKyAgICB2b2lk
IGZpbmFsaXplQ3JlYXRpb24oVk0mLCBFeGVjU3RhdGUqLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYm
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwogICAgIAogICAg
IFdhc206Okluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0K
ICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkgeyBy
ZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IuY3BwCmluZGV4IDQ5NjA5ODkzYWUyNWZlOGYxMjcwZmRhNjFjNTZjYzgxMDAzMGYx
MTcuLjIwODllNGY3MTUzYjI2OTBmYTc4YTNlYmE3MjY1MTQ3OWZjZDVlODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVj
U3RhdGUqIGV4CiAgICAgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2
bSwgZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCks
IG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVs
ZT4obW9kdWxlLT5tb2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIG1vZHVsZSwgaW1wb3J0T2JqZWN0
LCBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSks
IFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1v
ZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVt
b3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNF
eGNlcHRpb24pLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGU6OlJ1bik7Cisg
ICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCku
Y29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2Fz
bTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBpbXBv
cnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDBlNDg0NzU4YTRjMWQ2MTBkYjJhODhhZmQ3YzZj
OWY2YmE1M2E0MWQuLjkzZjEwZWQ0ZjlkYTk4YjcwNzEwNWM3NTU4YWU5Mzg5NTAzOTViMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6cHJlcGFyZUxpbmsoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3Rh
bmMKICAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogfQogCi12b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSkKK3Zv
aWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2Rl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMTA1LDYgKzEwNSwxMjggQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUpCiAgICAgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlID0gbV9pbnN0YW5jZS0+bW9kdWxlKCk7CiAgICAgY29uc3QgV2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uID0gbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpOwogCisgICAgYXV0byBleGNlcHRpb24gPSBbJl0gKEpTT2JqZWN0KiBlcnJv
cikgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpOworICAgIH07
CisKKyAgICBhdXRvIGltcG9ydEZhaWxNZXNzYWdlID0gWyZdIChjb25zdCBXYXNtOjpJbXBvcnQm
IGltcG9ydCwgY29uc3QgY2hhciogYmVmb3JlLCBjb25zdCBjaGFyKiBhZnRlcikgeworICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZyhiZWZvcmUsICIgIiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQu
bW9kdWxlKSwgIjoiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5maWVsZCksICIgIiwgYWZ0ZXIp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbXBvcnRFbnRyeUluZGV4ID0gMDsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGltcG9ydCA6IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMpIHsKKyAgICAg
ICAgSWRlbnRpZmllciBtb2R1bGVOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0
cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSkpOworICAgICAgICBJZGVudGlmaWVyIGZpZWxk
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9y
dC5maWVsZCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAoY3JlYXRpb25N
b2RlID09IFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKSB7CisgICAgICAgICAgICAvLyAxLiBM
ZXQgbyBiZSB0aGUgcmVzdWx0YW50IHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0KGltcG9ydE9iamVj
dCwgaS5tb2R1bGVfbmFtZSkuCisgICAgICAgICAgICBKU1ZhbHVlIGltcG9ydE1vZHVsZVZhbHVl
ID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgLy8gMi4gSWYgVHlw
ZShvKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci4KKyAgICAgICAgICAgIGlmICgh
aW1wb3J0TW9kdWxlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJp
bXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50
aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOworCisgICAgICAgICAgICAvLyAz
LiBMZXQgdiBiZSB0aGUgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQobywgaS5pdGVtX25hbWUpCisg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oaW1wb3J0TW9k
dWxlVmFsdWUpOworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBmaWVsZE5h
bWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRl
ZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAg
ICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQo
ZXhlYywgZmllbGROYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGlu
ZyBuYW1lICciLCBTdHJpbmcoZmllbGROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMs
IHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZmll
bGROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11
bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFt
ZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVz
b2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBp
bXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50TWF5
QmVOdWxsKCk7CisgICAgICAgICAgICAvLyBJdCBtZWFucyB0aGF0IHRhcmdldCBtb2R1bGUgaXMg
bm90IGxpbmtlZCB5ZXQuIEluIHdhc20gbG9hZGluZywgd2UgYWxsb3cgdGhpcyBzaW5jZSB3ZSBk
byBub3Qgc29sdmUgY3ljbGljIHJlc29sdXRpb24gYXMgaWYgSlMncyBiaW5kaW5ncy4KKyAgICAg
ICAgICAgIC8vIEF0IHRoYXQgdGltZSwgZXJyb3Igb2NjdXJzIHNpbmNlIHx2YWx1ZXwgaXMgYW4g
ZW1wdHksIGFuZCBsYXRlciB8dmFsdWV8IGJlY29tZXMgYW4gdW5kZWZpbmVkLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2VzbS1pbnRlZ3JhdGlvbi90cmVl
L21hc3Rlci9wcm9wb3NhbHMvZXNtLWludGVncmF0aW9uI2pzLS0td2FzbS1jeWNsZS13aGVyZS1q
cy1pcy1oaWdoZXItaW4tdGhlLW1vZHVsZS1ncmFwaAorICAgICAgICAgICAgaWYgKGltcG9ydGVk
RW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUg
PSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAg
ICAgICAgYXV0byBpdGVyID0gc3ltYm9sVGFibGUtPmZpbmQobG9ja2VyLCByZXNvbHV0aW9uLmxv
Y2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpdGVyICE9IHN5bWJvbFRh
YmxlLT5lbmQobG9ja2VyKSk7CisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50
cnkgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW1wb3J0ZWRFbnZpcm9ubWVudC0+aXNWYWxpZFNj
b3BlT2Zmc2V0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIC8vIFNu
YXBzaG90dGluZyBhIHZhbHVlLgorICAgICAgICAgICAgICAgIHZhbHVlID0gaW1wb3J0ZWRFbnZp
cm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUg
PSBqc1VuZGVmaW5lZCgpOworCisgICAgICAgIHN3aXRjaCAoaW1wb3J0LmtpbmQpIHsKKyAgICAg
ICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7CisgICAgICAgICAgICAvLyA0
LiBJZiBpIGlzIGEgZnVuY3Rpb24gaW1wb3J0OgorICAgICAgICAgICAgLy8gaS4gSWYgSXNDYWxs
YWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxN
ZXNzYWdlKGltcG9ydCwgImltcG9ydCBmdW5jdGlvbiIsICJtdXN0IGJlIGNhbGxhYmxlIikpKTsK
KworICAgICAgICAgICAgV2FzbTo6SW5zdGFuY2UqIGNhbGxlZUluc3RhbmNlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBl
bnRyeXBvaW50TG9hZExvY2F0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBm
dW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKKworICAgICAgICAgICAgLy8gaWku
IElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdDoKKyAgICAgICAgICAg
IFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKKyAgICAgICAgICAgIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOworICAgICAgICAgICAgaWYg
KGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGZ1bmN0aW9uLCB3YXNtRnVuY3Rpb24sIHdh
c21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgLy8gYS4gSWYgdGhlIHNpZ25h
dHVyZSBvZiB2IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgaSwgdGhyb3cgYSBXZWJB
c3NlbWJseS5MaW5rRXJyb3IuCisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
aW1wb3J0ZWRTaWduYXR1cmVJbmRleDsKKyAgICAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGVkU2lnbmF0dXJlSW5kZXggPSB3YXNtRnVu
Y3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxlZUluc3Rh
bmNlID0gJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IHdhc21GdW5jdGlvbi0+ZW50cnlwb2lu
dExvYWRMb2NhdGlvbigpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGltcG9ydGVkU2lnbmF0dXJlSW5kZXggPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWdu
YXR1cmVJbmRleCgpOworICAgICAgICAgICAgICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBiZSB2
LltbQ2xvc3VyZV1dLgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFwcGVy
RnVuY3Rpb24tPmZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZv
cm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF07
CisgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2lnbmF0dXJlSW5kZXggIT0gZXhwZWN0ZWRT
aWduYXR1cmVJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBv
cnQsICJpbXBvcnRlZCBmdW5jdGlvbiIsICJzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJv
dmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiKSkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gaWlpLiBPdGhlcndpc2U6CisgICAgICAgICAgICAvLyBhLiBMZXQg
Y2xvc3VyZSBiZSBhIG5ldyBob3N0IGZ1bmN0aW9uIG9mIHRoZSBnaXZlbiBzaWduYXR1cmUgd2hp
Y2ggY2FsbHMgdiBieSBjb2VyY2luZyBXZWJBc3NlbWJseSBhcmd1bWVudHMgdG8gSmF2YVNjcmlw
dCBhcmd1bWVudHMgdmlhIFRvSlNWYWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LCBpZiBhbnks
IGJ5IGNvZXJjaW5nIHZpYSBUb1dlYkFzc2VtYmx5VmFsdWUuCisgICAgICAgICAgICAvLyBOb3Rl
OiBkb25lIGFzIHBhcnQgb2YgUGxhbiBjb21waWxhdGlvbi4KKyAgICAgICAgICAgIC8vIGl2LiBB
cHBlbmQgdiB0byBmdW5jcy4KKyAgICAgICAgICAgIC8vIE5vdGU6IGFkZGluZyB0aGUgSlNDZWxs
IHRvIHRoZSBpbnN0YW5jZSBsaXN0IGZ1bGZpbGxzIGNsb3N1cmUgcmVxdWlyZW1lbnRzIGIuIGFi
b3ZlICh0aGUgV2ViQXNzZW1ibHkuSW5zdGFuY2Ugd2lsIGJlIGtlcHQgYWxpdmUpIGFuZCB2LiBi
ZWxvdyAodGhlIEpTRnVuY3Rpb24pLgorCisgICAgICAgICAgICBhdXRvKiBpbmZvID0gbV9pbnN0
YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0LmtpbmRJbmRleCk7Cisg
ICAgICAgICAgICBpbmZvLT50YXJnZXRJbnN0YW5jZSA9IGNhbGxlZUluc3RhbmNlOworICAgICAg
ICAgICAgaW5mby0+d2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gPSBlbnRyeXBvaW50TG9hZExv
Y2F0aW9uOworICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlv
bjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KGltcG9y
dC5raW5kSW5kZXgpLT5zZXQodm0sIG1faW5zdGFuY2UuZ2V0KCksIGZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5k
OjpUYWJsZTogeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBX
YXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDogeworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIFN5bWJvbFRhYmxl
KiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKICAgICB1
bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50ID0gY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENv
dW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oCmluZGV4IDQxN2EwYzYwODM3ZDQ1Y2ViNTYzMWY0YjBmNDc1
ZGIzYjVmYjM4OWEuLjMxNmYzMzdkZWMwYzliZTYxM2NiYjNkNWE1ZjQ0OGY4Mzc2MzllZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IAogI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiV2FzbUNyZWF0
aW9uTW9kZS5oIgogI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQg
ZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewogICAgIHN0YXRpYyBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZCogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAKICAgICB2
b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7Ci0gICAgdm9pZCBs
aW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgdm9pZCBsaW5rKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwg
V2FzbTo6Q3JlYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCmluZGV4IDRlZjY0N2EzYmFh
NGNjZTUzZWJjOTQ0MzczYjdlYzllMGEzNjg5YTYuLmM3YWQwZTNkZGNhOGQ2NDQ0OWFmMTU5MTcx
YWZjYjg2YTM4MGVhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKQEAgLTEyMiwxMCArMTIyLDEwIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhl
Y1N0YXRlKiBleGVjKQogfQogCiBlbnVtIGNsYXNzIFJlc29sdmUgeyBXaXRoSW5zdGFuY2UsIFdp
dGhNb2R1bGVSZWNvcmQsIFdpdGhNb2R1bGVBbmRJbnN0YW5jZSB9Owotc3RhdGljIHZvaWQgcmVz
b2x2ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiBjb2RlQmxvY2ssIFJlc29sdmUgcmVzb2x2ZUtp
bmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQor
c3RhdGljIHZvaWQgcmVzb2x2ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVm
ZXJyZWQqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UsIEpTV2ViQXNz
ZW1ibHlNb2R1bGUqIG1vZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVmPFdhc206OkNv
ZGVCbG9jaz4mJiBjb2RlQmxvY2ssIFJlc29sdmUgcmVzb2x2ZUtpbmQsIFdhc206OkNyZWF0aW9u
TW9kZSBjcmVhdGlvbk1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBXVEZNb3Zl
KGNvZGVCbG9jayksIG1vZHVsZVJ1bk1vZGUpOworICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0
aW9uKHZtLCBleGVjLCBXVEZNb3ZlKGNvZGVCbG9jayksIGltcG9ydE9iamVjdCwgY3JlYXRpb25N
b2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhlYywgc2NvcGUs
IHByb21pc2UpKTsKIAogICAgIGlmIChyZXNvbHZlS2luZCA9PSBSZXNvbHZlOjpXaXRoSW5zdGFu
Y2UpCkBAIC0xNDQsMjggKzE0NCwyOSBAQCBzdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBcwogICAgIENM
RUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogfQogCi1zdGF0aWMg
dm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBSZXNvbHZlIHJlc29sdmVLaW5k
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxlUnVuTW9kZSkKK3N0
YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VE
ZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCog
aW1wb3J0T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2
ZUtpbmQsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHBv
dGVudGlhbGx5IHJlY29tcGlsaW5nIGEgbW9kdWxlLiBXZSBmaXJzdCBnYXRoZXIgYWxsIHRoZSBp
bXBvcnQvbWVtb3J5IGluZm9ybWF0aW9uIHByaW9yIHRvIGNvbXBpbGluZyBjb2RlLgotICAgIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZSh2bSwgZXhlYywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxX
YXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1v
ZHVsZUtleSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1
bGUtPm1vZHVsZSgpKSwgY3JlYXRpb25Nb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9k
dWxlIGFsaXZlLgogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGlu
c3RhbmNlKSk7CisgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1w
b3J0T2JqZWN0KSk7CiAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9t
aXNlKHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8gTm90ZTogVGhpcyBj
b21wbGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1lZGlhdGVseS4KLSAg
ICBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNl
LT5tZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFj
a1R5cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgbW9kdWxlUnVu
TW9kZSwgJnZtXSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUg
eworICAgIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5z
dGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNh
bGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVz
b2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZD
b2RlQmxvY2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2FzbTo6Q29kZUJsb2NrPiBjb2Rl
QmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7Ci0gICAgICAgIHZtLnByb21pc2VEZWZlcnJl
ZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9k
dWxlLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3Zl
KGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1l
ci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwg
aW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9
IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAg
ICAgIHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGNvZGVCbG9j
ay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSk7CisgICAgICAg
ICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRP
YmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlKTsKICAgICAgICAgfSk7CiAgICAgfSksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIs
ICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJ
bnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2UsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBidWZmZXIsIEpTT2Jq
ZWN0KiBpbXBvcnRPYmplY3QsIFJlc29sdmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQorc3RhdGljIHZvaWQgY29tcGlsZUFu
ZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGJ1ZmZlciwgSlNP
YmplY3QqIGltcG9ydE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25N
b2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAKQEAgLTE4MCw4ICsxODEsOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFu
dGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcgogICAg
IFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0s
IGV4ZWMsIGJ1ZmZlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGV4
ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKLSAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMo
JnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6
TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNl
bGwsIGdsb2JhbE9iamVjdCwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bV0gKFdhc206
Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNl
LCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RG
TW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoKSBtdXRhYmxl
IHsKKyAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZN
b3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+
KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVz
b2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXIt
PnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxl
S2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVL
aW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGV4
ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShy
ZXN1bHQpKTsKQEAgLTE5Miw3ICsxOTMsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFu
dGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcgogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKIAotICAgICAgICAgICAgaW5z
dGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVL
ZXksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlKTsKKyAgICAgICAgICAgIGluc3RhbnRpYXRl
KHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5LCByZXNv
bHZlS2luZCwgY3JlYXRpb25Nb2RlKTsKICAgICAgICAgfSk7CiAgICAgfSkpOwogfQpAQCAtMjAw
LDcgKzIwMSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiBKU1ZhbHVlIFdlYkFzc2VtYmx5
UHJvdG90eXBlOjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgYXJndW1lbnQp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBjb21waWxlQW5kSW5zdGFudGlhdGUo
dm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZUtleSwgYXJndW1lbnQsIG51bGxwdHIsIFJlc29sdmU6
OldpdGhNb2R1bGVSZWNvcmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6
Tm9uZSk7CisgICAgY29tcGlsZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1
bGVLZXksIGFyZ3VtZW50LCBudWxscHRyLCBSZXNvbHZlOjpXaXRoTW9kdWxlUmVjb3JkLCBXYXNt
OjpDcmVhdGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogICAgIHJldHVybiBwcm9taXNlLT5w
cm9taXNlKCk7CiB9CiAKQEAgLTIyNSw5ICsyMjYsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBl
eGVjLT5hcmd1bWVudCgwKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBtb2R1bGUgPSBqc0R5bmFt
aWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZmlyc3RBcmd1bWVudCkpCi0gICAgICAg
ICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2Jq
ZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgUmVz
b2x2ZTo6V2l0aEluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGU6
OlJ1bik7CisgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVN
b2R1bGVLZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZy
b21KUyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29tcGlsZUFuZEluc3Rh
bnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVBy
aXZhdGVNb2R1bGVLZXkoKSwgZmlyc3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpX
aXRoTW9kdWxlQW5kSW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9k
ZTo6UnVuKTsKKyAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMs
IHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgp
LCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0
YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNzcxODNjY2MyNTVlYjc3
NDY4YzU1MWY0Mjg1YzU0ZmMxNTUyODQuLjFiNjUwYmY2OWYyNzEwMWEyMWQ3ZGE3OTA3MDk3ZDVh
NTI0YWE5ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIEltcGxlbWVu
dCBmdW5jdGlvbiBpbXBvcnQgZnJvbSB3YXNtIG1vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBydW5XZWJBc3NlbWJseURpcmVjdCwgd2hp
Y2ggcnVucyB3YXNtIGZpbGUgZGlyZWN0bHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOgorCiAyMDE4LTA0LTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xheW91dFJlbG9hZGVkXSBNaW5vciBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0KCkgY2xlYW51cC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4
IGExODZjMDlmY2U5OWJkZGQ4NjlkY2RmZmZjZmE2NGU1ZjI4ZjY5YTkuLjI0YTgzYzc0NDhjNWM2
ODM0ZTUzNTg1MmY1NjQwMTNjYTU1MWM0YzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0
cwpAQCAtMTAxNCw2ICsxMDE0LDE5IEBAIGRlZiBydW5XZWJBc3NlbWJseQogICAgIGVuZAogZW5k
CiAKK2RlZiBydW5XZWJBc3NlbWJseURpcmVjdAorICAgIHJldHVybiBpZiAhJGppdFRlc3RzCisg
ICAgcmV0dXJuIGlmICEkaXNGVExQbGF0Zm9ybQorICAgIHJ1bigiZGVmYXVsdC13YXNtIiwgIi1t
IiwgKkZUTF9PUFRJT05TKQorICAgIGlmICRtb2RlICE9ICJxdWljayIKKyAgICAgICAgcnVuKCJ3
YXNtLW5vLWNqaXQteWVzLXRscy1jb250ZXh0IiwgIi1tIiwgIi0tdXNlRmFzdFRMU0Zvcldhc21D
b250ZXh0PXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TKSkKKyAgICAgICAg
cnVuKCJ3YXNtLWVhZ2VyLWpldHRpc29uIiwgIi1tIiwgIi0tZm9yY2VDb2RlQmxvY2tUb0pldHRp
c29uRHVlVG9PbGRBZ2U9dHJ1ZSIsICpGVExfT1BUSU9OUykKKyAgICAgICAgcnVuKCJ3YXNtLW5v
LWNhbGwtaWMiLCAiLW0iLCAiLS11c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHM9ZmFs
c2UiLCAqRlRMX09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1uby10bHMtY29udGV4dCIsICIt
bSIsICItLXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dD1mYWxzZSIsICpGVExfT1BUSU9OUykKKyAg
ICAgICAgcnVuKCJ3YXNtLXNsb3ctbWVtb3J5IiwgIi1tIiwgIi0tdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5PWZhbHNlIiwgKkZUTF9PUFRJT05TKQorICAgIGVuZAorZW5kCisKIGRlZiBydW5XZWJB
c3NlbWJseUVtc2NyaXB0ZW4obW9kZSkKICAgICBjYXNlIG1vZGUKICAgICB3aGVuIDpza2lwCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVh
NzFjMWIwZTJjZTg3MjY3OWMzOWE2YTQ3ODg3ODhkODZmNGI0NDcuLjg0NmIzNmZlYjFlMzU3NWEy
N2UyNjM5ZGIzYzE3MGQ0M2MxMTc3MjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTgtMDQtMTcgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYkFzc2VtYmx5
XVtNb2R1bGVzXSBJbXBsZW1lbnQgZnVuY3Rpb24gaW1wb3J0IGZyb20gd2FzbSBtb2R1bGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20ueWFt
bDoKKyAgICAgICAgKiB3YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS5qczogQWRkZWQuCisgICAg
ICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvZW50cnkuanM6IEFkZGVkLgorICAgICAg
ICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQucmV0dXJuNDIpOgorICAgICAgICAq
IHdhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvcnVuLWZyb20td2FzbS53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVs
ZXMvcnVuLWZyb20td2FzbS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy9ydW4t
ZnJvbS13YXNtL2NoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5jaGVjayk6CisgICAg
ICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvaW1wb3J0cy53YXNt
OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMv
aW1wb3J0cy53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWltcG9ydHMt
anMtZXhwb3J0cy9zdW0uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LnN1bSk6CisgICAgICAg
ICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5q
czogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBv
cnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhc206IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9k
dWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXQ6
IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0
cy13YXNtLWV4cG9ydHMvcmUtZXhwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVs
ZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXNtOiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2Fz
bS1leHBvcnRzL3N1bS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWlt
cG9ydHMtd2FzbS1leHBvcnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2Fz
bS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhc206IEFkZGVkLgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRlZC4K
KyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2Fz
bTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9y
dHMvc3VtLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUu
anM6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL2VudHJ5Lndh
c206IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL2VudHJ5Lndh
dDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvc3VtLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0LnN1bSk6Cisg
ICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS5qczogQWRkZWQuCisgICAgICAg
ICogd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRyeS53YXNtOiBBZGRlZC4KKyAgICAg
ICAgKiB3YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdDogQWRkZWQuCisgICAg
ICAgICogd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9zdW0ud2FzbTogQWRkZWQuCisgICAg
ICAgICogd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9zdW0ud2F0OiBBZGRlZC4KKwogMjAx
OC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGltcG9ydApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA4N2M4ODAyOWE3
YTU1MDFjZDU2MGM1NDFkYWE4ZTE5MzNkYTgzOTg4Li45ODk0ZjlkOTc5NjRiODdhYmIzN2Y2YTQ3
MDA1NGI2YTU3YTFhZDNhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysgYi9KU1Rl
c3RzL3dhc20ueWFtbApAQCAtMTc4LDMgKzE3OCw2IEBACiAgIGNtZDogcnVuV2ViQXNzZW1ibHlT
cGVjVGVzdCA6bm9ybWFsCiAtIHBhdGg6IHdhc20vc3BlYy10ZXN0cy91dGY4LWltcG9ydC1tb2R1
bGUud2FzdC5qcwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorCistIHBh
dGg6IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhc20KKyAgY21kOiBydW5XZWJBc3NlbWJs
eURpcmVjdApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS5q
cyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRm
MGY4NjZjMjlhMzg5Nzg0Nzk1NDEyMzNlOTA3NGY4Nzk4NzQxNAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanMKQEAgLTAsMCArMSw0IEBACitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCgiLi9qcy13YXNt
LWN5Y2xlL2VudHJ5LmpzIikudGhlbigkdm0uYWJvcnQsIGZ1bmN0aW9uIChlcnJvcikgeworICAg
IGFzc2VydC5lcShTdHJpbmcoZXJyb3IpLCBgRXJyb3I6IGltcG9ydCBmdW5jdGlvbiAuL2VudHJ5
LmpzOnJldHVybjQyIG11c3QgYmUgY2FsbGFibGVgKTsKK30pLnRoZW4oZnVuY3Rpb24gKCkgeyB9
LCAkdm0uYWJvcnQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1j
eWNsZS9lbnRyeS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvZW50cnku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjAxNDM2NDRhMDFjNzM2Nzc0ODhhODFkZTkwYThjYzQ5YTFlMmViZAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvZW50
cnkuanMKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgeyBzdW0gfSBmcm9tICIuL3N1bS53YXNtIgor
ZXhwb3J0IGZ1bmN0aW9uIHJldHVybjQyKCkgeworICAgIHJldHVybiA0MjsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvc3VtLndhc20gYi9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YzE2ZTVj
ZmFjNjFlODhlZmQzYmFlM2YxNDYxZDE1MTU3NTBhYTcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDcwCnpjbVZ+JEl9VSYjNUN5PlptSTgkWCptNDMpajBieyhoNkQ7ZWgxRmkmOFJYZHJmTEBaUVFX
TDBoKFojIztITklIcQpYRzBOSmJ6WWwxSHUkRUAtMkQrMExmZFNTM3sqZXRHCgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5
Y2xlL3N1bS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2UyMjNmNzZjZTQyYjI2MjI1MGI1YmViNzA2MjUzOWY1YWU1NTk1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvc3VtLndh
dApAQCAtMCwwICsxLDcgQEAKKyhtb2R1bGUKKyAgICAoaW1wb3J0ICIuL2VudHJ5LmpzIiAicmV0
dXJuNDIiIChmdW5jICRyZXR1cm40MiAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVu
YyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChleHBvcnQg
InN1bSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAocmVzdWx0
IGkzMikKKyAgICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAg
ICAgIGkzMi5hZGQpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20t
d2FzbS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXNtCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3MzQ1ZTZjZWM1NWRhYzZhYWRiZGMyZjQ2MmUzMjY3NTgzNGExMzEKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDcxCnpjbVpRYkVZNCtRVXw/WTZVYGsrTU5NTmpJVXtZZH4oOTxzfSZD
XlhRJUZvcDsyUCk3eyZQWXdwKjJea3AxdjN+SgpWblZBP0ZJMmFrWkkyaFImOUpLQCh4Qih6dTRs
ViF5CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9k
dWxlcy9ydW4tZnJvbS13YXNtLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdh
c20ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRlNTFlNTBhMjE5YThjMTE2ZGIwYzQxYjBkOTlkODA4Yzg5M2Nh
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNt
LndhdApAQCAtMCwwICsxLDcgQEAKKyhtb2R1bGUKKyAgICAoaW1wb3J0ICIuL3J1bi1mcm9tLXdh
c20vY2hlY2suanMiICJjaGVjayIgKGZ1bmMgJGNoZWNrIChwYXJhbSBpMzIpKSkKKyAgICAodHlw
ZSAkdDAgKGZ1bmMpKQorICAgIChmdW5jICRtYWluICh0eXBlICR0MCkKKyAgICAgICAgaTMyLmNv
bnN0IDQyCisgICAgICAgIGNhbGwgJGNoZWNrKQorICAgIChzdGFydCAkbWFpbikpCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtL2NoZWNrLmpzIGIvSlNUZXN0
cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS9jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWEzNTM1
MjZlNDVhOGM3MTZiM2ZjMjgwNzg4NTAyMTUzODViMGU5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS9jaGVjay5qcwpAQCAtMCwwICsxLDYgQEAK
K2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi8uLi9hc3NlcnQuanMnOworCitleHBvcnQgZnVu
Y3Rpb24gY2hlY2sodmFsdWUpCit7CisgICAgYXNzZXJ0LmVxKHZhbHVlLCA0Mik7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0cy5qcyBi
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcwOWQwYmNhZDg5YjViNTY4OWUzYjE5ZGMyOWUzOTBhOTg3OGExZDUKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0cy5qcwpA
QCAtMCwwICsxLDcgQEAKK2ltcG9ydCB7IGFkZE9uZSB9IGZyb20gIi4vd2FzbS1pbXBvcnRzLWpz
LWV4cG9ydHMvaW1wb3J0cy53YXNtIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2Vy
dC5qcyc7CisKK2Fzc2VydC5pc0Z1bmN0aW9uKGFkZE9uZSk7Cithc3NlcnQuZXEoYWRkT25lKDMy
KSwgMzMpOworYXNzZXJ0LmVxKGFkZE9uZSgtMiksIC0xKTsKK2Fzc2VydC5lcShhZGRPbmUoMHg3
ZmZmZmZmZiksIC0yMTQ3NDgzNjQ4KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWQ4
N2U2MThmYjE2NmQ3MzVhM2FhMTU3NjlmZmI0NjM4NTQ4MWRhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA2OAp6Y21aUWJFWTQrUVV8P1k2Vk08YEVYUko/UHN0MXh4MCpvQWJgbypRV2RSZktISyNH
QnBuVGU1c29ye3F6Rih0KTYKVUZPYDlqaTtJemkhSTRwY0w0Ymk5MEw3Rkcje2Q4VAoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1p
bXBvcnRzLWpzLWV4cG9ydHMvaW1wb3J0cy53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTExMmUwZTQ1MmEy
MDlkNmU4Mjc2YzRhYzVmOGU1YmM5ZjNhMmEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvaW1wb3J0cy53YXQKQEAgLTAsMCAr
MSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9zdW0uanMiICJzdW0iIChmdW5jICRzdW0g
KHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKHR5cGUgJHQwIChmdW5jIChwYXJh
bSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJGFkZE9uZSAoZXhwb3J0ICJhZGRPbmUi
KSAodHlwZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgaTMyLmNv
bnN0IDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBjYWxsICRzdW0pKQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpz
IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFkODNiNjczOWNlZTRmYWIxMzgxNmY3ZDRhZWFkYWRjMWI1MGZlYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0
cy9zdW0uanMKQEAgLTAsMCArMSw0IEBACitleHBvcnQgZnVuY3Rpb24gc3VtKGFyZzAsIGFyZzEp
Cit7CisgICAgcmV0dXJuIGFyZzAgKyBhcmcxOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzLmpzIGIvSlNU
ZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzOWMyMzQ2NTE5NWQyZDM4ZjUyZWJiNTBlZWFjYWFlNzFhZjQ2NDIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMt
cmUtZXhwb3J0cy13YXNtLWV4cG9ydHMuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgeyBhZGRP
bmUgfSBmcm9tICIuL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBv
cnRzLndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNz
ZXJ0LmlzRnVuY3Rpb24oYWRkT25lKTsKK2Fzc2VydC5lcShhZGRPbmUoMzIpLCAzMyk7Cithc3Nl
cnQuZXEoYWRkT25lKC0yKSwgLTEpOworYXNzZXJ0LmVxKGFkZE9uZSgweDdmZmZmZmZmKSwgLTIx
NDc0ODM2NDgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRz
LWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2FzbSBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndh
c20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzViNjUyMjJmZmVhNzkwZmYwYzk1ZmVmZjZhZmRjYjQ4YjQyMjdhNgpH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzQKemNtWlFiRVk0K1FVfD9ZNlZNPGBFWFJKP1BzdDF4
eFZ2S3h4YGJEWF9zVEJxSk1KME0hI212UX14ZVNjVk9wRlpkCmJUI1JncURKbE1Xc1NKITxUI090
SGoqSlFuMHUwOyRPMXVzdgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRz
L2ltcG9ydHMud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4
cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZTk2N2RjM2Q4Nzg5
YjdhZGU0MDZhNjBjZGRhMzE1YjFlZDhiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0
cy53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9yZS1leHBvcnQu
anMiICJzdW0iIChmdW5jICRzdW0gKHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAg
KHR5cGUgJHQwIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJGFk
ZE9uZSAoZXhwb3J0ICJhZGRPbmUiKSAodHlwZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocmVzdWx0
IGkzMikKKyAgICAgICAgaTMyLmNvbnN0IDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAg
ICBjYWxsICRzdW0pKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBv
cnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL3JlLWV4cG9ydC5qcyBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9yZS1leHBv
cnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTE2YmExYzAzNzMzZjFmNTlmMDcxMDk1NzkzMzQ3YTdmNGYwZTgx
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1q
cy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9yZS1leHBvcnQuanMKQEAgLTAsMCArMSBAQAorZXhw
b3J0IHsgc3VtIH0gZnJvbSAiLi9zdW0ud2FzbSIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbSBi
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhw
b3J0cy9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzcyMmE3YzNiN2ZlMjEwMzljNDg0NjM0MWFiMTRk
ZmE5YTQ5OWNmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MQp3Y21aUWJFWTQrUVV8P1dtWEd+
ekt1VjxgaFdAMlB1WEo9JENGM258TjtOb090WEhafk5WOTRTSTBEaGVYWTUpS0wKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1w
b3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0IGIvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmEzZjJhMzU5MzgzMDgxM2M0MTNhMGExMzYyNThjMDBiNGQ1NjkzOAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBv
cnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0CkBAIC0wLDAgKzEsNiBAQAorKG1vZHVsZQorICAgICh0
eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAk
c3VtIChleHBvcnQgInN1bSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEg
aTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9j
YWwgJHAwCisgICAgICAgIGkzMi5hZGQpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy13YXNtLWV4cG9ydHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5ZDBiY2FkODliNWI1Njg5
ZTNiMTlkYzI5ZTM5MGE5ODc4YTFkNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMuanMKQEAgLTAsMCArMSw3IEBACitpbXBv
cnQgeyBhZGRPbmUgfSBmcm9tICIuL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2Fz
bSIKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCithc3NlcnQuaXNG
dW5jdGlvbihhZGRPbmUpOworYXNzZXJ0LmVxKGFkZE9uZSgzMiksIDMzKTsKK2Fzc2VydC5lcShh
ZGRPbmUoLTIpLCAtMSk7Cithc3NlcnQuZXEoYWRkT25lKDB4N2ZmZmZmZmYpLCAtMjE0NzQ4MzY0
OCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1l
eHBvcnRzL2ltcG9ydHMud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13
YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZTc5ZTNhOWE3NWIxMmJkYjI2
ZDhiYTQ0NWE3OTk4YmQ2NTI3MjgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDcwCnpjbVpRYkVZ
NCtRVXw/WTZWTTxgRVhSSj9Qc3QxeHhMWDJFYGBvKlFXZGdWWlFXKn4hc2socjUrZnRgenlFaW9t
PApWS1FFUG1rJkJDd2dUYXdlZmtBK1E4dnlmJTQ1azE4CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBv
cnRzL2ltcG9ydHMud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20t
ZXhwb3J0cy9pbXBvcnRzLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjAyOWU3ZDZlMTMyMGVhYmE1YjI4ODZl
ZDM3NmUyZjEzZmY3N2JmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMv
d2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdApAQCAtMCwwICsxLDcgQEAKKyht
b2R1bGUKKyAgICAoaW1wb3J0ICIuL3N1bS53YXNtIiAic3VtIiAoZnVuYyAkc3VtIChwYXJhbSBp
MzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyKSAo
cmVzdWx0IGkzMikpKQorICAgIChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikgKHR5cGUg
JHQwKSAocGFyYW0gJHAwIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAxCisg
ICAgICAgIGdldF9sb2NhbCAkcDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20gYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXNtCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRjNzIyYTdjM2I3ZmUyMTAzOWM0ODQ2MzQxYWIxNGRmYTlhNDk5Y2YKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDQxCndjbVpRYkVZNCtRVXw/V21YR356S3VWPGBoV0AyUHVYSj0k
Q0YzbnxOO05vT3RYSFp+TlY5NFNJMERoZVhZNSlLTAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0
cy9zdW0ud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0
cy9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2YyYTM1OTM4MzA4MTNjNDEzYTBhMTM2MjU4YzAwYjRk
NTY5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9y
dHMtd2FzbS1leHBvcnRzL3N1bS53YXQKQEAgLTAsMCArMSw2IEBACisobW9kdWxlCisgICAgKHR5
cGUgJHQwIChmdW5jIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRz
dW0gKGV4cG9ydCAic3VtIikgKHR5cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHBhcmFtICRwMSBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgICBnZXRfbG9jYWwgJHAxCisgICAgICAgIGdldF9sb2Nh
bCAkcDAKKyAgICAgICAgaTMyLmFkZCkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLWpzLWN5Y2xlLmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2NkYmQzZTBkNGQzYzhiNmU2MzQ4OWYzNzk4M2YyMmI1M2YxZjZjCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS5qcwpA
QCAtMCwwICsxLDQgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCitp
bXBvcnQgeyByZXR1cm40MiB9IGZyb20gIi4vd2FzbS1qcy1jeWNsZS9lbnRyeS53YXNtIgorCith
c3NlcnQuZXEocmV0dXJuNDIoKSwgNDIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1q
cy1jeWNsZS9lbnRyeS53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NDliZDVmNDEyZmY4ZDc1MzNiM2U4Nzdl
ZmNmM2IxMzNkMzJlNzEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY5CnpjbVpRYkVZNCtRVXw/
WTZXPWRkU3RXUkw3dVY8YGg1QDYpZSg9UlR+KXlwYm8yMnU9KyV1SXw3Pl56SmRNWDRwRgpXTVJf
Smg0Milie2oyc00oakU8VEQ0QlA8QShoTkBrCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL2VudHJ5LndhdCBiL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvZW50cnkud2F0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5
Y2MxMWM4NTA5OWQ0Y2QxM2U1MTE5MmZjZWRmZmM3NGVlOGJkMWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL2VudHJ5LndhdApAQCAtMCwwICsx
LDcgQEAKKyhtb2R1bGUKKyAgICAoaW1wb3J0ICIuL3N1bS5qcyIgInN1bSIgKGZ1bmMgJHN1bSAo
cGFyYW0gaTMyKSAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVu
YyAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRyZXR1cm40MiAoZXhwb3J0ICJyZXR1cm40MiIp
ICh0eXBlICR0MCkgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAxCisgICAgICAgIGkz
Mi5jb25zdCA0MQorICAgICAgICBjYWxsICRzdW0pKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L21vZHVsZXMvd2FzbS1qcy1jeWNsZS9zdW0uanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWpzLWN5Y2xlL3N1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2Y3NTM3MGZkMmNhM2E0OTc1YTE0M2NjZWEy
MzMwYjRkN2MxNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2Fz
bS1qcy1jeWNsZS9zdW0uanMKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgeyByZXR1cm40MiB9IGZy
b20gIi4vZW50cnkud2FzbSIKK2V4cG9ydCBmdW5jdGlvbiBzdW0oYSwgYikgeworICAgIHJldHVy
biBhICsgYjsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1j
eWNsZS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMWE1MDRlYTljZGVmNzI2Y2M3NmYxZTRhNGE1MzVkYTY4YzdkZjY5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlLmpzCkBAIC0wLDAg
KzEsNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQo
Ii4vd2FzbS13YXNtLWN5Y2xlL2VudHJ5Lndhc20iKS50aGVuKCR2bS5hYm9ydCwgZnVuY3Rpb24g
KGVycm9yKSB7CisgICAgYXNzZXJ0LmVxKFN0cmluZyhlcnJvciksIGBFcnJvcjogaW1wb3J0IGZ1
bmN0aW9uIC4vZW50cnkud2FzbTpyZXR1cm40MiBtdXN0IGJlIGNhbGxhYmxlYCk7Cit9KS50aGVu
KGZ1bmN0aW9uICgpIHsgfSwgJHZtLmFib3J0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRyeS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMv
d2FzbS13YXNtLWN5Y2xlL2VudHJ5Lndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmN2M5MmE3ZDNhNjg5NTk0
MDc3OTBjMzM1Y2Q3MzgwMjA5NGY5MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzEKemNtWlFi
RVk0K1FVfD9ZNlc9ZGRTdFdSTDd1VjxgaDVAT2BpKD1SVH4paGg9fEdYb2g2akxifW80RDM5Tjk3
VS1tClhyQTJ1ck1odUt4VCNPdEhqKk8wKTB1MDskYGhnOEQKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRy
eS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnkud2F0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxMmIwMzc3OTc3ZDg2ZmQ4ODE5OGM3Yjc3MjI3NDYzMTgwODg2YjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnku
d2F0CkBAIC0wLDAgKzEsNyBAQAorKG1vZHVsZQorICAgIChpbXBvcnQgIi4vc3VtLndhc20iICJz
dW0iIChmdW5jICRzdW0gKHBhcmFtIGkzMikgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAg
ICAodHlwZSAkdDAgKGZ1bmMgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkcmV0dXJuNDIgKGV4
cG9ydCAicmV0dXJuNDIiKSAodHlwZSAkdDApIChyZXN1bHQgaTMyKQorICAgICAgICBpMzIuY29u
c3QgMQorICAgICAgICBpMzIuY29uc3QgNDEKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9zdW0ud2FzbSBiL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGVl
MDUxMWM5ODZlNTE5ZTQxNTU5YzA1NDg5NDViNDJlMjcyMDUxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA3Mgp6Y21aUWJFWTQrUVV8P1k2Vz1kZUh1VjxgSlV8XzZnbDRSdTMoQClKU0RYUD5mMlAp
dHdOLVpmWiR9PSV5VX1SPXUKYVdNRjQhV0cqaHZXbmtwdVdNcFNoVXtxa3A7c3lYTkw9RjReCgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93
YXNtLXdhc20tY3ljbGUvc3VtLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1j
eWNsZS9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZDhkYTkxYzQ1MTNhNmFmZTc5NGFjZTI3NWI1YTYy
ZmJjODI0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdh
c20tY3ljbGUvc3VtLndhdApAQCAtMCwwICsxLDcgQEAKKyhtb2R1bGUKKyAgICAoaW1wb3J0ICIu
L2VudHJ5Lndhc20iICJyZXR1cm40MiIgKGZ1bmMgJHJldHVybjQyIChyZXN1bHQgaTMyKSkpCisg
ICAgKHR5cGUgJHQwIChmdW5jIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgIChm
dW5jICRzdW0gKGV4cG9ydCAic3VtIikgKHR5cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHBhcmFt
ICRwMSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICBnZXRfbG9jYWwgJHAxCisgICAgICAgIGdl
dF9sb2NhbCAkcDAKKyAgICAgICAgaTMyLmFkZCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338106</attachid>
            <date>2018-04-17 06:45:40 -0700</date>
            <delta_ts>2018-04-17 06:55:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184689-20180417224539.patch</filename>
            <type>text/plain</type>
            <size>70001</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2ZkMzgyMjMzZTQwZjcwNDkzZTA1NDdlOTNhOWZhZjE1ODEzYjk1Li5hNGUzNDJjMWE4ZGExOWNl
MjNhN2M1ZWEzOWFmNzc3ZjBlZDY3OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOC0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIEltcGxlbWVudCBmdW5jdGlv
biBpbXBvcnQgZnJvbSB3YXNtIG1vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmdW5jdGlvbiBpbXBvcnQg
ZnJvbSB3YXNtIG1vZHVsZXMuIFdlIG1vdmUgZnVuY3Rpb24gaW1wb3J0aW5nIHBhcnQKKyAgICAg
ICAgZnJvbSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UncyBjcmVhdGlvbiBmdW5jdGlvbiB0byBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluay4gVGhpcworICAgICAgICBpcyBiZWNhdXNlIGxpbmtp
bmcgdGhlc2UgZnVuY3Rpb25zIHJlcXVpcmVzIHRoYXQgYWxsIHRoZSBkZXBlbmRlbnQgbW9kdWxl
cyBhcmUgY3JlYXRlZC4KKyAgICAgICAgV2hpbGUgd2Ugd2FudCB0byBtb3ZlIGFsbCB0aGUgbGlu
a2luZyBmdW5jdGlvbmFsaXR5IGZyb20gSlNXZWJBc3NlbWJseUluc3RhbmNlIHRvCisgICAgICAg
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rLCB3ZSBkbyBub3QgdGhhdCBpbiB0aGlzIHBh
dGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UgbW92ZSBvbmx5CisgICAgICAgIGZ1bmN0aW9uIGltcG9y
dGluZyBwYXJ0IGJlY2F1c2UgZWZmaWNpZW50IGNvbXBpbGF0aW9uIG9mIFdlYkFzc2VtYmx5IG5l
ZWRzIHRvIGtub3cKKyAgICAgICAgdGhlIHR5cGUgb2YgV2ViQXNzZW1ibHlNZW1vcnkgKHNpZ25h
bGluZyBvciBib3VuZCBjaGVja2luZykuIFRoaXMgbmVlZHMgdG8ga25vdyBpbXBvcnRlZAorICAg
ICAgICBvciBhdHRhY2hlZCBXZWJBc3NlbWJseSBtZW1vcnkgb2JqZWN0LiBTbyB3ZSBjYW5ub3Qg
ZGVmZXIgdGhpcyBsaW5raW5nIHRvCisgICAgICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rIG5vdy4KKworICAgICAgICBUaGUgbGFyZ2VzdCBkaWZmZXJlbmNlIGZyb20gSlMgbW9kdWxl
IGxpbmtpbmcgaXMgdGhhdCBXZWJBc3NlbWJseSBtb2R1bGUgbGlua2luZyBsaW5rcworICAgICAg
ICBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUgYnkgc25hcHNob3R0aW5nLiBXaGVuIHlvdSBoYXZl
IGEgY3ljbGljIG1vZHVsZSBncmFwaCBsaWtlIHRoaXMsCisKKyAgICAgICAgLT4gSlMxIChleHBv
cnQgImZ1biIpIC0+IFdhc20xIChpbXBvcnQgImZ1biBmcm9tIEpTMSkgLSsKKyAgICAgICAgICAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICB3ZSBmYWlsIHRvIGxpbmsgdGhpcyBzaW5jZSAiZnVuIiBpcyBub3Qg
aW5zdGFudGlhdGVkIHdoZW4gV2FzbTEgaXMgZmlyc3QgbGlua2VkLiBUaGlzIGJlaGF2aW9yCisg
ICAgICAgIGlzIGRlc2NyaWJlZCBpbiBbMV0sIGFuZCB0ZXN0ZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9lc20taW50ZWdyYXRp
b24vdHJlZS9tYXN0ZXIvcHJvcG9zYWxzL2VzbS1pbnRlZ3JhdGlvbiNqcy0tLXdhc20tY3ljbGUt
d2hlcmUtanMtaXMtaGlnaGVyLWluLXRoZS1tb2R1bGUtZ3JhcGgKKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCk6CisgICAgICAgIChjaGVja0V4Y2Vw
dGlvbik6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgIFNtYWxsIGZpeGVzIGZv
ciB3YXNtIG1vZHVsZSBsb2FkaW5nLgorCisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZSk6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHJ1bnRpbWUvQWJz
dHJhY3RNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Om1vZHVsZUVudmlyb25tZW50TWF5QmVOdWxsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIE5vdywgd2FzbSBtb2R1bGVzIGNhbiBoYXZlIGltcG9ydCB3aGljaCBpcyBuYW1lZCAiKiIu
IFNvIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yay4KKyAgICAgICAgU2luY2Ugd2FzbSBtb2R1
bGVzIG5ldmVyIGhhdmUgbmFtZXNwYWNlIGltcG9ydGluZywgd2UgY2hlY2sgdGhpcyBpbiBKUydz
IG1vZHVsZSBhbmFseXplci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ3JlYXRpb25Nb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRv
IGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGE5MDU3YmIzNDY4NjdhMDc5YzEzZTllNDM3NzZiYTAzNzEyM2FhOWEuLjUw
ZmEyMjlkNmQyYmQ1YzEzNWFlYThjZThlYjZlYjUzNDdiNmVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA4LDYgKzE3MDgsNyBAQAogCQlFMzVDQTE1NDFEQkMzQTVDMDBG
ODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2
Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTNBREQ4MUZFNzAyRDAwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTNBREQ3MUZFNzAyQ0MwMDIy
RDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAw
QjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJl
dGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NTYxLDYgKzQ1NjIsNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlvbk1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjY1LDYgKzYyNjcsNyBAQAogCQkJCTUy
NkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJC
MzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLywKIAkJCQlBRDQxMkIzMjFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywKKwkJCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovLAogCQkJCUFENUMzNkRDMUY2ODhCNUYw
MDBCQ0FBRiAvKiBXYXNtRW1iZWRkZXIuaCAqLywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2
QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAqLywKIAkJCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3
OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgKi8sCkBAIC04NzM2LDcgKzg3MzksNiBA
QAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMU3RhY2ttYXBBcmd1bWVudExpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNDc2RkY0MjA3
RTg1RDUwMDkzQ0EyRCAvKiBKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
MjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkND
MjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJFMjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmggaW4gSGVhZGVycyAqLywK
QEAgLTg5MjgsNiArODkzMCw3IEBACiAJCQkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJ
VEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCNDFDMTBDQjkzMDAz
OTBGREQgLyogSklUQml0WG9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDRUZE
RTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0NzZG
RjQyMDdFODVENTAwOTNDQTJEIC8qIEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDkxLDYgKzk0OTQsNyBAQAogCQkJCTUzRkQw
NEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZERDFGNjg4QjY1MDAwQkNBQUYg
LyogV2FzbUVtYmVkZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURBRTI3QTFFMDNDODIyMDBC
NTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzODFCOTM5
MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTBhNDRhZmU1MTg5NWRjZTIwMGJlZmI4MmViZjhi
NjZmZTU4MmMxNS4uNzQ0ZGUzMGVmN2U0ZmU4YzkyODA5NzE2YjFiNDMzOWY2ZmYwYzljMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhDb21tYW5kTGluZSwgYm9vbCBpc1dv
cmtlciwgY29uc3QgRnVuYyYpOwotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgQ29tbWFu
ZExpbmUmLCBib29sJiBzdWNjZXNzKTsKK3N0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24s
IEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CiAKIGNsYXNzIE1lc3NhZ2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVzc2FnZT4gewogcHVibGljOgpAQCAtMTYz
Miw3ICsxNjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VD
b2RlLCBTb3VyY2VPcmlnaW4oQVNDSUlMaXRlcmFsKCJ3b3JrZXIiKSkpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGV2YWx1YXRpb25FeGNl
cHRpb24tPnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdHJ1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmVzdWx0LCBjb21tYW5kTGluZSwg
c3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIHRydWUsIGV2YWx1YXRpb25FeGNlcHRpb24s
IHJlc3VsdCwgY29tbWFuZExpbmUsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTIyNTksNyArMjI1OSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0
aW9uLCBKU1ZhbHVlIHZhbHVlLCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCYgc3VjY2VzcykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTIyNzEsNyArMjI3MSw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgaWYgKCFvcHRpb25zLm1fdW5jYXVnaHRF
eGNlcHRpb25OYW1lIHx8ICFpc0xhc3RGaWxlKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNz
ICYmICFoYXNFeGNlcHRpb247CiAgICAgICAgIGlmIChvcHRpb25zLm1fZHVtcCAmJiAhaGFzRXhj
ZXB0aW9uKQotICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCB2YWx1ZS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBwcmludGYoIkVuZDogJXNcbiIsIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBpZiAoaGFzRXhjZXB0aW9uKQogICAgICAgICAgICAgZHVtcEV4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICB9IGVsc2UKQEAgLTIzMjQsMTIgKzIzMjQsMTIg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBpc0xh
c3RGaWxlXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIGlzTGFzdEZpbGUsIGZhbHNlLCBleGVjLT5hcmd1bWVudCgwKSwgb3B0
aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBpc0xhc3RGaWxlLCBmYWxzZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMs
IHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogcmVq
ZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcoKSwgWyYsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAg
ICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwg
ZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAgIGNo
ZWNrRXhjZXB0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwgZXhlYy0+
YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIApAQCAtMjM0
Miw3ICsyMzQyLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUo
KTsKLSAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAg
ICAgICAgICAgY2hlY2tFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2Jh
bE9iamVjdCwgaXNMYXN0RmlsZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9w
dGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICB9CiAKICAgICAgICAgc2NyaXB0QnVmZmVyLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAKaW5kZXggNDI2ZTUzYjlkMWQ3N2IwMGY0MjlmOWI3NDQ5YWRlNDEyZDVkNTllMi4u
YzVjNmRmMDllMzJkNGQwYWM2NjlkZTAyZWM5MjRmZDRhMDRhZjIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApAQCAtNTQs
NyArNTQsOCBAQCB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYgYW5hbHl6ZXIpCiAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5h
ZGRJbXBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgewogICAgICAgICAgICAg
bV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmltcG9y
dGVkTmFtZSgpLAotICAgICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQorICAgICAgICAg
ICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0
ZWROYW1lKCkgPT0gYW5hbHl6ZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXIs
CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAyYzgwNDJkZmVkM2RlZDRh
YTkxMThiZDA5YmIxYjc0MWIwZDUwNmY5Li5kNjg5YTEyOTA1ZDZhZTNhMzEyODQ5MGFkYWJmMjk4
OWYwZjc2NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYXV0byBBYnN0cmFj
dE1vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGxvY2EKICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKICAg
ICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsK
LSAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgaWYgKGlt
cG9ydEVudHJ5LmlzTmFtZXNwYWNlKQogICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91
bmQoKTsKIAogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CkBA
IC03NzYsNyArNzc2LDcgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgcmV0dXJuIGpzTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoYXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykpCi0gICAgICAgIHJldHVybiB3YXNtTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOworICAgICAgICByZXR1cm4gd2FzbU1v
ZHVsZVJlY29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGEx
N2VkZmQ3Njg4NmQ4OTkuLjQ3MzQ3OTVmOTk3Y2NlYmFiMThkMGQ2YzllYTdhMTlkZTQ3MmNkOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuaApAQCAtNjUsMTEgKzY1LDcgQEAgY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICBJZGVudGlmaWVyIG1vZHVs
ZVJlcXVlc3Q7CiAgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKICAgICAgICAgSWRlbnRp
ZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQorICAgICAgICBib29sIGlzTmFtZXNw
YWNlOwogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwpA
QCAtMTE5LDYgKzExNSwxMSBAQCBjbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOwogICAgIH0KIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25t
ZW50TWF5QmVOdWxsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOworICAgIH0KKwogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggYzYxNzMxNDg1MGJmOGNhZDIxNGMyMzJiMDQ3MjY1NzYx
NGJhODNlOC4uMTgzZmJkMjhkZGZiOGE0MDJkOTNkZjcyMWFhMzI0MWQ1MWM3NmY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKQEAgLTEwMywxMCArMTAzLDkgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSoKIHsKICAg
ICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQ
cm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmltcG9ydEVu
dHJpZXMoKSkgewogICAgICAgICAgICAgY29uc3QgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkltcG9y
dEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWltcG9y
dEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkKKyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNO
YW1lc3BhY2UpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRF
bnRyeS5sb2NhbE5hbWUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGE3Yzk5ZGNjNDgzMzA2MGE5
YzMyNjViZjM0YjViMWZlMjU5OGJiMDkuLmQ2NWY2ODBiNzNiMTZhNjM3NTE5OTJmNGM3Mzc5MzYx
OTBiMzk5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQog
ICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOwogICAg
ICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUlt
cG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2Uodm0pKSB7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFj
ZSkgewogICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVj
dCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgYm9vbCBw
dXRSZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DcmVhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DcmVh
dGlvbk1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmZlOGNjMGJmZDRlZTc0NDczOGY5MDM0MTMxZDg5Nzli
MzdmYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNyZWF0aW9uTW9kZS5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2VudW0g
Y2xhc3MgQ3JlYXRpb25Nb2RlIHsKKyAgICBGcm9tSlMsCisgICAgRnJvbU1vZHVsZUxvYWRlcgor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5YjlmZDhi
NzQxMTNiNGI5OGMuLmNlMTBiMDk3NGQyOGNiODY0MGYwM2MwMGNkMDZhNGI0NzIxN2I0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlv
bjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUg
ZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCiB9CiAKLXZvaWQgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2ssIE1vZHVsZVJ1bk1vZGUgbW9k
dWxlUnVuTW9kZSkKK3ZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9u
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2Rl
QmxvY2ssIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlv
bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih0aGlzLCB3YXNtQ29k
ZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyOSw4ICsxMjksOCBAQCB2b2lkIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVm
PFdhc206OgogICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZCo+KG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LT5tb2R1bGVSZWNvcmQoKSk7CiAgICAg
bW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBpZiAobW9kdWxlUnVu
TW9kZSA9PSBNb2R1bGVSdW5Nb2RlOjpSdW4pIHsKLSAgICAgICAgbW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIGpzTnVsbCgpKTsKKyAgICBpZiAoY3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9u
TW9kZTo6RnJvbUpTKSB7CisgICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwo
KSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIEpTVmFsdWUgc3RhcnRSZXN1bHQgPSBtb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIElkZW50aWZpZXIg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCkKICAgICByZXR1
cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRp
b24sICJXZWJBc3NlbWJseUluc3RhbmNlIikpOwogfQogCi1KU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGpzTW9kdWxl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlLCBS
ZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2Jq
ZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNt
OjpNb2R1bGU+JiYgbW9kdWxlLCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTE2MywxMCAr
MTYzLDYgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSksICI6IiwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsKICAgICB9OwogCi0gICAg
Ly8gSWYgdGhlIGxpc3Qgb2YgbW9kdWxlLmltcG9ydHMgaXMgbm90IGVtcHR5IGFuZCBUeXBlKGlt
cG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgotICAgIGlm
IChtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQotICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
ImNhbid0IG1ha2UgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBv
cnRzIE9iamVjdCBhbmQgdGhlIFdlYkFzc2VtYmx5Lk1vZHVsZSByZXF1aXJlcyBpbXBvcnRzIikp
KTsKLQogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgbW9kdWxlSW5mb3JtYXRpb24p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKQEAgLTE4
NCw2OSArMTgwLDU5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAKICAgICAvLyBMZXQgZnVu
Y3MsIG1lbW9yaWVzIGFuZCB0YWJsZXMgYmUgaW5pdGlhbGx5LWVtcHR5IGxpc3RzIG9mIGNhbGxh
YmxlIEphdmFTY3JpcHQgb2JqZWN0cywgV2ViQXNzZW1ibHkuTWVtb3J5IG9iamVjdHMgYW5kIFdl
YkFzc2VtYmx5LlRhYmxlIG9iamVjdHMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBMZXQgaW1wb3J0
cyBiZSBhbiBpbml0aWFsbHktZW1wdHkgbGlzdCBvZiBleHRlcm5hbCB2YWx1ZXMuCi0gICAgdW5z
aWduZWQgbnVtSW1wb3J0RnVuY3Rpb25zID0gMDsKICAgICB1bnNpZ25lZCBudW1JbXBvcnRHbG9i
YWxzID0gMDsKIAogICAgIGJvb2wgaGFzTWVtb3J5SW1wb3J0ID0gZmFsc2U7CiAgICAgYm9vbCBo
YXNUYWJsZUltcG9ydCA9IGZhbHNlOworCisgICAgaWYgKGNyZWF0aW9uTW9kZSA9PSBXYXNtOjpD
cmVhdGlvbk1vZGU6OkZyb21KUykgeworICAgICAgICAvLyBJZiB0aGUgbGlzdCBvZiBtb2R1bGUu
aW1wb3J0cyBpcyBub3QgZW1wdHkgYW5kIFR5cGUoaW1wb3J0T2JqZWN0KSBpcyBub3QgT2JqZWN0
LCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCisgICAgICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5p
bXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjYW4ndCBtYWtlIFdlYkFz
c2VtYmx5Lkluc3RhbmNlIGJlY2F1c2UgdGhlcmUgaXMgbm8gaW1wb3J0cyBPYmplY3QgYW5kIHRo
ZSBXZWJBc3NlbWJseS5Nb2R1bGUgcmVxdWlyZXMgaW1wb3J0cyIpKSk7CisgICAgfQorCiAgICAg
Ly8gRm9yIGVhY2ggaW1wb3J0IGkgaW4gbW9kdWxlLmltcG9ydHM6CiAgICAgZm9yIChhdXRvJiBp
bXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7Ci0gICAgICAgIC8vIDEuIExldCBv
IGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBp
Lm1vZHVsZV9uYW1lKS4KLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGltcG9y
dE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZy
b21VVEY4KGltcG9ydC5tb2R1bGUpKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9iamVj
dCwgdGhyb3cgYSBUeXBlRXJyb3IuCi0gICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9iamVj
dCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9k
dWxlVmFsdWUpKSk7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpKTsKKyAgICAg
ICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkLT5hcHBl
bmRSZXF1ZXN0ZWRNb2R1bGUobW9kdWxlTmFtZSk7CisgICAgICAgIG1vZHVsZVJlY29yZC0+YWRk
SW1wb3J0RW50cnkoV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAgICAg
ICAgICAgIG1vZHVsZU5hbWUsCisgICAgICAgICAgICBmaWVsZE5hbWUsCisgICAgICAgICAgICBJ
ZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwg
IldlYkFzc2VtYmx5SW1wb3J0TmFtZSIpKSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICB9
KTsKKworICAgICAgICAvLyBTa2lwIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gdmFsaWRh
dGlvbiBoZXJlLiBJdCB3aWxsIGJlIGRvbmUgaW4gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsuCisgICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIGFsbCB0aGUgbGlua2luZyBj
b2RlIGhlcmUgdG8gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsuCisgICAgICAgIHN3aXRj
aCAoaW1wb3J0LmtpbmQpIHsKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0
aW9uOgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxL
aW5kOjpUYWJsZToKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeToKKyAg
ICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKLSAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZhbHVlIG9mIHBlcmZv
cm1pbmcgR2V0KG8sIGkuaXRlbV9uYW1lKQotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOwotICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6
ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAo
Y3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKSB7CisgICAgICAgICAg
ICAvLyAxLiBMZXQgbyBiZSB0aGUgcmVzdWx0YW50IHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0KGlt
cG9ydE9iamVjdCwgaS5tb2R1bGVfbmFtZSkuCisgICAgICAgICAgICBKU1ZhbHVlIGltcG9ydE1v
ZHVsZVZhbHVlID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICAg
ICAgLy8gMi4gSWYgVHlwZShvKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci4KKyAg
ICAgICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOworCisg
ICAgICAgICAgICAvLyAzLiBMZXQgdiBiZSB0aGUgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQobywg
aS5pdGVtX25hbWUpCisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdl
dChleGVjLCBmaWVsZE5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbHVlKQorICAgICAg
ICAgICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaW1wb3J0Lmtp
bmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7Ci0gICAg
ICAgICAgICAvLyA0LiBJZiBpIGlzIGEgZnVuY3Rpb24gaW1wb3J0OgotICAgICAgICAgICAgLy8g
aS4gSWYgSXNDYWxsYWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJy
b3IuCi0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCBmdW5jdGlvbiIsICJtdXN0IGJlIGNh
bGxhYmxlIikpKTsKLQotICAgICAgICAgICAgV2FzbTo6SW5zdGFuY2UqIGNhbGxlZUluc3RhbmNl
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Okxv
YWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKLQotICAgICAg
ICAgICAgLy8gaWkuIElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdDoK
LSAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKLSAgICAgICAg
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwotICAg
ICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGZ1bmN0aW9uLCB3YXNt
RnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgLy8gYS4g
SWYgdGhlIHNpZ25hdHVyZSBvZiB2IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgaSwg
dGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCi0gICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggaW1wb3J0ZWRTaWduYXR1cmVJbmRleDsKLSAgICAgICAgICAgICAgICBpZiAo
d2FzbUZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydGVkU2lnbmF0dXJlSW5k
ZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxlZUluc3RhbmNlID0gJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IHdhc21GdW5jdGlv
bi0+ZW50cnlwb2ludExvYWRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRl
eCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCi0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0
ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaW1wb3J0
ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhl
Yywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNp
Z25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidz
IHNpZ25hdHVyZSIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBpaWkuIE90aGVy
d2lzZToKLSAgICAgICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3QgZnVuY3Rp
b24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5nIFdlYkFz
c2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1ZhbHVlIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2ViQXNzZW1i
bHlWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5vdGU6IGRvbmUgYXMgcGFydCBvZiBQbGFuIGNvbXBp
bGF0aW9uLgotICAgICAgICAgICAgLy8gaXYuIEFwcGVuZCB2IHRvIGZ1bmNzLgotICAgICAgICAg
ICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8gdGhlIGluc3RhbmNlIGxpc3QgZnVsZmls
bHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUgKHRoZSBXZWJBc3NlbWJseS5JbnN0YW5j
ZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93ICh0aGUgSlNGdW5jdGlvbikuCi0KLSAg
ICAgICAgICAgIEFTU0VSVChudW1JbXBvcnRGdW5jdGlvbnMgPT0gaW1wb3J0LmtpbmRJbmRleCk7
Ci0gICAgICAgICAgICBhdXRvKiBpbmZvID0ganNJbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRG
dW5jdGlvbkluZm8obnVtSW1wb3J0RnVuY3Rpb25zKTsKLSAgICAgICAgICAgIGluZm8tPnRhcmdl
dEluc3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7Ci0gICAgICAgICAgICBpbmZvLT53YXNtRW50cnlw
b2ludExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRpb247Ci0gICAgICAgICAgICBq
c0luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFBvaXNvbmVkQmFycmllcjxKU09i
amVjdD4+KG51bUltcG9ydEZ1bmN0aW9ucyktPnNldCh2bSwganNJbnN0YW5jZSwgZnVuY3Rpb24p
OwotICAgICAgICAgICAgKytudW1JbXBvcnRGdW5jdGlvbnM7Ci0gICAgICAgICAgICAvLyB2LiBB
cHBlbmQgY2xvc3VyZSB0byBpbXBvcnRzLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0zMzcsNiArMzIz
LDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQorICAgIEFTU0VSVChtb2R1bGVSZWNvcmQtPmltcG9ydEVudHJpZXMoKS5zaXplKCkgPT0gbW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXplKCkpOwogCiAgICAgewogICAgICAgICBpZiAoISFt
b2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkgJiYgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmlzSW1w
b3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgKaW5kZXggMDMyYjU2NWYwODFlMGUwNzFiZmNkYjNhYmU3OWI5OWU3
ODkxM2Y5Yi4uM2NhNDZkNmRiZmRlOTQ5NTg1MGZlMDlkOWNkZWE1ODFhNTdlZTcwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUgIldhc21DcmVhdGlvbk1vZGUuaCIKICNpbmNsdWRlICJX
YXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTUyLDEzICs1MywxMiBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogCiAgICAgc3RhdGljIElkZW50aWZpZXIgY3JlYXRlUHJpdmF0ZU1vZHVsZUtl
eSgpOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxl
KiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4m
Jik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwg
SlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4mJiwg
V2FzbTo6Q3JlYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIGVudW0gY2xhc3MgTW9kdWxlUnVuTW9kZSB7IFJ1biwgTm9uZSB9OwotICAg
IHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxv
Y2s+JiYsIE1vZHVsZVJ1bk1vZGUpOworICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4
ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgCiAgICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNl
KCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNy4uMjA4OWU0ZjcxNTNiMjY5MGZhNzhh
M2ViYTcyNjUxNDc5ZmNkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBA
IC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICBTdHJ1Y3R1cmUq
IGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGlu
c3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSk7Cisg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVN
b2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8
V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9t
SlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpbnN0YW5j
ZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3lu
Yygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVK
U1RvV2FzbVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRl
eHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIs
ICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25N
b2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5k
ZXggMGU0ODQ3NThhNGMxZDYxMGRiMmE4OGFmZDdjNmM5ZjZiYTUzYTQxZC4uOTNmMTBlZDRmOWRh
OThiNzA3MTA1Yzc1NThhZTkzODk1MDM5NWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpwcmVwYXJlTGluayhWTSYg
dm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuYwogICAgIG1faW5zdGFuY2Uuc2V0KHZt
LCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKQordm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDUs
NiArMTA1LDEyOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSkKICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBtX2lu
c3RhbmNlLT5tb2R1bGUoKTsKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCk7CiAKKyAgICBhdXRv
IGV4Y2VwdGlvbiA9IFsmXSAoSlNPYmplY3QqIGVycm9yKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBlcnJvcik7CisgICAgfTsKKworICAgIGF1dG8gaW1wb3J0RmFpbE1l
c3NhZ2UgPSBbJl0gKGNvbnN0IFdhc206OkltcG9ydCYgaW1wb3J0LCBjb25zdCBjaGFyKiBiZWZv
cmUsIGNvbnN0IGNoYXIqIGFmdGVyKSB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGJlZm9y
ZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpLCAiOiIsIFN0cmluZzo6ZnJv
bVVURjgoaW1wb3J0LmZpZWxkKSwgIiAiLCBhZnRlcik7CisgICAgfTsKKworICAgIHVuc2lnbmVk
IGltcG9ydEVudHJ5SW5kZXggPSAwOworICAgIGZvciAoY29uc3QgYXV0byYgaW1wb3J0IDogbW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0cykgeworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9k
dWxlKSk7CisgICAgICAgIElkZW50aWZpZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSk7CisgICAgICAgIEpTVmFs
dWUgdmFsdWU7CisgICAgICAgIGlmIChjcmVhdGlvbk1vZGUgPT0gV2FzbTo6Q3JlYXRpb25Nb2Rl
OjpGcm9tSlMpIHsKKyAgICAgICAgICAgIC8vIDEuIExldCBvIGJlIHRoZSByZXN1bHRhbnQgdmFs
dWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBpLm1vZHVsZV9uYW1lKS4KKyAgICAg
ICAgICAgIEpTVmFsdWUgaW1wb3J0TW9kdWxlVmFsdWUgPSBpbXBvcnRPYmplY3QtPmdldChleGVj
LCBtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgICAgICAgICAvLyAyLiBJZiBUeXBlKG8pIGlzIG5vdCBPYmplY3QsIHRocm93
IGEgVHlwZUVycm9yLgorICAgICAgICAgICAgaWYgKCFpbXBvcnRNb2R1bGVWYWx1ZS5pc09iamVj
dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9iamVj
dCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9k
dWxlVmFsdWUpKSk7CisKKyAgICAgICAgICAgIC8vIDMuIExldCB2IGJlIHRoZSB2YWx1ZSBvZiBw
ZXJmb3JtaW5nIEdldChvLCBpLml0ZW1fbmFtZSkKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpbXBvcnRNb2R1bGVWYWx1ZSk7CisgICAgICAgICAgICB2
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGZpZWxkTmFtZSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBv
cnRlZE1vZHVsZShleGVjLCBtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24g
PSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBmaWVsZE5hbWUpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHN3
aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5
cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2Nv
cGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhmaWVsZE5h
bWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9y
dGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhmaWVsZE5hbWUuaW1wbCgpKSwgIicgY2Fubm90
IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBt
YWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVz
b2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBYnN0cmFjdE1v
ZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZDsKKyAg
ICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVkRW52aXJvbm1lbnQgPSBpbXBv
cnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnRNYXlCZU51bGwoKTsKKyAgICAgICAgICAgIC8v
IEl0IG1lYW5zIHRoYXQgdGFyZ2V0IG1vZHVsZSBpcyBub3QgbGlua2VkIHlldC4gSW4gd2FzbSBs
b2FkaW5nLCB3ZSBhbGxvdyB0aGlzIHNpbmNlIHdlIGRvIG5vdCBzb2x2ZSBjeWNsaWMgcmVzb2x1
dGlvbiBhcyBpZiBKUydzIGJpbmRpbmdzLgorICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCBl
cnJvciBvY2N1cnMgc2luY2UgfHZhbHVlfCBpcyBhbiBlbXB0eSwgYW5kIGxhdGVyIHx2YWx1ZXwg
YmVjb21lcyBhbiB1bmRlZmluZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
V2ViQXNzZW1ibHkvZXNtLWludGVncmF0aW9uL3RyZWUvbWFzdGVyL3Byb3Bvc2Fscy9lc20taW50
ZWdyYXRpb24janMtLS13YXNtLWN5Y2xlLXdoZXJlLWpzLWlzLWhpZ2hlci1pbi10aGUtbW9kdWxl
LWdyYXBoCisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRFbnZpcm9ubWVudCkgeworICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5
bWJvbFRhYmxlKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBzeW1ib2xU
YWJsZS0+ZmluZChsb2NrZXIsIHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGl0ZXIgIT0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpKTsKKyAgICAg
ICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOworICAgICAg
ICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIEFTU0VS
VChpbXBvcnRlZEVudmlyb25tZW50LT5pc1ZhbGlkU2NvcGVPZmZzZXQoZW50cnkuc2NvcGVPZmZz
ZXQoKSkpOworCisgICAgICAgICAgICAgICAgLy8gU25hcHNob3R0aW5nIGEgdmFsdWUuCisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBpbXBvcnRlZEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5
LnNjb3BlT2Zmc2V0KCkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICAg
ICAgc3dpdGNoIChpbXBvcnQua2luZCkgeworICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2lu
ZDo6RnVuY3Rpb246IHsKKyAgICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBpbXBv
cnQ6CisgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJvdyBh
IFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5jdGlv
bigpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0IGZ1
bmN0aW9uIiwgIm11c3QgYmUgY2FsbGFibGUiKSkpOworCisgICAgICAgICAgICBXYXNtOjpJbnN0
YW5jZSogY2FsbGVlSW5zdGFuY2UgPSBudWxscHRyOworICAgICAgICAgICAgV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24gPSBu
dWxscHRyOworICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0
Kj4odmFsdWUpOworCisgICAgICAgICAgICAvLyBpaS4gSWYgdiBpcyBhbiBFeHBvcnRlZCBGdW5j
dGlvbiBFeG90aWMgT2JqZWN0OgorICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2Fz
bUZ1bmN0aW9uOworICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21X
cmFwcGVyRnVuY3Rpb247CisgICAgICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlv
bih2bSwgZnVuY3Rpb24sIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICAvLyBhLiBJZiB0aGUgc2lnbmF0dXJlIG9mIHYgZG9lcyBub3QgbWF0Y2gg
dGhlIHNpZ25hdHVyZSBvZiBpLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KKyAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBpbXBvcnRlZFNpZ25hdHVyZUluZGV4Owor
ICAgICAgICAgICAgICAgIGlmICh3YXNtRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
aW1wb3J0ZWRTaWduYXR1cmVJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FsbGVlSW5zdGFuY2UgPSAmd2FzbUZ1bmN0aW9uLT5pbnN0
YW5jZSgpLT5pbnN0YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50TG9hZExv
Y2F0aW9uID0gd2FzbUZ1bmN0aW9uLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1cmVJ
bmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhw
ZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2ln
bmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoaW1w
b3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
ZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwg
InNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlv
bidzIHNpZ25hdHVyZSIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpaWkuIE90
aGVyd2lzZToKKyAgICAgICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3QgZnVu
Y3Rpb24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5nIFdl
YkFzc2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1ZhbHVl
IGFuZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2ViQXNz
ZW1ibHlWYWx1ZS4KKyAgICAgICAgICAgIC8vIE5vdGU6IGRvbmUgYXMgcGFydCBvZiBQbGFuIGNv
bXBpbGF0aW9uLgorICAgICAgICAgICAgLy8gaXYuIEFwcGVuZCB2IHRvIGZ1bmNzLgorICAgICAg
ICAgICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8gdGhlIGluc3RhbmNlIGxpc3QgZnVs
ZmlsbHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUgKHRoZSBXZWJBc3NlbWJseS5JbnN0
YW5jZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93ICh0aGUgSlNGdW5jdGlvbikuCisK
KyAgICAgICAgICAgIGF1dG8qIGluZm8gPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1
bmN0aW9uSW5mbyhpbXBvcnQua2luZEluZGV4KTsKKyAgICAgICAgICAgIGluZm8tPnRhcmdldElu
c3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7CisgICAgICAgICAgICBpbmZvLT53YXNtRW50cnlwb2lu
dExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRpb247CisgICAgICAgICAgICBtX2lu
c3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaW1wb3J0LmtpbmRJbmRleCktPnNldCh2bSwgbV9p
bnN0YW5jZS5nZXQoKSwgZnVuY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6TWVtb3J5
OiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdhc206OkV4
dGVybmFsS2luZDo6R2xvYmFsOiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJvbFRhYmxlID0gbW9k
dWxlLT5leHBvcnRTeW1ib2xUYWJsZSgpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291
bnQgPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKaW5k
ZXggNDE3YTBjNjA4MzdkNDVjZWI1NjMxZjRiMGY0NzVkYjNiNWZiMzg5YS4uMzE2ZjMzN2RlYzBj
OWJlNjEzY2JiM2Q1YTVmNDQ4ZjgzNzYzOWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQWJzdHJhY3RNb2R1
bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJXYXNtQ3JlYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDksNyArNTAsNyBA
QCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdE1v
ZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBjcmVhdGUo
RXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgV2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAogICAgIHZvaWQgcHJlcGFyZUxpbmsoVk0mLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqKTsKLSAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKTsKKyAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKik7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVByb3RvdHlwZS5jcHAKaW5kZXggNGVmNjQ3YTNiYWE0Y2NlNTNlYmM5NDQzNzNiN2VjOWUwYTM2
ODlhNi4uYzdhZDBlM2RkY2E4ZDY0NDQ5YWYxNTkxNzFhZmNiODZhMzgwZWE2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBl
LmNwcApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIGVudW0g
Y2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZVJlY29yZCwgV2l0aE1vZHVs
ZUFuZEluc3RhbmNlIH07Ci1zdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBSZWY8V2FzbTo6Q29kZUJsb2Nr
PiYmIGNvZGVCbG9jaywgUmVzb2x2ZSByZXNvbHZlS2luZCwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCitzdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09i
amVjdCogaW1wb3J0T2JqZWN0LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvZGVCbG9jaywgUmVz
b2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgaW5zdGFuY2UtPmZp
bmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2NrKSwgbW9kdWxlUnVuTW9k
ZSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29k
ZUJsb2NrKSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgaWYgKHJl
c29sdmVLaW5kID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkKQEAgLTE0NCwyOCArMTQ0LDI5IEBA
IHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzCiAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJs
eU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQorc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFz
c2VtYmx5TW9kdWxlKiBtb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSwgUmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2Rl
IGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21waWxpbmcgYSBt
b2R1bGUuIFdlIGZpcnN0IGdhdGhlciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5mb3JtYXRpb24g
cHJpb3IgdG8gY29tcGlsaW5nIGNvZGUuCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0
YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGVLZXks
IG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFz
c2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1
bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3Ry
dWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCBjcmVhdGlvbk1v
ZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29wZSwg
cHJvbWlzZSkpOwogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAg
ICAgLy8gVGhlIGluc3RhbmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5j
aWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKKyAgICBkZXBlbmRlbmNp
ZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICB2bS5wcm9t
aXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBtYXkgb3IgbWF5
IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgotICAgIG1vZHVsZS0+bW9kdWxlKCkuY29tcGls
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRlU2hh
cmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3RhbmNl
LCBtb2R1bGUsIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29k
ZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CisgICAgbW9kdWxlLT5tb2R1bGUoKS5j
b21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBjcmVh
dGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW5z
dGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAm
dm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CiAgICAg
ICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdURk1vdmUocmVmQ29kZUJs
b2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24o
cHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIHJlc29sdmVLaW5kLCBtb2R1bGVS
dW5Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21p
c2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5k
LCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGluc3RhbmNlLT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgcmVzb2x2ZSh2bSwgZXhlYywgcHJv
bWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJlc29s
dmVLaW5kLCBtb2R1bGVSdW5Nb2RlKTsKKyAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHBy
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJlbGVhc2VO
b25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKICAgICB9
KSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9u
KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5LCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVzb2x2
ZSByZXNvbHZlS2luZCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlIG1vZHVs
ZVJ1bk1vZGUpCitzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVLZXksIEpTVmFsdWUgYnVmZmVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBSZXNv
bHZlIHJlc29sdmVLaW5kLCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIApAQCAtMTgwLDggKzE4MSw4
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9
IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgYnVmZmVyKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAot
ICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUo
c291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3By
b21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZl
S2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNj
aGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5
Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5k
LCBtb2R1bGVSdW5Nb2RlLCAmdm1dICgpIG11dGFibGUgeworICAgIFdhc206Ok1vZHVsZTo6dmFs
aWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVk
VGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwg
bW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAm
dm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNl
LCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJB
c3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJBc3Nl
bWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMTkyLDcgKzE5Myw3
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2Nv
cGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2Nv
cGUsIHByb21pc2UpOwogCi0gICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlz
ZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1
bk1vZGUpOworICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwog
ICAgICAgICB9KTsKICAgICB9KSk7CiB9CkBAIC0yMDAsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VE
ZWZlcnJlZCogcHIKIEpTVmFsdWUgV2ViQXNzZW1ibHlQcm90b3R5cGU6Omluc3RhbnRpYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxl
S2V5LCBhcmd1bWVudCwgbnVsbHB0ciwgUmVzb2x2ZTo6V2l0aE1vZHVsZVJlY29yZCwgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpOb25lKTsKKyAgICBjb21waWxlQW5kSW5z
dGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZUtleSwgYXJndW1lbnQsIG51bGxwdHIs
IFJlc29sdmU6OldpdGhNb2R1bGVSZWNvcmQsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbU1vZHVs
ZUxvYWRlcik7CiAgICAgcmV0dXJuIHByb21pc2UtPnByb21pc2UoKTsKIH0KIApAQCAtMjI1LDkg
KzIyNiw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgICAg
ICAgICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVs
ZSo+KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwg
ZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKKyAgICAgICAgICAgICAgICBp
bnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRo
SW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFy
Z3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpSdW4pOworICAgICAgICAgICAgICAg
IGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQsIGltcG9ydE9i
amVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6
OkZyb21KUyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b21pc2UtPnByb21pc2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZjM5NTYwNjRmN2QyN2QwM2U2MjA5NjZiN2U4ZTg1YjA1ZmQ5NGJlZS4u
YzljYzI2MWVhOTg1YmRmYzVkMzUxMDNkYzY1Mjg0NmRlNDAxYzNjNCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4
LTA0LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wbGVtZW50IGZ1bmN0aW9uIGltcG9ydCBmcm9tIHdh
c20gbW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0Njg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHJ1bldlYkFzc2VtYmx5RGlyZWN0LCB3aGljaCBydW5zIHdhc20gZmlsZSBkaXJlY3Rs
eS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTgtMDQt
MTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHTElCXSBBZGQgQVBJIHRvIGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9uCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBhMTg2YzA5ZmNlOTliZGRkODY5ZGNkZmZm
Y2ZhNjRlNWYyOGY2OWE5Li4yNGE4M2M3NDQ4YzVjNjgzNGU1MzU4NTJmNTY0MDEzY2E1NTFjNGM2
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTEwMTQsNiArMTAxNCwxOSBAQCBk
ZWYgcnVuV2ViQXNzZW1ibHkKICAgICBlbmQKIGVuZAogCitkZWYgcnVuV2ViQXNzZW1ibHlEaXJl
Y3QKKyAgICByZXR1cm4gaWYgISRqaXRUZXN0cworICAgIHJldHVybiBpZiAhJGlzRlRMUGxhdGZv
cm0KKyAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIsICpGVExfT1BUSU9OUykKKyAgICBpZiAk
bW9kZSAhPSAicXVpY2siCisgICAgICAgIHJ1bigid2FzbS1uby1jaml0LXllcy10bHMtY29udGV4
dCIsICItbSIsICItLXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dD10cnVlIiwgKihGVExfT1BUSU9O
UyArIE5PX0NKSVRfT1BUSU9OUykpCisgICAgICAgIHJ1bigid2FzbS1lYWdlci1qZXR0aXNvbiIs
ICItbSIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAqRlRM
X09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1uby1jYWxsLWljIiwgIi1tIiwgIi0tdXNlQ2Fs
bElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZhbHNlIiwgKkZUTF9PUFRJT05TKQorICAgICAg
ICBydW4oIndhc20tbm8tdGxzLWNvbnRleHQiLCAiLW0iLCAiLS11c2VGYXN0VExTRm9yV2FzbUNv
bnRleHQ9ZmFsc2UiLCAqRlRMX09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1zbG93LW1lbW9y
eSIsICItbSIsICItLXVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeT1mYWxzZSIsICpGVExfT1BUSU9O
UykKKyAgICBlbmQKK2VuZAorCiBkZWYgcnVuV2ViQXNzZW1ibHlFbXNjcmlwdGVuKG1vZGUpCiAg
ICAgY2FzZSBtb2RlCiAgICAgd2hlbiA6c2tpcApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlYTcxYzFiMGUyY2U4NzI2NzljMzlhNmE0Nzg4
Nzg4ZDg2ZjRiNDQ3Li44NDZiMzZmZWIxZTM1NzVhMjdlMjYzOWRiM2MxNzBkNDNjMTE3NzIzIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ3IEBACisyMDE4LTA0LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wbGVtZW50IGZ1bmN0
aW9uIGltcG9ydCBmcm9tIHdhc20gbW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0Njg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9tb2R1bGVz
L2pzLXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy9qcy13YXNt
LWN5Y2xlL2VudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hl
cmUuZXhwb3J0LnJldHVybjQyKToKKyAgICAgICAgKiB3YXNtL21vZHVsZXMvanMtd2FzbS1jeWNs
ZS9zdW0ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUv
c3VtLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2Fz
bTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2F0OiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS9jaGVjay5qczogQWRkZWQu
CisgICAgICAgIChleHBvcnQuY2hlY2spOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWlt
cG9ydHMtanMtZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20t
aW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRlZC4KKyAgICAg
ICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpzOiBBZGRlZC4K
KyAgICAgICAgKGV4cG9ydC5zdW0pOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWltcG9y
dHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20v
bW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53
YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4
cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL3JlLWV4cG9ydC5q
czogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBv
cnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0OiBBZGRlZC4K
KyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy5qczogQWRk
ZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvaW1w
b3J0cy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdh
c20tZXhwb3J0cy9pbXBvcnRzLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc206IEFkZGVkLgorICAgICAgICAqIHdhc20v
bW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXQ6IEFkZGVkLgorICAgICAg
ICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20v
bW9kdWxlcy93YXNtLWpzLWN5Y2xlL3N1bS5qczogQWRkZWQuCisgICAgICAgIChmcm9tLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLmV4cG9ydC5zdW0pOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNt
LXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLXdhc20t
Y3ljbGUvZW50cnkud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20td2Fz
bS1jeWNsZS9lbnRyeS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLXdh
c20tY3ljbGUvc3VtLndhc206IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLXdh
c20tY3ljbGUvc3VtLndhdDogQWRkZWQuCisKIDIwMTgtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dlYkFzc2VtYmx5XVtNb2R1bGVzXSBQ
cm90b3R5cGUgd2FzbSBpbXBvcnQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1sIGIvSlNU
ZXN0cy93YXNtLnlhbWwKaW5kZXggODdjODgwMjlhN2E1NTAxY2Q1NjBjNTQxZGFhOGUxOTMzZGE4
Mzk4OC4uOTg5NGY5ZDk3OTY0Yjg3YWJiMzdmNmE0NzAwNTRiNmE1N2ExYWQzYSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTE3OCwzICsx
NzgsNiBAQAogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAogLSBwYXRoOiB3
YXNtL3NwZWMtdGVzdHMvdXRmOC1pbXBvcnQtbW9kdWxlLndhc3QuanMKICAgY21kOiBydW5XZWJB
c3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKworLSBwYXRoOiB3YXNtL21vZHVsZXMvcnVuLWZyb20t
d2FzbS53YXNtCisgIGNtZDogcnVuV2ViQXNzZW1ibHlEaXJlY3QKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9q
cy13YXNtLWN5Y2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjBmODY2YzI5YTM4OTc4NDc5NTQxMjMzZTkw
NzRmODc5ODc0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13
YXNtLWN5Y2xlLmpzCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcyc7CitpbXBvcnQoIi4vanMtd2FzbS1jeWNsZS9lbnRyeS5qcyIpLnRoZW4oJHZt
LmFib3J0LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICBhc3NlcnQuZXEoU3RyaW5nKGVycm9yKSwg
YEVycm9yOiBpbXBvcnQgZnVuY3Rpb24gLi9lbnRyeS5qczpyZXR1cm40MiBtdXN0IGJlIGNhbGxh
YmxlYCk7Cit9KS50aGVuKGZ1bmN0aW9uICgpIHsgfSwgJHZtLmFib3J0KTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvZW50cnkuanMgYi9KU1Rlc3RzL3dh
c20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMTQzNjQ0YTAx
YzczNjc3NDg4YTgxZGU5MGE4Y2M0OWExZTJlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzCkBAIC0wLDAgKzEsNCBAQAoraW1w
b3J0IHsgc3VtIH0gZnJvbSAiLi9zdW0ud2FzbSIKK2V4cG9ydCBmdW5jdGlvbiByZXR1cm40Migp
IHsKKyAgICByZXR1cm4gNDI7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9q
cy13YXNtLWN5Y2xlL3N1bS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNs
ZS9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGMxNmU1Y2ZhYzYxZTg4ZWZkM2JhZTNmMTQ2MWQxNTE1
NzUwYWE3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6Y21WfiRJfVUmIzVDeT5abUk4JFgq
bTQzKWowYnsoaDZEO2VoMUZpJjhSWGRyZkxAWlFRV0wwaChaIyM7SE5JSHEKWEcwTkpiellsMUh1
JEVALTJEKzBMZmRTUzN7KmV0RwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0IGIvSlNUZXN0cy93YXNt
L21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMjIzZjc2Y2U0MmIy
NjIyNTBiNWJlYjcwNjI1MzlmNWFlNTU5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxl
CisgICAgKGltcG9ydCAiLi9lbnRyeS5qcyIgInJldHVybjQyIiAoZnVuYyAkcmV0dXJuNDIgKHJl
c3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpIChyZXN1bHQg
aTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJzdW0iKSAodHlwZSAkdDApIChwYXJhbSAk
cDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGdldF9sb2NhbCAk
cDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBpMzIuYWRkKSkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2FzbSBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3J1bi1mcm9tLXdhc20ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzM0NWU2Y2VjNTVkYWM2YWFk
YmRjMmY0NjJlMzI2NzU4MzRhMTMxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MQp6Y21aUWJF
WTQrUVV8P1k2VWBrK01OTU5qSVV7WWR+KDk8c30mQ15YUSVGb3A7MlApN3smUFl3cCoyXmtwMXYz
fkoKVm5WQT9GSTJha1pJMmhSJjlKS0AoeEIoenU0bFYheQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXQgYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTUxZTUw
YTIxOWE4YzExNmRiMGM0MWIwZDk5ZDgwOGM4OTNjYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXQKQEAgLTAsMCArMSw3IEBACisobW9k
dWxlCisgICAgKGltcG9ydCAiLi9ydW4tZnJvbS13YXNtL2NoZWNrLmpzIiAiY2hlY2siIChmdW5j
ICRjaGVjayAocGFyYW0gaTMyKSkpCisgICAgKHR5cGUgJHQwIChmdW5jKSkKKyAgICAoZnVuYyAk
bWFpbiAodHlwZSAkdDApCisgICAgICAgIGkzMi5jb25zdCA0MgorICAgICAgICBjYWxsICRjaGVj
aykKKyAgICAoc3RhcnQgJG1haW4pKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMv
cnVuLWZyb20td2FzbS9jaGVjay5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdh
c20vY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhMzUzNTI2ZTQ1YThjNzE2YjNmYzI4MDc4ODUwMjE1
Mzg1YjBlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9t
LXdhc20vY2hlY2suanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAn
Li4vLi4vYXNzZXJ0LmpzJzsKKworZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKHZhbHVlKQoreworICAg
IGFzc2VydC5lcSh2YWx1ZSwgNDIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtanMtZXhwb3J0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDlkMGJjYWQ4OWI1YjU2ODllM2Ix
OWRjMjllMzkwYTk4NzhhMWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgeyBh
ZGRPbmUgfSBmcm9tICIuL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbSIKK2lt
cG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCithc3NlcnQuaXNGdW5jdGlv
bihhZGRPbmUpOworYXNzZXJ0LmVxKGFkZE9uZSgzMiksIDMzKTsKK2Fzc2VydC5lcShhZGRPbmUo
LTIpLCAtMSk7Cithc3NlcnQuZXEoYWRkT25lKDB4N2ZmZmZmZmYpLCAtMjE0NzQ4MzY0OCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0cy9p
bXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0
cy9pbXBvcnRzLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkODdlNjE4ZmIxNjZkNzM1YTNhYTE1NzY5ZmZi
NDYzODU0ODFkYQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjgKemNtWlFiRVk0K1FVfD9ZNlZN
PGBFWFJKP1BzdDF4eDAqb0FiYG8qUVdkUmZLSEsjR0JwblRlNXNvcntxekYodCk2ClVGT2A5amk7
SXppIUk0cGNMNGJpOTBMN0ZHI3tkOFQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMu
d2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvaW1wb3J0
cy53YXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzUxMTJlMGU0NTJhMjA5ZDZlODI3NmM0YWM1ZjhlNWJjOWYzYTJh
MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1q
cy1leHBvcnRzL2ltcG9ydHMud2F0CkBAIC0wLDAgKzEsNyBAQAorKG1vZHVsZQorICAgIChpbXBv
cnQgIi4vc3VtLmpzIiAic3VtIiAoZnVuYyAkc3VtIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGkz
MikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAg
IChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikgKHR5cGUgJHQwKSAocGFyYW0gJHAwIGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAxCisgICAgICAgIGdldF9sb2NhbCAk
cDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDgzYjY3MzljZWU0ZmFi
MTM4MTZmN2Q0YWVhZGFkYzFiNTBmZWJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpzCkBAIC0wLDAgKzEsNCBAQAor
ZXhwb3J0IGZ1bmN0aW9uIHN1bShhcmcwLCBhcmcxKQoreworICAgIHJldHVybiBhcmcwICsgYXJn
MTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1y
ZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1w
b3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzljMjM0NjUx
OTVkMmQzOGY1MmViYjUwZWVhY2FhZTcxYWY0NjQyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzLmpz
CkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsgYWRkT25lIH0gZnJvbSAiLi93YXNtLWltcG9ydHMt
anMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtIgoraW1wb3J0ICogYXMgYXNz
ZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC5pc0Z1bmN0aW9uKGFkZE9uZSk7Cith
c3NlcnQuZXEoYWRkT25lKDMyKSwgMzMpOworYXNzZXJ0LmVxKGFkZE9uZSgtMiksIC0xKTsKK2Fz
c2VydC5lcShhZGRPbmUoMHg3ZmZmZmZmZiksIC0yMTQ3NDgzNjQ4KTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0
cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUt
ZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YjY1MjIyZmZl
YTc5MGZmMGM5NWZlZmY2YWZkY2I0OGI0MjI3YTYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDc0
CnpjbVpRYkVZNCtRVXw/WTZWTTxgRVhSSj9Qc3QxeHhWdkt4eGBiRFhfc1RCcUpNSjBNISNtdlF9
eGVTY1ZPcEZaZApiVCNSZ3FESmxNV3NTSiE8VCNPdEhqKkpRbjB1MDskTzF1c3YKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1w
b3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdCBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRz
LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NGU5NjdkYzNkODc4OWI3YWRlNDA2YTYwY2RkYTMxNWIxZWQ4YmI4
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpz
LXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0CkBAIC0wLDAgKzEsNyBAQAorKG1v
ZHVsZQorICAgIChpbXBvcnQgIi4vcmUtZXhwb3J0LmpzIiAic3VtIiAoZnVuYyAkc3VtIChwYXJh
bSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMy
KSAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikgKHR5
cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAx
CisgICAgICAgIGdldF9sb2NhbCAkcDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhw
b3J0cy9yZS1leHBvcnQuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMt
cmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvcmUtZXhwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNmJhMWMw
MzczM2YxZjU5ZjA3MTA5NTc5MzM0N2E3ZjRmMGU4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMv
cmUtZXhwb3J0LmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCB7IHN1bSB9IGZyb20gIi4vc3VtLndh
c20iCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUt
ZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGM3MjJhN2MzYjdmZTIxMDM5YzQ4NDYzNDFhYjE0ZGZhOWE0OTljZgpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgNDEKd2NtWlFiRVk0K1FVfD9XbVhHfnpLdVY8YGhXQDJQdVhKPSRDRjNufE47Tm9P
dFhIWn5OVjk0U0kwRGhlWFk1KUtMCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4
cG9ydHMvc3VtLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1l
eHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2YyYTM1OTM4MzA4MTNj
NDEzYTBhMTM2MjU4YzAwYjRkNTY5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20v
bW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdApA
QCAtMCwwICsxLDYgQEAKKyhtb2R1bGUKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMiBp
MzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJzdW0iKSAodHlwZSAk
dDApIChwYXJhbSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAg
IGdldF9sb2NhbCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBpMzIuYWRkKSkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9y
dHMuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcwOWQwYmNhZDg5YjViNTY4OWUzYjE5ZGMyOWUzOTBhOTg3OGExZDUKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1l
eHBvcnRzLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsgYWRkT25lIH0gZnJvbSAiLi93YXNt
LWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LmlzRnVuY3Rpb24oYWRkT25lKTsKK2Fzc2VydC5l
cShhZGRPbmUoMzIpLCAzMyk7Cithc3NlcnQuZXEoYWRkT25lKC0yKSwgLTEpOworYXNzZXJ0LmVx
KGFkZE9uZSgweDdmZmZmZmZmKSwgLTIxNDc0ODM2NDgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhc20gYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2FzbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZmU3OWUzYTlhNzViMTJiZGIyNmQ4YmE0NDVhNzk5OGJkNjUyNzI4CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6Y21aUWJFWTQrUVV8P1k2Vk08YEVYUko/UHN0MXh4TFgy
RWBgbypRV2RnVlpRVyp+IXNrKHI1K2Z0YHp5RWlvbTwKVktRRVBtayZCQ3dnVGF3ZWZrQStROHZ5
ZiU0NWsxOAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdCBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTYwMjllN2Q2ZTEzMjBlYWJhNWIyODg2ZWQzNzZlMmYxM2ZmNzdiZgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMv
aW1wb3J0cy53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9zdW0u
d2FzbSIgInN1bSIgKGZ1bmMgJHN1bSAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAg
ICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAk
YWRkT25lIChleHBvcnQgImFkZE9uZSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChyZXN1
bHQgaTMyKQorICAgICAgICBpMzIuY29uc3QgMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAg
ICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWlt
cG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1p
bXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzcyMmE3YzNiN2ZlMjEw
MzljNDg0NjM0MWFiMTRkZmE5YTQ5OWNmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MQp3Y21a
UWJFWTQrUVV8P1dtWEd+ekt1VjxgaFdAMlB1WEo9JENGM258TjtOb090WEhafk5WOTRTSTBEaGVY
WTUpS0wKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdCBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTNm
MmEzNTkzODMwODEzYzQxM2EwYTEzNjI1OGMwMGI0ZDU2OTM4Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0CkBA
IC0wLDAgKzEsNiBAQAorKG1vZHVsZQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyIGkz
MikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChleHBvcnQgInN1bSIpICh0eXBlICR0
MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAg
Z2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAgICAgIGkzMi5hZGQpKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS5qcyBiL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NjZGJkM2UwZDRk
M2M4YjZlNjM0ODlmMzc5ODNmMjJiNTNmMWY2YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworaW1wb3J0IHsgcmV0dXJuNDIgfSBmcm9tICIu
L3dhc20tanMtY3ljbGUvZW50cnkud2FzbSIKKworYXNzZXJ0LmVxKHJldHVybjQyKCksIDQyKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvZW50cnkud2Fz
bSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvZW50cnkud2FzbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNjQ5YmQ1ZjQxMmZmOGQ3NTMzYjNlODc3ZWZjZjNiMTMzZDMyZTcxCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCA2OQp6Y21aUWJFWTQrUVV8P1k2Vz1kZFN0V1JMN3VWPGBoNUA2KWUoPVJU
fil5cGJvMjJ1PSsldUl8Nz5eekpkTVg0cEYKV01SX0poNDIpYntqMnNNKGpFPFRENEJQPEEoaE5A
awoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWpz
LWN5Y2xlL2VudHJ5LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWNjMTFjODUwOTlkNGNkMTNlNTExOTJmY2Vk
ZmZjNzRlZThiZDFmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2Fz
bS1qcy1jeWNsZS9lbnRyeS53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9y
dCAiLi9zdW0uanMiICJzdW0iIChmdW5jICRzdW0gKHBhcmFtIGkzMikgKHBhcmFtIGkzMikgKHJl
c3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVu
YyAkcmV0dXJuNDIgKGV4cG9ydCAicmV0dXJuNDIiKSAodHlwZSAkdDApIChyZXN1bHQgaTMyKQor
ICAgICAgICBpMzIuY29uc3QgMQorICAgICAgICBpMzIuY29uc3QgNDEKKyAgICAgICAgY2FsbCAk
c3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvc3Vt
LmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9zdW0uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjNmNzUzNzBmZDJjYTNhNDk3NWExNDNjY2VhMjMzMGI0ZDdjMTc2NgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvc3VtLmpzCkBAIC0wLDAg
KzEsNCBAQAoraW1wb3J0IHsgcmV0dXJuNDIgfSBmcm9tICIuL2VudHJ5Lndhc20iCitleHBvcnQg
ZnVuY3Rpb24gc3VtKGEsIGIpIHsKKyAgICByZXR1cm4gYSArIGI7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUuanMgYi9KU1Rlc3RzL3dhc20vbW9k
dWxlcy93YXNtLXdhc20tY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFhNTA0ZWE5Y2RlZjcyNmNjNzZm
MWU0YTRhNTM1ZGE2OGM3ZGY2OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3dhc20td2FzbS1jeWNsZS5qcwpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0KCIuL3dhc20td2FzbS1jeWNsZS9lbnRyeS53
YXNtIikudGhlbigkdm0uYWJvcnQsIGZ1bmN0aW9uIChlcnJvcikgeworICAgIGFzc2VydC5lcShT
dHJpbmcoZXJyb3IpLCBgRXJyb3I6IGltcG9ydCBmdW5jdGlvbiAuL2VudHJ5Lndhc206cmV0dXJu
NDIgbXVzdCBiZSBjYWxsYWJsZWApOworfSkudGhlbihmdW5jdGlvbiAoKSB7IH0sICR2bS5hYm9y
dCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50
cnkud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRyeS53YXNt
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkZjdjOTJhN2QzYTY4OTU5NDA3NzkwYzMzNWNkNzM4MDIwOTRmOTAKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDcxCnpjbVpRYkVZNCtRVXw/WTZXPWRkU3RXUkw3dVY8YGg1
QE9gaSg9UlR+KWhoPXxHWG9oNmpMYn1vNEQzOU45N1UtbQpYckEydXJNaHVLeFQjT3RIaipPMCkw
dTA7JGBoZzhECgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnkud2F0IGIvSlNUZXN0cy93YXNtL21vZHVs
ZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTJiMDM3Nzk3N2Q4NmZk
ODgxOThjN2I3NzIyNzQ2MzE4MDg4NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApAQCAtMCwwICsxLDcgQEAKKyhtb2R1
bGUKKyAgICAoaW1wb3J0ICIuL3N1bS53YXNtIiAic3VtIiAoZnVuYyAkc3VtIChwYXJhbSBpMzIp
IChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKHR5cGUgJHQwIChmdW5jIChyZXN1bHQg
aTMyKSkpCisgICAgKGZ1bmMgJHJldHVybjQyIChleHBvcnQgInJldHVybjQyIikgKHR5cGUgJHQw
KSAocmVzdWx0IGkzMikKKyAgICAgICAgaTMyLmNvbnN0IDEKKyAgICAgICAgaTMyLmNvbnN0IDQx
CisgICAgICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93
YXNtLXdhc20tY3ljbGUvc3VtLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20t
Y3ljbGUvc3VtLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRlZTA1MTFjOTg2ZTUxOWU0MTU1OWMwNTQ4OTQ1
YjQyZTI3MjA1MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzIKemNtWlFiRVk0K1FVfD9ZNlc9
ZGVIdVY8YEpVfF82Z2w0UnUzKEApSlNEWFA+ZjJQKXR3Ti1aZlokfT0leVV9Uj11CmFXTUY0IVdH
Kmh2V25rcHVXTXBTaFV7cWtwO3N5WE5MPUY0XgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL3N1bS53YXQgYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MWQ4ZGE5MWM0NTEzYTZhZmU3OTRhY2UyNzViNWE2MmZiYzgyNDczCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL3N1bS53YXQKQEAgLTAsMCAr
MSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9lbnRyeS53YXNtIiAicmV0dXJuNDIiIChm
dW5jICRyZXR1cm40MiAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0g
aTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChleHBvcnQgInN1bSIpICh0
eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAocmVzdWx0IGkzMikKKyAg
ICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAgICAgIGkzMi5h
ZGQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338107</attachid>
            <date>2018-04-17 06:55:46 -0700</date>
            <delta_ts>2018-04-17 07:00:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184689-20180417225545.patch</filename>
            <type>text/plain</type>
            <size>69965</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2ZkMzgyMjMzZTQwZjcwNDkzZTA1NDdlOTNhOWZhZjE1ODEzYjk1Li5hNGUzNDJjMWE4ZGExOWNl
MjNhN2M1ZWEzOWFmNzc3ZjBlZDY3OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOC0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIEltcGxlbWVudCBmdW5jdGlv
biBpbXBvcnQgZnJvbSB3YXNtIG1vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmdW5jdGlvbiBpbXBvcnQg
ZnJvbSB3YXNtIG1vZHVsZXMuIFdlIG1vdmUgZnVuY3Rpb24gaW1wb3J0aW5nIHBhcnQKKyAgICAg
ICAgZnJvbSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UncyBjcmVhdGlvbiBmdW5jdGlvbiB0byBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluay4gVGhpcworICAgICAgICBpcyBiZWNhdXNlIGxpbmtp
bmcgdGhlc2UgZnVuY3Rpb25zIHJlcXVpcmVzIHRoYXQgYWxsIHRoZSBkZXBlbmRlbnQgbW9kdWxl
cyBhcmUgY3JlYXRlZC4KKyAgICAgICAgV2hpbGUgd2Ugd2FudCB0byBtb3ZlIGFsbCB0aGUgbGlu
a2luZyBmdW5jdGlvbmFsaXR5IGZyb20gSlNXZWJBc3NlbWJseUluc3RhbmNlIHRvCisgICAgICAg
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rLCB3ZSBkbyBub3QgdGhhdCBpbiB0aGlzIHBh
dGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UgbW92ZSBvbmx5CisgICAgICAgIGZ1bmN0aW9uIGltcG9y
dGluZyBwYXJ0IGJlY2F1c2UgZWZmaWNpZW50IGNvbXBpbGF0aW9uIG9mIFdlYkFzc2VtYmx5IG5l
ZWRzIHRvIGtub3cKKyAgICAgICAgdGhlIHR5cGUgb2YgV2ViQXNzZW1ibHlNZW1vcnkgKHNpZ25h
bGluZyBvciBib3VuZCBjaGVja2luZykuIFRoaXMgbmVlZHMgdG8ga25vdyBpbXBvcnRlZAorICAg
ICAgICBvciBhdHRhY2hlZCBXZWJBc3NlbWJseSBtZW1vcnkgb2JqZWN0LiBTbyB3ZSBjYW5ub3Qg
ZGVmZXIgdGhpcyBsaW5raW5nIHRvCisgICAgICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rIG5vdy4KKworICAgICAgICBUaGUgbGFyZ2VzdCBkaWZmZXJlbmNlIGZyb20gSlMgbW9kdWxl
IGxpbmtpbmcgaXMgdGhhdCBXZWJBc3NlbWJseSBtb2R1bGUgbGlua2luZyBsaW5rcworICAgICAg
ICBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUgYnkgc25hcHNob3R0aW5nLiBXaGVuIHlvdSBoYXZl
IGEgY3ljbGljIG1vZHVsZSBncmFwaCBsaWtlIHRoaXMsCisKKyAgICAgICAgLT4gSlMxIChleHBv
cnQgImZ1biIpIC0+IFdhc20xIChpbXBvcnQgImZ1biBmcm9tIEpTMSkgLSsKKyAgICAgICAgICAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICB3ZSBmYWlsIHRvIGxpbmsgdGhpcyBzaW5jZSAiZnVuIiBpcyBub3Qg
aW5zdGFudGlhdGVkIHdoZW4gV2FzbTEgaXMgZmlyc3QgbGlua2VkLiBUaGlzIGJlaGF2aW9yCisg
ICAgICAgIGlzIGRlc2NyaWJlZCBpbiBbMV0sIGFuZCB0ZXN0ZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9lc20taW50ZWdyYXRp
b24vdHJlZS9tYXN0ZXIvcHJvcG9zYWxzL2VzbS1pbnRlZ3JhdGlvbiNqcy0tLXdhc20tY3ljbGUt
d2hlcmUtanMtaXMtaGlnaGVyLWluLXRoZS1tb2R1bGUtZ3JhcGgKKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCk6CisgICAgICAgIChjaGVja0V4Y2Vw
dGlvbik6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgIFNtYWxsIGZpeGVzIGZv
ciB3YXNtIG1vZHVsZSBsb2FkaW5nLgorCisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZSk6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHJ1bnRpbWUvQWJz
dHJhY3RNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Om1vZHVsZUVudmlyb25tZW50TWF5QmVOdWxsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIE5vdywgd2FzbSBtb2R1bGVzIGNhbiBoYXZlIGltcG9ydCB3aGljaCBpcyBuYW1lZCAiKiIu
IFNvIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yay4KKyAgICAgICAgU2luY2Ugd2FzbSBtb2R1
bGVzIG5ldmVyIGhhdmUgbmFtZXNwYWNlIGltcG9ydGluZywgd2UgY2hlY2sgdGhpcyBpbiBKUydz
IG1vZHVsZSBhbmFseXplci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ3JlYXRpb25Nb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRv
IGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGE5MDU3YmIzNDY4NjdhMDc5YzEzZTllNDM3NzZiYTAzNzEyM2FhOWEuLjUw
ZmEyMjlkNmQyYmQ1YzEzNWFlYThjZThlYjZlYjUzNDdiNmVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA4LDYgKzE3MDgsNyBAQAogCQlFMzVDQTE1NDFEQkMzQTVDMDBG
ODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2
Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTNBREQ4MUZFNzAyRDAwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTNBREQ3MUZFNzAyQ0MwMDIy
RDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAw
QjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJl
dGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NTYxLDYgKzQ1NjIsNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlvbk1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjY1LDYgKzYyNjcsNyBAQAogCQkJCTUy
NkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJC
MzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLywKIAkJCQlBRDQxMkIzMjFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywKKwkJCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovLAogCQkJCUFENUMzNkRDMUY2ODhCNUYw
MDBCQ0FBRiAvKiBXYXNtRW1iZWRkZXIuaCAqLywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2
QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAqLywKIAkJCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3
OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgKi8sCkBAIC04NzM2LDcgKzg3MzksNiBA
QAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMU3RhY2ttYXBBcmd1bWVudExpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNDc2RkY0MjA3
RTg1RDUwMDkzQ0EyRCAvKiBKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
MjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkND
MjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJFMjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmggaW4gSGVhZGVycyAqLywK
QEAgLTg5MjgsNiArODkzMCw3IEBACiAJCQkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJ
VEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCNDFDMTBDQjkzMDAz
OTBGREQgLyogSklUQml0WG9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDRUZE
RTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0NzZG
RjQyMDdFODVENTAwOTNDQTJEIC8qIEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDkxLDYgKzk0OTQsNyBAQAogCQkJCTUzRkQw
NEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZERDFGNjg4QjY1MDAwQkNBQUYg
LyogV2FzbUVtYmVkZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURBRTI3QTFFMDNDODIyMDBC
NTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzODFCOTM5
MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTBhNDRhZmU1MTg5NWRjZTIwMGJlZmI4MmViZjhi
NjZmZTU4MmMxNS4uNzQ0ZGUzMGVmN2U0ZmU4YzkyODA5NzE2YjFiNDMzOWY2ZmYwYzljMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhDb21tYW5kTGluZSwgYm9vbCBpc1dv
cmtlciwgY29uc3QgRnVuYyYpOwotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgQ29tbWFu
ZExpbmUmLCBib29sJiBzdWNjZXNzKTsKK3N0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24s
IEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CiAKIGNsYXNzIE1lc3NhZ2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVzc2FnZT4gewogcHVibGljOgpAQCAtMTYz
Miw3ICsxNjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VD
b2RlLCBTb3VyY2VPcmlnaW4oQVNDSUlMaXRlcmFsKCJ3b3JrZXIiKSkpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGV2YWx1YXRpb25FeGNl
cHRpb24tPnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdHJ1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmVzdWx0LCBjb21tYW5kTGluZSwg
c3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIHRydWUsIGV2YWx1YXRpb25FeGNlcHRpb24s
IHJlc3VsdCwgY29tbWFuZExpbmUsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTIyNTksNyArMjI1OSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0
aW9uLCBKU1ZhbHVlIHZhbHVlLCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCYgc3VjY2VzcykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTIyNzEsNyArMjI3MSw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgaWYgKCFvcHRpb25zLm1fdW5jYXVnaHRF
eGNlcHRpb25OYW1lIHx8ICFpc0xhc3RGaWxlKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNz
ICYmICFoYXNFeGNlcHRpb247CiAgICAgICAgIGlmIChvcHRpb25zLm1fZHVtcCAmJiAhaGFzRXhj
ZXB0aW9uKQotICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCB2YWx1ZS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBwcmludGYoIkVuZDogJXNcbiIsIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBpZiAoaGFzRXhjZXB0aW9uKQogICAgICAgICAgICAgZHVtcEV4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICB9IGVsc2UKQEAgLTIzMjQsMTIgKzIzMjQsMTIg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBpc0xh
c3RGaWxlXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIGlzTGFzdEZpbGUsIGZhbHNlLCBleGVjLT5hcmd1bWVudCgwKSwgb3B0
aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBpc0xhc3RGaWxlLCBmYWxzZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMs
IHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogcmVq
ZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcoKSwgWyYsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAg
ICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwg
ZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAgIGNo
ZWNrRXhjZXB0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwgZXhlYy0+
YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIApAQCAtMjM0
Miw3ICsyMzQyLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUo
KTsKLSAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAg
ICAgICAgICAgY2hlY2tFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2Jh
bE9iamVjdCwgaXNMYXN0RmlsZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9w
dGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICB9CiAKICAgICAgICAgc2NyaXB0QnVmZmVyLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAKaW5kZXggNDI2ZTUzYjlkMWQ3N2IwMGY0MjlmOWI3NDQ5YWRlNDEyZDVkNTllMi4u
YzVjNmRmMDllMzJkNGQwYWM2NjlkZTAyZWM5MjRmZDRhMDRhZjIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApAQCAtNTQs
NyArNTQsOCBAQCB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYgYW5hbHl6ZXIpCiAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5h
ZGRJbXBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgewogICAgICAgICAgICAg
bV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmltcG9y
dGVkTmFtZSgpLAotICAgICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQorICAgICAgICAg
ICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0
ZWROYW1lKCkgPT0gYW5hbHl6ZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXIs
CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAyYzgwNDJkZmVkM2RlZDRh
YTkxMThiZDA5YmIxYjc0MWIwZDUwNmY5Li5kNjg5YTEyOTA1ZDZhZTNhMzEyODQ5MGFkYWJmMjk4
OWYwZjc2NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYXV0byBBYnN0cmFj
dE1vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGxvY2EKICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKICAg
ICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsK
LSAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgaWYgKGlt
cG9ydEVudHJ5LmlzTmFtZXNwYWNlKQogICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91
bmQoKTsKIAogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CkBA
IC03NzYsNyArNzc2LDcgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgcmV0dXJuIGpzTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoYXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykpCi0gICAgICAgIHJldHVybiB3YXNtTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOworICAgICAgICByZXR1cm4gd2FzbU1v
ZHVsZVJlY29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGEx
N2VkZmQ3Njg4NmQ4OTkuLjQ3MzQ3OTVmOTk3Y2NlYmFiMThkMGQ2YzllYTdhMTlkZTQ3MmNkOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuaApAQCAtNjUsMTEgKzY1LDcgQEAgY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICBJZGVudGlmaWVyIG1vZHVs
ZVJlcXVlc3Q7CiAgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKICAgICAgICAgSWRlbnRp
ZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQorICAgICAgICBib29sIGlzTmFtZXNw
YWNlOwogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwpA
QCAtMTE5LDYgKzExNSwxMSBAQCBjbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOwogICAgIH0KIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25t
ZW50TWF5QmVOdWxsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOworICAgIH0KKwogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggYzYxNzMxNDg1MGJmOGNhZDIxNGMyMzJiMDQ3MjY1NzYx
NGJhODNlOC4uMTgzZmJkMjhkZGZiOGE0MDJkOTNkZjcyMWFhMzI0MWQ1MWM3NmY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKQEAgLTEwMywxMCArMTAzLDkgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSoKIHsKICAg
ICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQ
cm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmltcG9ydEVu
dHJpZXMoKSkgewogICAgICAgICAgICAgY29uc3QgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkltcG9y
dEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWltcG9y
dEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkKKyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNO
YW1lc3BhY2UpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRF
bnRyeS5sb2NhbE5hbWUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGE3Yzk5ZGNjNDgzMzA2MGE5
YzMyNjViZjM0YjViMWZlMjU5OGJiMDkuLmQ2NWY2ODBiNzNiMTZhNjM3NTE5OTJmNGM3Mzc5MzYx
OTBiMzk5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQog
ICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOwogICAg
ICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUlt
cG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2Uodm0pKSB7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFj
ZSkgewogICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVj
dCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgYm9vbCBw
dXRSZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DcmVhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DcmVh
dGlvbk1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmZlOGNjMGJmZDRlZTc0NDczOGY5MDM0MTMxZDg5Nzli
MzdmYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNyZWF0aW9uTW9kZS5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2VudW0g
Y2xhc3MgQ3JlYXRpb25Nb2RlIHsKKyAgICBGcm9tSlMsCisgICAgRnJvbU1vZHVsZUxvYWRlcgor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5YjlmZDhi
NzQxMTNiNGI5OGMuLmNlMTBiMDk3NGQyOGNiODY0MGYwM2MwMGNkMDZhNGI0NzIxN2I0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlv
bjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUg
ZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCiB9CiAKLXZvaWQgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2ssIE1vZHVsZVJ1bk1vZGUgbW9k
dWxlUnVuTW9kZSkKK3ZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9u
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2Rl
QmxvY2ssIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlv
bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih0aGlzLCB3YXNtQ29k
ZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyOSw4ICsxMjksOCBAQCB2b2lkIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVm
PFdhc206OgogICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZCo+KG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LT5tb2R1bGVSZWNvcmQoKSk7CiAgICAg
bW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBpZiAobW9kdWxlUnVu
TW9kZSA9PSBNb2R1bGVSdW5Nb2RlOjpSdW4pIHsKLSAgICAgICAgbW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIGpzTnVsbCgpKTsKKyAgICBpZiAoY3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9u
TW9kZTo6RnJvbUpTKSB7CisgICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwo
KSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIEpTVmFsdWUgc3RhcnRSZXN1bHQgPSBtb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIElkZW50aWZpZXIg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCkKICAgICByZXR1
cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRp
b24sICJXZWJBc3NlbWJseUluc3RhbmNlIikpOwogfQogCi1KU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGpzTW9kdWxl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlLCBS
ZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2Jq
ZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNt
OjpNb2R1bGU+JiYgbW9kdWxlLCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTE2MywxMCAr
MTYzLDYgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSksICI6IiwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsKICAgICB9OwogCi0gICAg
Ly8gSWYgdGhlIGxpc3Qgb2YgbW9kdWxlLmltcG9ydHMgaXMgbm90IGVtcHR5IGFuZCBUeXBlKGlt
cG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgotICAgIGlm
IChtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQotICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
ImNhbid0IG1ha2UgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBv
cnRzIE9iamVjdCBhbmQgdGhlIFdlYkFzc2VtYmx5Lk1vZHVsZSByZXF1aXJlcyBpbXBvcnRzIikp
KTsKLQogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgbW9kdWxlSW5mb3JtYXRpb24p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKQEAgLTE4
NCw2OSArMTgwLDU5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAKICAgICAvLyBMZXQgZnVu
Y3MsIG1lbW9yaWVzIGFuZCB0YWJsZXMgYmUgaW5pdGlhbGx5LWVtcHR5IGxpc3RzIG9mIGNhbGxh
YmxlIEphdmFTY3JpcHQgb2JqZWN0cywgV2ViQXNzZW1ibHkuTWVtb3J5IG9iamVjdHMgYW5kIFdl
YkFzc2VtYmx5LlRhYmxlIG9iamVjdHMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBMZXQgaW1wb3J0
cyBiZSBhbiBpbml0aWFsbHktZW1wdHkgbGlzdCBvZiBleHRlcm5hbCB2YWx1ZXMuCi0gICAgdW5z
aWduZWQgbnVtSW1wb3J0RnVuY3Rpb25zID0gMDsKICAgICB1bnNpZ25lZCBudW1JbXBvcnRHbG9i
YWxzID0gMDsKIAogICAgIGJvb2wgaGFzTWVtb3J5SW1wb3J0ID0gZmFsc2U7CiAgICAgYm9vbCBo
YXNUYWJsZUltcG9ydCA9IGZhbHNlOworCisgICAgaWYgKGNyZWF0aW9uTW9kZSA9PSBXYXNtOjpD
cmVhdGlvbk1vZGU6OkZyb21KUykgeworICAgICAgICAvLyBJZiB0aGUgbGlzdCBvZiBtb2R1bGUu
aW1wb3J0cyBpcyBub3QgZW1wdHkgYW5kIFR5cGUoaW1wb3J0T2JqZWN0KSBpcyBub3QgT2JqZWN0
LCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCisgICAgICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5p
bXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjYW4ndCBtYWtlIFdlYkFz
c2VtYmx5Lkluc3RhbmNlIGJlY2F1c2UgdGhlcmUgaXMgbm8gaW1wb3J0cyBPYmplY3QgYW5kIHRo
ZSBXZWJBc3NlbWJseS5Nb2R1bGUgcmVxdWlyZXMgaW1wb3J0cyIpKSk7CisgICAgfQorCiAgICAg
Ly8gRm9yIGVhY2ggaW1wb3J0IGkgaW4gbW9kdWxlLmltcG9ydHM6CiAgICAgZm9yIChhdXRvJiBp
bXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7Ci0gICAgICAgIC8vIDEuIExldCBv
IGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBp
Lm1vZHVsZV9uYW1lKS4KLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGltcG9y
dE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZy
b21VVEY4KGltcG9ydC5tb2R1bGUpKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9iamVj
dCwgdGhyb3cgYSBUeXBlRXJyb3IuCi0gICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9iamVj
dCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9k
dWxlVmFsdWUpKSk7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpKTsKKyAgICAg
ICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkLT5hcHBl
bmRSZXF1ZXN0ZWRNb2R1bGUobW9kdWxlTmFtZSk7CisgICAgICAgIG1vZHVsZVJlY29yZC0+YWRk
SW1wb3J0RW50cnkoV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAgICAg
ICAgICAgIG1vZHVsZU5hbWUsCisgICAgICAgICAgICBmaWVsZE5hbWUsCisgICAgICAgICAgICBJ
ZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwg
IldlYkFzc2VtYmx5SW1wb3J0TmFtZSIpKSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICB9
KTsKKworICAgICAgICAvLyBTa2lwIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gdmFsaWRh
dGlvbiBoZXJlLiBJdCB3aWxsIGJlIGRvbmUgaW4gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsuCisgICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIGFsbCB0aGUgbGlua2luZyBj
b2RlIGhlcmUgdG8gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsuCisgICAgICAgIHN3aXRj
aCAoaW1wb3J0LmtpbmQpIHsKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0
aW9uOgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxL
aW5kOjpUYWJsZToKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeToKKyAg
ICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKLSAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZhbHVlIG9mIHBlcmZv
cm1pbmcgR2V0KG8sIGkuaXRlbV9uYW1lKQotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOwotICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6
ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAo
Y3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKSB7CisgICAgICAgICAg
ICAvLyAxLiBMZXQgbyBiZSB0aGUgcmVzdWx0YW50IHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0KGlt
cG9ydE9iamVjdCwgaS5tb2R1bGVfbmFtZSkuCisgICAgICAgICAgICBKU1ZhbHVlIGltcG9ydE1v
ZHVsZVZhbHVlID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICAg
ICAgLy8gMi4gSWYgVHlwZShvKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci4KKyAg
ICAgICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOworCisg
ICAgICAgICAgICAvLyAzLiBMZXQgdiBiZSB0aGUgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQobywg
aS5pdGVtX25hbWUpCisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdl
dChleGVjLCBmaWVsZE5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbHVlKQorICAgICAg
ICAgICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaW1wb3J0Lmtp
bmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7Ci0gICAg
ICAgICAgICAvLyA0LiBJZiBpIGlzIGEgZnVuY3Rpb24gaW1wb3J0OgotICAgICAgICAgICAgLy8g
aS4gSWYgSXNDYWxsYWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJy
b3IuCi0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCBmdW5jdGlvbiIsICJtdXN0IGJlIGNh
bGxhYmxlIikpKTsKLQotICAgICAgICAgICAgV2FzbTo6SW5zdGFuY2UqIGNhbGxlZUluc3RhbmNl
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Okxv
YWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKLQotICAgICAg
ICAgICAgLy8gaWkuIElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdDoK
LSAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKLSAgICAgICAg
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwotICAg
ICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGZ1bmN0aW9uLCB3YXNt
RnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgLy8gYS4g
SWYgdGhlIHNpZ25hdHVyZSBvZiB2IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgaSwg
dGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCi0gICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggaW1wb3J0ZWRTaWduYXR1cmVJbmRleDsKLSAgICAgICAgICAgICAgICBpZiAo
d2FzbUZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydGVkU2lnbmF0dXJlSW5k
ZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxlZUluc3RhbmNlID0gJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IHdhc21GdW5jdGlv
bi0+ZW50cnlwb2ludExvYWRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRl
eCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCi0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0
ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaW1wb3J0
ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhl
Yywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNp
Z25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidz
IHNpZ25hdHVyZSIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBpaWkuIE90aGVy
d2lzZToKLSAgICAgICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3QgZnVuY3Rp
b24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5nIFdlYkFz
c2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1ZhbHVlIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2ViQXNzZW1i
bHlWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5vdGU6IGRvbmUgYXMgcGFydCBvZiBQbGFuIGNvbXBp
bGF0aW9uLgotICAgICAgICAgICAgLy8gaXYuIEFwcGVuZCB2IHRvIGZ1bmNzLgotICAgICAgICAg
ICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8gdGhlIGluc3RhbmNlIGxpc3QgZnVsZmls
bHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUgKHRoZSBXZWJBc3NlbWJseS5JbnN0YW5j
ZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93ICh0aGUgSlNGdW5jdGlvbikuCi0KLSAg
ICAgICAgICAgIEFTU0VSVChudW1JbXBvcnRGdW5jdGlvbnMgPT0gaW1wb3J0LmtpbmRJbmRleCk7
Ci0gICAgICAgICAgICBhdXRvKiBpbmZvID0ganNJbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRG
dW5jdGlvbkluZm8obnVtSW1wb3J0RnVuY3Rpb25zKTsKLSAgICAgICAgICAgIGluZm8tPnRhcmdl
dEluc3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7Ci0gICAgICAgICAgICBpbmZvLT53YXNtRW50cnlw
b2ludExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRpb247Ci0gICAgICAgICAgICBq
c0luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFBvaXNvbmVkQmFycmllcjxKU09i
amVjdD4+KG51bUltcG9ydEZ1bmN0aW9ucyktPnNldCh2bSwganNJbnN0YW5jZSwgZnVuY3Rpb24p
OwotICAgICAgICAgICAgKytudW1JbXBvcnRGdW5jdGlvbnM7Ci0gICAgICAgICAgICAvLyB2LiBB
cHBlbmQgY2xvc3VyZSB0byBpbXBvcnRzLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0zMzcsNiArMzIz
LDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQorICAgIEFTU0VSVChtb2R1bGVSZWNvcmQtPmltcG9ydEVudHJpZXMoKS5zaXplKCkgPT0gbW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXplKCkpOwogCiAgICAgewogICAgICAgICBpZiAoISFt
b2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkgJiYgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmlzSW1w
b3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgKaW5kZXggMDMyYjU2NWYwODFlMGUwNzFiZmNkYjNhYmU3OWI5OWU3
ODkxM2Y5Yi4uM2NhNDZkNmRiZmRlOTQ5NTg1MGZlMDlkOWNkZWE1ODFhNTdlZTcwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUgIldhc21DcmVhdGlvbk1vZGUuaCIKICNpbmNsdWRlICJX
YXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTUyLDEzICs1MywxMiBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogCiAgICAgc3RhdGljIElkZW50aWZpZXIgY3JlYXRlUHJpdmF0ZU1vZHVsZUtl
eSgpOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxl
KiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4m
Jik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwg
SlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4mJiwg
V2FzbTo6Q3JlYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIGVudW0gY2xhc3MgTW9kdWxlUnVuTW9kZSB7IFJ1biwgTm9uZSB9OwotICAg
IHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxv
Y2s+JiYsIE1vZHVsZVJ1bk1vZGUpOworICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4
ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgCiAgICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNl
KCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNy4uMjA4OWU0ZjcxNTNiMjY5MGZhNzhh
M2ViYTcyNjUxNDc5ZmNkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBA
IC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICBTdHJ1Y3R1cmUq
IGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGlu
c3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSk7Cisg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVN
b2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8
V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9t
SlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpbnN0YW5j
ZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3lu
Yygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVK
U1RvV2FzbVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRl
eHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIs
ICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25N
b2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5k
ZXggMGU0ODQ3NThhNGMxZDYxMGRiMmE4OGFmZDdjNmM5ZjZiYTUzYTQxZC4uZDg4MWNhNDBhYjRk
ZDQ3MjBmMjA2NGM4YzQzODM2ZGEwOGRhZmQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpwcmVwYXJlTGluayhWTSYg
dm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuYwogICAgIG1faW5zdGFuY2Uuc2V0KHZt
LCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKQordm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDUs
NiArMTA1LDEyNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSkKICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBtX2lu
c3RhbmNlLT5tb2R1bGUoKTsKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCk7CiAKKyAgICBhdXRv
IGV4Y2VwdGlvbiA9IFsmXSAoSlNPYmplY3QqIGVycm9yKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBlcnJvcik7CisgICAgfTsKKworICAgIGF1dG8gaW1wb3J0RmFpbE1l
c3NhZ2UgPSBbJl0gKGNvbnN0IFdhc206OkltcG9ydCYgaW1wb3J0LCBjb25zdCBjaGFyKiBiZWZv
cmUsIGNvbnN0IGNoYXIqIGFmdGVyKSB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGJlZm9y
ZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpLCAiOiIsIFN0cmluZzo6ZnJv
bVVURjgoaW1wb3J0LmZpZWxkKSwgIiAiLCBhZnRlcik7CisgICAgfTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgaW1wb3J0IDogbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cykgeworICAgICAgICBJ
ZGVudGlmaWVyIG1vZHVsZU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5n
Ojpmcm9tVVRGOChpbXBvcnQubW9kdWxlKSk7CisgICAgICAgIElkZW50aWZpZXIgZmllbGROYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZp
ZWxkKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIGlmIChjcmVhdGlvbk1vZGUg
PT0gV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpIHsKKyAgICAgICAgICAgIC8vIDEuIExldCBv
IGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBp
Lm1vZHVsZV9uYW1lKS4KKyAgICAgICAgICAgIEpTVmFsdWUgaW1wb3J0TW9kdWxlVmFsdWUgPSBp
bXBvcnRPYmplY3QtPmdldChleGVjLCBtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICAvLyAyLiBJZiBUeXBlKG8p
IGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yLgorICAgICAgICAgICAgaWYgKCFpbXBv
cnRNb2R1bGVWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9y
dCIsICJtdXN0IGJlIGFuIG9iamVjdCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVU
eXBlRm9yVmFsdWUoaW1wb3J0TW9kdWxlVmFsdWUpKSk7CisKKyAgICAgICAgICAgIC8vIDMuIExl
dCB2IGJlIHRoZSB2YWx1ZSBvZiBwZXJmb3JtaW5nIEdldChvLCBpLml0ZW1fbmFtZSkKKyAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpbXBvcnRNb2R1bGVW
YWx1ZSk7CisgICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGZpZWxkTmFtZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9k
dWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBtb2R1bGVOYW1lKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBS
ZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVj
LCBmaWVsZE5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5h
bWUgJyIsIFN0cmluZyhmaWVsZE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlw
ZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2Nv
cGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhmaWVsZE5h
bWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlw
bGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
Y2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRh
eEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdk
ZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5
cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0
aW9uLm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9y
dGVkRW52aXJvbm1lbnQgPSBpbXBvcnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnRNYXlCZU51
bGwoKTsKKyAgICAgICAgICAgIC8vIEl0IG1lYW5zIHRoYXQgdGFyZ2V0IG1vZHVsZSBpcyBub3Qg
bGlua2VkIHlldC4gSW4gd2FzbSBsb2FkaW5nLCB3ZSBhbGxvdyB0aGlzIHNpbmNlIHdlIGRvIG5v
dCBzb2x2ZSBjeWNsaWMgcmVzb2x1dGlvbiBhcyBpZiBKUydzIGJpbmRpbmdzLgorICAgICAgICAg
ICAgLy8gQXQgdGhhdCB0aW1lLCBlcnJvciBvY2N1cnMgc2luY2UgfHZhbHVlfCBpcyBhbiBlbXB0
eSwgYW5kIGxhdGVyIHx2YWx1ZXwgYmVjb21lcyBhbiB1bmRlZmluZWQuCisgICAgICAgICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZXNtLWludGVncmF0aW9uL3RyZWUvbWFz
dGVyL3Byb3Bvc2Fscy9lc20taW50ZWdyYXRpb24janMtLS13YXNtLWN5Y2xlLXdoZXJlLWpzLWlz
LWhpZ2hlci1pbi10aGUtbW9kdWxlLWdyYXBoCisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRFbnZp
cm9ubWVudCkgeworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGlt
cG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CisgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBzeW1ib2xUYWJsZS0+ZmluZChsb2NrZXIsIHJlc29sdXRpb24ubG9jYWxO
YW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXIgIT0gc3ltYm9sVGFibGUt
PmVuZChsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9
IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZEVudmlyb25tZW50LT5pc1ZhbGlkU2NvcGVP
ZmZzZXQoZW50cnkuc2NvcGVPZmZzZXQoKSkpOworCisgICAgICAgICAgICAgICAgLy8gU25hcHNo
b3R0aW5nIGEgdmFsdWUuCisgICAgICAgICAgICAgICAgdmFsdWUgPSBpbXBvcnRlZEVudmlyb25t
ZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLmdldCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CisKKyAgICAgICAgc3dpdGNoIChpbXBvcnQua2luZCkgeworICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKKyAgICAgICAgICAgIC8vIDQuIElm
IGkgaXMgYSBmdW5jdGlvbiBpbXBvcnQ6CisgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxl
KHYpIGlzIGZhbHNlLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KKyAgICAgICAgICAg
IGlmICghdmFsdWUuaXNGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3Nh
Z2UoaW1wb3J0LCAiaW1wb3J0IGZ1bmN0aW9uIiwgIm11c3QgYmUgY2FsbGFibGUiKSkpOworCisg
ICAgICAgICAgICBXYXNtOjpJbnN0YW5jZSogY2FsbGVlSW5zdGFuY2UgPSBudWxscHRyOworICAg
ICAgICAgICAgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIGVudHJ5
cG9pbnRMb2FkTG9jYXRpb24gPSBudWxscHRyOworICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0
aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpOworCisgICAgICAgICAgICAvLyBpaS4gSWYg
diBpcyBhbiBFeHBvcnRlZCBGdW5jdGlvbiBFeG90aWMgT2JqZWN0OgorICAgICAgICAgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOworICAgICAgICAgICAgV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb247CisgICAgICAgICAgICBpZiAoaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb24sIHdhc21GdW5jdGlvbiwgd2FzbVdy
YXBwZXJGdW5jdGlvbikpIHsKKyAgICAgICAgICAgICAgICAvLyBhLiBJZiB0aGUgc2lnbmF0dXJl
IG9mIHYgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiBpLCB0aHJvdyBhIFdlYkFzc2Vt
Ymx5LkxpbmtFcnJvci4KKyAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBpbXBv
cnRlZFNpZ25hdHVyZUluZGV4OworICAgICAgICAgICAgICAgIGlmICh3YXNtRnVuY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRleCA9IHdhc21GdW5jdGlv
bi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGVlSW5zdGFuY2Ug
PSAmd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpOworICAgICAgICAgICAgICAg
ICAgICBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gd2FzbUZ1bmN0aW9uLT5lbnRyeXBvaW50TG9h
ZExvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVy
ZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tD
bG9zdXJlXV0uCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5j
dGlvbi0+ZnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgV2Fz
bTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0
aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKKyAg
ICAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25h
dHVyZUluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwg
ImltcG9ydGVkIGZ1bmN0aW9uIiwgInNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRl
ZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBpaWkuIE90aGVyd2lzZToKKyAgICAgICAgICAgIC8vIGEuIExldCBjbG9z
dXJlIGJlIGEgbmV3IGhvc3QgZnVuY3Rpb24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBj
YWxscyB2IGJ5IGNvZXJjaW5nIFdlYkFzc2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFy
Z3VtZW50cyB2aWEgVG9KU1ZhbHVlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkg
Y29lcmNpbmcgdmlhIFRvV2ViQXNzZW1ibHlWYWx1ZS4KKyAgICAgICAgICAgIC8vIE5vdGU6IGRv
bmUgYXMgcGFydCBvZiBQbGFuIGNvbXBpbGF0aW9uLgorICAgICAgICAgICAgLy8gaXYuIEFwcGVu
ZCB2IHRvIGZ1bmNzLgorICAgICAgICAgICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8g
dGhlIGluc3RhbmNlIGxpc3QgZnVsZmlsbHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUg
KHRoZSBXZWJBc3NlbWJseS5JbnN0YW5jZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93
ICh0aGUgSlNGdW5jdGlvbikuCisKKyAgICAgICAgICAgIGF1dG8qIGluZm8gPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnQua2luZEluZGV4KTsKKyAgICAg
ICAgICAgIGluZm8tPnRhcmdldEluc3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7CisgICAgICAgICAg
ICBpbmZvLT53YXNtRW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRp
b247CisgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaW1wb3J0Lmtp
bmRJbmRleCktPnNldCh2bSwgbV9pbnN0YW5jZS5nZXQoKSwgZnVuY3Rpb24pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRh
YmxlOiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdhc206
OkV4dGVybmFsS2luZDo6TWVtb3J5OiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xvYmFsOiB7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgU3ltYm9sVGFibGUqIGV4
cG9ydFN5bWJvbFRhYmxlID0gbW9kdWxlLT5leHBvcnRTeW1ib2xUYWJsZSgpOwogICAgIHVuc2ln
bmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmgKaW5kZXggNDE3YTBjNjA4MzdkNDVjZWI1NjMxZjRiMGY0NzVkYjNi
NWZiMzg5YS4uMzE2ZjMzN2RlYzBjOWJlNjEzY2JiM2Q1YTVmNDQ4ZjgzNzYzOWVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAj
aW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJXYXNtQ3JlYXRpb25N
b2RlLmgiCiAjaW5jbHVkZSAiV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5h
bCA6IHB1YmxpYyBBYnN0cmFjdE1vZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAogICAgIHZvaWQg
cHJlcGFyZUxpbmsoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKLSAgICB2b2lkIGxpbmso
RXhlY1N0YXRlKiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICB2b2lkIGxpbmsoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNt
OjpDcmVhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUo
RXhlY1N0YXRlKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKaW5kZXggNGVmNjQ3YTNiYWE0Y2Nl
NTNlYmM5NDQzNzNiN2VjOWUwYTM2ODlhNi4uYzdhZDBlM2RkY2E4ZDY0NDQ5YWYxNTkxNzFhZmNi
ODZhMzgwZWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3Rh
dGUqIGV4ZWMpCiB9CiAKIGVudW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1v
ZHVsZVJlY29yZCwgV2l0aE1vZHVsZUFuZEluc3RhbmNlIH07Ci1zdGF0aWMgdm9pZCByZXNvbHZl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvZGVCbG9jaywgUmVzb2x2ZSByZXNvbHZlS2luZCwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCitzdGF0
aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJl
ZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJs
eU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBSZWY8V2FzbTo6Q29kZUJs
b2NrPiYmIGNvZGVCbG9jaywgUmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2Rl
IGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7Ci0gICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29k
ZUJsb2NrKSwgbW9kdWxlUnVuTW9kZSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24o
dm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2NrKSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29wZSwgcHJv
bWlzZSkpOwogCiAgICAgaWYgKHJlc29sdmVLaW5kID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkK
QEAgLTE0NCwyOCArMTQ0LDI5IEBAIHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzCiAgICAgQ0xFQVJf
QU5EX1JFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2Jq
ZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtpbmQsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQorc3RhdGlj
IHZvaWQgaW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgUmVzb2x2ZSByZXNvbHZlS2lu
ZCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcG90ZW50
aWFsbHkgcmVjb21waWxpbmcgYSBtb2R1bGUuIFdlIGZpcnN0IGdhdGhlciBhbGwgdGhlIGltcG9y
dC9tZW1vcnkgaW5mb3JtYXRpb24gcHJpb3IgdG8gY29tcGlsaW5nIGNvZGUuCi0gICAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
KHZtLCBleGVjLCBtb2R1bGVLZXksIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgUmVmPFdhc206
Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
aW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxl
S2V5LCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5X
ZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+
bW9kdWxlKCkpLCBjcmVhdGlvbk1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgLy8gVGhlIGluc3RhbmNlIGtlZXBzIHRoZSBtb2R1bGUg
YWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFu
Y2UpKTsKKyAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRP
YmplY3QpKTsKICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uo
cHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBs
ZXRpb24gdGFzayBtYXkgb3IgbWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgotICAgIG1v
ZHVsZS0+bW9kdWxlKCkuY29tcGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1l
bW9yeU1vZGUoKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlw
ZT4oW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2Rl
LCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7Cisg
ICAgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5j
ZS0+bWVtb3J5TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJh
Y2tUeXBlPihbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVC
bG9jaykgbXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9j
ayA9IFdURk1vdmUocmVmQ29kZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGlt
ZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUs
IHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29k
ZUJsb2NrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5z
Y2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBv
cnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RG
TW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAg
cmVzb2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJl
bGVhc2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlKTsKKyAgICAgICAgICAg
IHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVj
dCwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUp
OwogICAgICAgICB9KTsKICAgICB9KSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldh
c206Ondhc21Ub0pTRXhjZXB0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3Rh
bnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlz
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3Qq
IGltcG9ydE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCitzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5z
dGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9t
aXNlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgYnVmZmVyLCBKU09iamVj
dCogaW1wb3J0T2JqZWN0LCBSZXNvbHZlIHJlc29sdmVLaW5kLCBXYXNtOjpDcmVhdGlvbk1vZGUg
Y3JlYXRpb25Nb2RlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKIApAQCAtMTgwLDggKzE4MSw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhl
YywgYnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhlYywg
c2NvcGUsIHByb21pc2UpKTsKIAotICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0u
d2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1
bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwg
Z2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoV2FzbTo6TW9k
dWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJv
bWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGlt
cG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dICgpIG11dGFibGUgewor
ICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUo
c291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3By
b21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQm
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+c2No
ZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlD
ZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQs
IGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1v
ZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3Vs
dCkpOwpAQCAtMTkyLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpOwogCi0gICAgICAgICAgICBpbnN0YW50
aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleSwg
cmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUpOworICAgICAgICAgICAgaW5zdGFudGlhdGUodm0s
IGV4ZWMsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXksIHJlc29sdmVL
aW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKICAgICB9KSk7CiB9CkBAIC0yMDAsNyAr
MjAxLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHIKIEpTVmFsdWUgV2ViQXNzZW1ibHlQcm90
b3R5cGU6Omluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2UsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBhcmd1bWVudCkKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwg
ZXhlYywgcHJvbWlzZSwgbW9kdWxlS2V5LCBhcmd1bWVudCwgbnVsbHB0ciwgUmVzb2x2ZTo6V2l0
aE1vZHVsZVJlY29yZCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpOb25l
KTsKKyAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZUtl
eSwgYXJndW1lbnQsIG51bGxwdHIsIFJlc29sdmU6OldpdGhNb2R1bGVSZWNvcmQsIFdhc206OkNy
ZWF0aW9uTW9kZTo6RnJvbU1vZHVsZUxvYWRlcik7CiAgICAgcmV0dXJuIHByb21pc2UtPnByb21p
c2UoKTsKIH0KIApAQCAtMjI1LDkgKzIyNiw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgICAgICAgICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nh
c3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAg
ICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZl
OjpXaXRoSW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVu
KTsKKyAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVs
ZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpT
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlh
dGUodm0sIGV4ZWMsIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0
ZU1vZHVsZUtleSgpLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhN
b2R1bGVBbmRJbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpS
dW4pOworICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJv
bWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZp
cnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNl
LCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjM5NTYwNjRmN2QyN2QwM2U2MjA5
NjZiN2U4ZTg1YjA1ZmQ5NGJlZS4uYzljYzI2MWVhOTg1YmRmYzVkMzUxMDNkYzY1Mjg0NmRlNDAx
YzNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTA0LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wbGVtZW50IGZ1
bmN0aW9uIGltcG9ydCBmcm9tIHdhc20gbW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0Njg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJ1bldlYkFzc2VtYmx5RGlyZWN0LCB3aGljaCBy
dW5zIHdhc20gZmlsZSBkaXJlY3RseS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHM6CisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRvIGNsZWFyIEpTQ0NvbnRleHQg
dW5jYXVnaHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBhMTg2
YzA5ZmNlOTliZGRkODY5ZGNkZmZmY2ZhNjRlNWYyOGY2OWE5Li4yNGE4M2M3NDQ4YzVjNjgzNGU1
MzU4NTJmNTY0MDEzY2E1NTFjNGM2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAg
LTEwMTQsNiArMTAxNCwxOSBAQCBkZWYgcnVuV2ViQXNzZW1ibHkKICAgICBlbmQKIGVuZAogCitk
ZWYgcnVuV2ViQXNzZW1ibHlEaXJlY3QKKyAgICByZXR1cm4gaWYgISRqaXRUZXN0cworICAgIHJl
dHVybiBpZiAhJGlzRlRMUGxhdGZvcm0KKyAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIsICpG
VExfT1BUSU9OUykKKyAgICBpZiAkbW9kZSAhPSAicXVpY2siCisgICAgICAgIHJ1bigid2FzbS1u
by1jaml0LXllcy10bHMtY29udGV4dCIsICItbSIsICItLXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4
dD10cnVlIiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUykpCisgICAgICAgIHJ1bigi
d2FzbS1lYWdlci1qZXR0aXNvbiIsICItbSIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1
ZVRvT2xkQWdlPXRydWUiLCAqRlRMX09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1uby1jYWxs
LWljIiwgIi1tIiwgIi0tdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZhbHNlIiwg
KkZUTF9PUFRJT05TKQorICAgICAgICBydW4oIndhc20tbm8tdGxzLWNvbnRleHQiLCAiLW0iLCAi
LS11c2VGYXN0VExTRm9yV2FzbUNvbnRleHQ9ZmFsc2UiLCAqRlRMX09QVElPTlMpCisgICAgICAg
IHJ1bigid2FzbS1zbG93LW1lbW9yeSIsICItbSIsICItLXVzZVdlYkFzc2VtYmx5RmFzdE1lbW9y
eT1mYWxzZSIsICpGVExfT1BUSU9OUykKKyAgICBlbmQKK2VuZAorCiBkZWYgcnVuV2ViQXNzZW1i
bHlFbXNjcmlwdGVuKG1vZGUpCiAgICAgY2FzZSBtb2RlCiAgICAgd2hlbiA6c2tpcApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlYTcxYzFi
MGUyY2U4NzI2NzljMzlhNmE0Nzg4Nzg4ZDg2ZjRiNDQ3Li44NDZiMzZmZWIxZTM1NzVhMjdlMjYz
OWRiM2MxNzBkNDNjMTE3NzIzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA0LTE3ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJBc3NlbWJseV1bTW9k
dWxlc10gSW1wbGVtZW50IGZ1bmN0aW9uIGltcG9ydCBmcm9tIHdhc20gbW9kdWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0Njg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6Cisg
ICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAq
IHdhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZy
b20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0LnJldHVybjQyKToKKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9t
b2R1bGVzL2pzLXdhc20tY3ljbGUvc3VtLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1
bGVzL3J1bi1mcm9tLXdhc20ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3J1
bi1mcm9tLXdhc20ud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvcnVuLWZyb20t
d2FzbS9jaGVjay5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuY2hlY2spOgorICAgICAgICAq
IHdhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAg
ICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbTogQWRk
ZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9y
dHMud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4
cG9ydHMvc3VtLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5zdW0pOgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMuanM6IEFk
ZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13
YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMv
d2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2Fz
bS1leHBvcnRzL3JlLWV4cG9ydC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbTogQWRkZWQuCisg
ICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhw
b3J0cy9zdW0ud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRz
LXdhc20tZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1w
b3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdDogQWRkZWQuCisgICAg
ICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc206IEFk
ZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL3N1
bS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXNtOiBB
ZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQ6IEFk
ZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL3N1bS5qczogQWRkZWQu
CisgICAgICAgIChmcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5zdW0pOgorICAgICAg
ICAqIHdhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnkud2FzbTogQWRkZWQuCisgICAgICAgICog
d2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRyeS53YXQ6IEFkZGVkLgorICAgICAgICAq
IHdhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhc206IEFkZGVkLgorICAgICAgICAq
IHdhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhdDogQWRkZWQuCisKIDIwMTgtMDQt
MTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dl
YkFzc2VtYmx5XVtNb2R1bGVzXSBQcm90b3R5cGUgd2FzbSBpbXBvcnQKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggODdjODgwMjlhN2E1NTAx
Y2Q1NjBjNTQxZGFhOGUxOTMzZGE4Mzk4OC4uOTg5NGY5ZDk3OTY0Yjg3YWJiMzdmNmE0NzAwNTRi
NmE1N2ExYWQzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93
YXNtLnlhbWwKQEAgLTE3OCwzICsxNzgsNiBAQAogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rl
c3QgOm5vcm1hbAogLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvdXRmOC1pbXBvcnQtbW9kdWxlLndh
c3QuanMKICAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKworLSBwYXRoOiB3
YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXNtCisgIGNtZDogcnVuV2ViQXNzZW1ibHlEaXJl
Y3QKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanMgYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjBmODY2
YzI5YTM4OTc4NDc5NTQxMjMzZTkwNzRmODc5ODc0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlLmpzCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQoIi4vanMtd2FzbS1jeWNs
ZS9lbnRyeS5qcyIpLnRoZW4oJHZtLmFib3J0LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICBhc3Nl
cnQuZXEoU3RyaW5nKGVycm9yKSwgYEVycm9yOiBpbXBvcnQgZnVuY3Rpb24gLi9lbnRyeS5qczpy
ZXR1cm40MiBtdXN0IGJlIGNhbGxhYmxlYCk7Cit9KS50aGVuKGZ1bmN0aW9uICgpIHsgfSwgJHZt
LmFib3J0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUv
ZW50cnkuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIwMTQzNjQ0YTAxYzczNjc3NDg4YTgxZGU5MGE4Y2M0OWExZTJlYmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5Lmpz
CkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHsgc3VtIH0gZnJvbSAiLi9zdW0ud2FzbSIKK2V4cG9y
dCBmdW5jdGlvbiByZXR1cm40MigpIHsKKyAgICByZXR1cm4gNDI7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXNtIGIvSlNUZXN0cy93YXNt
L21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGMxNmU1Y2ZhYzYx
ZTg4ZWZkM2JhZTNmMTQ2MWQxNTE1NzUwYWE3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6
Y21WfiRJfVUmIzVDeT5abUk4JFgqbTQzKWowYnsoaDZEO2VoMUZpJjhSWGRyZkxAWlFRV0wwaCha
IyM7SE5JSHEKWEcwTkpiellsMUh1JEVALTJEKzBMZmRTUzN7KmV0RwoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9z
dW0ud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNlMjIzZjc2Y2U0MmIyNjIyNTBiNWJlYjcwNjI1MzlmNWFlNTU5NWUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXQKQEAg
LTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9lbnRyeS5qcyIgInJldHVybjQy
IiAoZnVuYyAkcmV0dXJuNDIgKHJlc3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBh
cmFtIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJzdW0i
KSAodHlwZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBpMzIp
CisgICAgICAgIGdldF9sb2NhbCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBp
MzIuYWRkKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20u
d2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2FzbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzM0NWU2Y2VjNTVkYWM2YWFkYmRjMmY0NjJlMzI2NzU4MzRhMTMxCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCA3MQp6Y21aUWJFWTQrUVV8P1k2VWBrK01OTU5qSVV7WWR+KDk8c30mQ15YUSVG
b3A7MlApN3smUFl3cCoyXmtwMXYzfkoKVm5WQT9GSTJha1pJMmhSJjlKS0AoeEIoenU0bFYheQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMv
cnVuLWZyb20td2FzbS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndh
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZTUxZTUwYTIxOWE4YzExNmRiMGM0MWIwZDk5ZDgwOGM4OTNjYTA3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXQK
QEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9ydW4tZnJvbS13YXNtL2No
ZWNrLmpzIiAiY2hlY2siIChmdW5jICRjaGVjayAocGFyYW0gaTMyKSkpCisgICAgKHR5cGUgJHQw
IChmdW5jKSkKKyAgICAoZnVuYyAkbWFpbiAodHlwZSAkdDApCisgICAgICAgIGkzMi5jb25zdCA0
MgorICAgICAgICBjYWxsICRjaGVjaykKKyAgICAoc3RhcnQgJG1haW4pKQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS9jaGVjay5qcyBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3J1bi1mcm9tLXdhc20vY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhMzUzNTI2ZTQ1
YThjNzE2YjNmYzI4MDc4ODUwMjE1Mzg1YjBlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20vY2hlY2suanMKQEAgLTAsMCArMSw2IEBACitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vLi4vYXNzZXJ0LmpzJzsKKworZXhwb3J0IGZ1bmN0aW9u
IGNoZWNrKHZhbHVlKQoreworICAgIGFzc2VydC5lcSh2YWx1ZSwgNDIpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMgYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MDlkMGJjYWQ4OWI1YjU2ODllM2IxOWRjMjllMzkwYTk4NzhhMWQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMKQEAgLTAs
MCArMSw3IEBACitpbXBvcnQgeyBhZGRPbmUgfSBmcm9tICIuL3dhc20taW1wb3J0cy1qcy1leHBv
cnRzL2ltcG9ydHMud2FzbSIKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMn
OworCithc3NlcnQuaXNGdW5jdGlvbihhZGRPbmUpOworYXNzZXJ0LmVxKGFkZE9uZSgzMiksIDMz
KTsKK2Fzc2VydC5lcShhZGRPbmUoLTIpLCAtMSk7Cithc3NlcnQuZXEoYWRkT25lKDB4N2ZmZmZm
ZmYpLCAtMjE0NzQ4MzY0OCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93
YXNtLWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkODdlNjE4
ZmIxNjZkNzM1YTNhYTE1NzY5ZmZiNDYzODU0ODFkYQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
NjgKemNtWlFiRVk0K1FVfD9ZNlZNPGBFWFJKP1BzdDF4eDAqb0FiYG8qUVdkUmZLSEsjR0JwblRl
NXNvcntxekYodCk2ClVGT2A5amk7SXppIUk0cGNMNGJpOTBMN0ZHI3tkOFQKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0
cy1qcy1leHBvcnRzL2ltcG9ydHMud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBv
cnRzLWpzLWV4cG9ydHMvaW1wb3J0cy53YXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUxMTJlMGU0NTJhMjA5ZDZl
ODI3NmM0YWM1ZjhlNWJjOWYzYTJhMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2F0CkBAIC0wLDAgKzEsNyBA
QAorKG1vZHVsZQorICAgIChpbXBvcnQgIi4vc3VtLmpzIiAic3VtIiAoZnVuYyAkc3VtIChwYXJh
bSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMy
KSAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikgKHR5
cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAx
CisgICAgICAgIGdldF9sb2NhbCAkcDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcyBiL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZDgzYjY3MzljZWU0ZmFiMTM4MTZmN2Q0YWVhZGFkYzFiNTBmZWJjCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3Vt
LmpzCkBAIC0wLDAgKzEsNCBAQAorZXhwb3J0IGZ1bmN0aW9uIHN1bShhcmcwLCBhcmcxKQorewor
ICAgIHJldHVybiBhcmcwICsgYXJnMTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcyBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MzljMjM0NjUxOTVkMmQzOGY1MmViYjUwZWVhY2FhZTcxYWY0NjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4
cG9ydHMtd2FzbS1leHBvcnRzLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsgYWRkT25lIH0g
ZnJvbSAiLi93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53
YXNtIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC5p
c0Z1bmN0aW9uKGFkZE9uZSk7Cithc3NlcnQuZXEoYWRkT25lKDMyKSwgMzMpOworYXNzZXJ0LmVx
KGFkZE9uZSgtMiksIC0xKTsKK2Fzc2VydC5lcShhZGRPbmUoMHg3ZmZmZmZmZiksIC0yMTQ3NDgz
NjQ4KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1y
ZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1YjY1MjIyZmZlYTc5MGZmMGM5NWZlZmY2YWZkY2I0OGI0MjI3YTYKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDc0CnpjbVpRYkVZNCtRVXw/WTZWTTxgRVhSSj9Qc3QxeHhWdkt4
eGBiRFhfc1RCcUpNSjBNISNtdlF9eGVTY1ZPcEZaZApiVCNSZ3FESmxNV3NTSiE8VCNPdEhqKkpR
bjB1MDskTzF1c3YKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBv
cnRzLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRz
LXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGU5NjdkYzNkODc4OWI3YWRl
NDA2YTYwY2RkYTMxNWIxZWQ4YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0
CkBAIC0wLDAgKzEsNyBAQAorKG1vZHVsZQorICAgIChpbXBvcnQgIi4vcmUtZXhwb3J0LmpzIiAi
c3VtIiAoZnVuYyAkc3VtIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBl
ICR0MCAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRhZGRPbmUg
KGV4cG9ydCAiYWRkT25lIikgKHR5cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHJlc3VsdCBpMzIp
CisgICAgICAgIGkzMi5jb25zdCAxCisgICAgICAgIGdldF9sb2NhbCAkcDAKKyAgICAgICAgY2Fs
bCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1q
cy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9yZS1leHBvcnQuanMgYi9KU1Rlc3RzL3dhc20vbW9k
dWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvcmUtZXhwb3J0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUxNmJhMWMwMzczM2YxZjU5ZjA3MTA5NTc5MzM0N2E3ZjRmMGU4MWMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUt
ZXhwb3J0cy13YXNtLWV4cG9ydHMvcmUtZXhwb3J0LmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCB7
IHN1bSB9IGZyb20gIi4vc3VtLndhc20iCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20gYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMv
c3VtLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM3MjJhN2MzYjdmZTIxMDM5YzQ4NDYzNDFhYjE0ZGZhOWE0
OTljZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDEKd2NtWlFiRVk0K1FVfD9XbVhHfnpLdVY8
YGhXQDJQdVhKPSRDRjNufE47Tm9PdFhIWn5OVjk0U0kwRGhlWFk1KUtMCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMt
anMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhM2YyYTM1OTM4MzA4MTNjNDEzYTBhMTM2MjU4YzAwYjRkNTY5MzgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13
YXNtLWV4cG9ydHMvc3VtLndhdApAQCAtMCwwICsxLDYgQEAKKyhtb2R1bGUKKyAgICAodHlwZSAk
dDAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAo
ZXhwb3J0ICJzdW0iKSAodHlwZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikg
KHJlc3VsdCBpMzIpCisgICAgICAgIGdldF9sb2NhbCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRw
MAorICAgICAgICBpMzIuYWRkKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy13YXNtLWV4cG9ydHMuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWlt
cG9ydHMtd2FzbS1leHBvcnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOWQwYmNhZDg5YjViNTY4OWUzYjE5
ZGMyOWUzOTBhOTg3OGExZDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsg
YWRkT25lIH0gZnJvbSAiLi93YXNtLWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhc20iCitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LmlzRnVuY3Rp
b24oYWRkT25lKTsKK2Fzc2VydC5lcShhZGRPbmUoMzIpLCAzMyk7Cithc3NlcnQuZXEoYWRkT25l
KC0yKSwgLTEpOworYXNzZXJ0LmVxKGFkZE9uZSgweDdmZmZmZmZmKSwgLTIxNDc0ODM2NDgpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0
cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1l
eHBvcnRzL2ltcG9ydHMud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmU3OWUzYTlhNzViMTJiZGIyNmQ4YmE0
NDVhNzk5OGJkNjUyNzI4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6Y21aUWJFWTQrUVV8
P1k2Vk08YEVYUko/UHN0MXh4TFgyRWBgbypRV2RnVlpRVyp+IXNrKHI1K2Z0YHp5RWlvbTwKVktR
RVBtayZCQ3dnVGF3ZWZrQStROHZ5ZiU0NWsxOAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9p
bXBvcnRzLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9y
dHMvaW1wb3J0cy53YXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYwMjllN2Q2ZTEzMjBlYWJhNWIyODg2ZWQzNzZl
MmYxM2ZmNzdiZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20t
aW1wb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxl
CisgICAgKGltcG9ydCAiLi9zdW0ud2FzbSIgInN1bSIgKGZ1bmMgJHN1bSAocGFyYW0gaTMyIGkz
MikgKHJlc3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3Vs
dCBpMzIpKSkKKyAgICAoZnVuYyAkYWRkT25lIChleHBvcnQgImFkZE9uZSIpICh0eXBlICR0MCkg
KHBhcmFtICRwMCBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICBpMzIuY29uc3QgMQorICAgICAg
ICBnZXRfbG9jYWwgJHAwCisgICAgICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXNtIGIvSlNUZXN0
cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YzcyMmE3YzNiN2ZlMjEwMzljNDg0NjM0MWFiMTRkZmE5YTQ5OWNmCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCA0MQp3Y21aUWJFWTQrUVV8P1dtWEd+ekt1VjxgaFdAMlB1WEo9JENGM258
TjtOb090WEhafk5WOTRTSTBEaGVYWTUpS0wKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3Vt
LndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3Vt
LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYTNmMmEzNTkzODMwODEzYzQxM2EwYTEzNjI1OGMwMGI0ZDU2OTM4
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdh
c20tZXhwb3J0cy9zdW0ud2F0CkBAIC0wLDAgKzEsNiBAQAorKG1vZHVsZQorICAgICh0eXBlICR0
MCAoZnVuYyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChl
eHBvcnQgInN1bSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAo
cmVzdWx0IGkzMikKKyAgICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAw
CisgICAgICAgIGkzMi5hZGQpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2Fz
bS1qcy1jeWNsZS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2NjZGJkM2UwZDRkM2M4YjZlNjM0ODlmMzc5ODNmMjJiNTNmMWY2YwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKQEAgLTAs
MCArMSw0IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworaW1wb3J0
IHsgcmV0dXJuNDIgfSBmcm9tICIuL3dhc20tanMtY3ljbGUvZW50cnkud2FzbSIKKworYXNzZXJ0
LmVxKHJldHVybjQyKCksIDQyKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dh
c20tanMtY3ljbGUvZW50cnkud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3lj
bGUvZW50cnkud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjQ5YmQ1ZjQxMmZmOGQ3NTMzYjNlODc3ZWZjZjNi
MTMzZDMyZTcxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2OQp6Y21aUWJFWTQrUVV8P1k2Vz1k
ZFN0V1JMN3VWPGBoNUA2KWUoPVJUfil5cGJvMjJ1PSsldUl8Nz5eekpkTVg0cEYKV01SX0poNDIp
YntqMnNNKGpFPFRENEJQPEEoaE5AawoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQgYi9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL2VudHJ5LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWNjMTFj
ODUwOTlkNGNkMTNlNTExOTJmY2VkZmZjNzRlZThiZDFmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQKQEAgLTAsMCArMSw3IEBA
CisobW9kdWxlCisgICAgKGltcG9ydCAiLi9zdW0uanMiICJzdW0iIChmdW5jICRzdW0gKHBhcmFt
IGkzMikgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHJl
c3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkcmV0dXJuNDIgKGV4cG9ydCAicmV0dXJuNDIiKSAodHlw
ZSAkdDApIChyZXN1bHQgaTMyKQorICAgICAgICBpMzIuY29uc3QgMQorICAgICAgICBpMzIuY29u
c3QgNDEKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3dhc20tanMtY3ljbGUvc3VtLmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1j
eWNsZS9zdW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNmNzUzNzBmZDJjYTNhNDk3NWExNDNjY2VhMjMzMGI0
ZDdjMTc2NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMt
Y3ljbGUvc3VtLmpzCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHsgcmV0dXJuNDIgfSBmcm9tICIu
L2VudHJ5Lndhc20iCitleHBvcnQgZnVuY3Rpb24gc3VtKGEsIGIpIHsKKyAgICByZXR1cm4gYSAr
IGI7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUu
anMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjFhNTA0ZWE5Y2RlZjcyNmNjNzZmMWU0YTRhNTM1ZGE2OGM3ZGY2OQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS5qcwpAQCAtMCwwICsxLDQg
QEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0KCIuL3dh
c20td2FzbS1jeWNsZS9lbnRyeS53YXNtIikudGhlbigkdm0uYWJvcnQsIGZ1bmN0aW9uIChlcnJv
cikgeworICAgIGFzc2VydC5lcShTdHJpbmcoZXJyb3IpLCBgRXJyb3I6IGltcG9ydCBmdW5jdGlv
biAuL2VudHJ5Lndhc206cmV0dXJuNDIgbXVzdCBiZSBjYWxsYWJsZWApOworfSkudGhlbihmdW5j
dGlvbiAoKSB7IH0sICR2bS5hYm9ydCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLXdhc20tY3ljbGUvZW50cnkud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20t
d2FzbS1jeWNsZS9lbnRyeS53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZjdjOTJhN2QzYTY4OTU5NDA3Nzkw
YzMzNWNkNzM4MDIwOTRmOTAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDcxCnpjbVpRYkVZNCtR
VXw/WTZXPWRkU3RXUkw3dVY8YGg1QE9gaSg9UlR+KWhoPXxHWG9oNmpMYn1vNEQzOU45N1UtbQpY
ckEydXJNaHVLeFQjT3RIaipPMCkwdTA7JGBoZzhECgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnkud2F0
IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MTJiMDM3Nzk3N2Q4NmZkODgxOThjN2I3NzIyNzQ2MzE4MDg4NmI2Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApA
QCAtMCwwICsxLDcgQEAKKyhtb2R1bGUKKyAgICAoaW1wb3J0ICIuL3N1bS53YXNtIiAic3VtIiAo
ZnVuYyAkc3VtIChwYXJhbSBpMzIpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKHR5
cGUgJHQwIChmdW5jIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHJldHVybjQyIChleHBvcnQg
InJldHVybjQyIikgKHR5cGUgJHQwKSAocmVzdWx0IGkzMikKKyAgICAgICAgaTMyLmNvbnN0IDEK
KyAgICAgICAgaTMyLmNvbnN0IDQxCisgICAgICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhc20gYi9KU1Rlc3RzL3dh
c20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRlZTA1MTFj
OTg2ZTUxOWU0MTU1OWMwNTQ4OTQ1YjQyZTI3MjA1MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
NzIKemNtWlFiRVk0K1FVfD9ZNlc9ZGVIdVY8YEpVfF82Z2w0UnUzKEApSlNEWFA+ZjJQKXR3Ti1a
ZlokfT0leVV9Uj11CmFXTUY0IVdHKmh2V25rcHVXTXBTaFV7cWtwO3N5WE5MPUY0XgoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13
YXNtLWN5Y2xlL3N1bS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUv
c3VtLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MWQ4ZGE5MWM0NTEzYTZhZmU3OTRhY2UyNzViNWE2MmZiYzgy
NDczCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5
Y2xlL3N1bS53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9lbnRy
eS53YXNtIiAicmV0dXJuNDIiIChmdW5jICRyZXR1cm40MiAocmVzdWx0IGkzMikpKQorICAgICh0
eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAk
c3VtIChleHBvcnQgInN1bSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEg
aTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9j
YWwgJHAwCisgICAgICAgIGkzMi5hZGQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338108</attachid>
            <date>2018-04-17 07:00:05 -0700</date>
            <delta_ts>2018-04-17 09:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184689-20180417230004.patch</filename>
            <type>text/plain</type>
            <size>70460</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2ZkMzgyMjMzZTQwZjcwNDkzZTA1NDdlOTNhOWZhZjE1ODEzYjk1Li5hNGUzNDJjMWE4ZGExOWNl
MjNhN2M1ZWEzOWFmNzc3ZjBlZDY3OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOC0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIEltcGxlbWVudCBmdW5jdGlv
biBpbXBvcnQgZnJvbSB3YXNtIG1vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmdW5jdGlvbiBpbXBvcnQg
ZnJvbSB3YXNtIG1vZHVsZXMuIFdlIG1vdmUgZnVuY3Rpb24gaW1wb3J0aW5nIHBhcnQKKyAgICAg
ICAgZnJvbSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UncyBjcmVhdGlvbiBmdW5jdGlvbiB0byBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluay4gVGhpcworICAgICAgICBpcyBiZWNhdXNlIGxpbmtp
bmcgdGhlc2UgZnVuY3Rpb25zIHJlcXVpcmVzIHRoYXQgYWxsIHRoZSBkZXBlbmRlbnQgbW9kdWxl
cyBhcmUgY3JlYXRlZC4KKyAgICAgICAgV2hpbGUgd2Ugd2FudCB0byBtb3ZlIGFsbCB0aGUgbGlu
a2luZyBmdW5jdGlvbmFsaXR5IGZyb20gSlNXZWJBc3NlbWJseUluc3RhbmNlIHRvCisgICAgICAg
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rLCB3ZSBkbyBub3QgdGhhdCBpbiB0aGlzIHBh
dGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UgbW92ZSBvbmx5CisgICAgICAgIGZ1bmN0aW9uIGltcG9y
dGluZyBwYXJ0IGJlY2F1c2UgZWZmaWNpZW50IGNvbXBpbGF0aW9uIG9mIFdlYkFzc2VtYmx5IG5l
ZWRzIHRvIGtub3cKKyAgICAgICAgdGhlIHR5cGUgb2YgV2ViQXNzZW1ibHlNZW1vcnkgKHNpZ25h
bGluZyBvciBib3VuZCBjaGVja2luZykuIFRoaXMgbmVlZHMgdG8ga25vdyBpbXBvcnRlZAorICAg
ICAgICBvciBhdHRhY2hlZCBXZWJBc3NlbWJseSBtZW1vcnkgb2JqZWN0LiBTbyB3ZSBjYW5ub3Qg
ZGVmZXIgdGhpcyBsaW5raW5nIHRvCisgICAgICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rIG5vdy4KKworICAgICAgICBUaGUgbGFyZ2VzdCBkaWZmZXJlbmNlIGZyb20gSlMgbW9kdWxl
IGxpbmtpbmcgaXMgdGhhdCBXZWJBc3NlbWJseSBtb2R1bGUgbGlua2luZyBsaW5rcworICAgICAg
ICBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUgYnkgc25hcHNob3R0aW5nLiBXaGVuIHlvdSBoYXZl
IGEgY3ljbGljIG1vZHVsZSBncmFwaCBsaWtlIHRoaXMsCisKKyAgICAgICAgLT4gSlMxIChleHBv
cnQgImZ1biIpIC0+IFdhc20xIChpbXBvcnQgImZ1biBmcm9tIEpTMSkgLSsKKyAgICAgICAgICAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICB3ZSBmYWlsIHRvIGxpbmsgdGhpcyBzaW5jZSAiZnVuIiBpcyBub3Qg
aW5zdGFudGlhdGVkIHdoZW4gV2FzbTEgaXMgZmlyc3QgbGlua2VkLiBUaGlzIGJlaGF2aW9yCisg
ICAgICAgIGlzIGRlc2NyaWJlZCBpbiBbMV0sIGFuZCB0ZXN0ZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9lc20taW50ZWdyYXRp
b24vdHJlZS9tYXN0ZXIvcHJvcG9zYWxzL2VzbS1pbnRlZ3JhdGlvbiNqcy0tLXdhc20tY3ljbGUt
d2hlcmUtanMtaXMtaGlnaGVyLWluLXRoZS1tb2R1bGUtZ3JhcGgKKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCk6CisgICAgICAgIChjaGVja0V4Y2Vw
dGlvbik6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgIFNtYWxsIGZpeGVzIGZv
ciB3YXNtIG1vZHVsZSBsb2FkaW5nLgorCisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZSk6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHJ1bnRpbWUvQWJz
dHJhY3RNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Om1vZHVsZUVudmlyb25tZW50TWF5QmVOdWxsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OkltcG9ydEVudHJ5Ojppc05hbWVzcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIE5vdywgd2FzbSBtb2R1bGVzIGNhbiBoYXZlIGltcG9ydCB3aGljaCBpcyBuYW1lZCAiKiIu
IFNvIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yay4KKyAgICAgICAgU2luY2Ugd2FzbSBtb2R1
bGVzIG5ldmVyIGhhdmUgbmFtZXNwYWNlIGltcG9ydGluZywgd2UgY2hlY2sgdGhpcyBpbiBKUydz
IG1vZHVsZSBhbmFseXplci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ3JlYXRpb25Nb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisKIDIwMTgtMDQtMTcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBBZGQgQVBJIHRv
IGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGE5MDU3YmIzNDY4NjdhMDc5YzEzZTllNDM3NzZiYTAzNzEyM2FhOWEuLjUw
ZmEyMjlkNmQyYmQ1YzEzNWFlYThjZThlYjZlYjUzNDdiNmVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA4LDYgKzE3MDgsNyBAQAogCQlFMzVDQTE1NDFEQkMzQTVDMDBG
ODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2
Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTNBREQ4MUZFNzAyRDAwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTNBREQ3MUZFNzAyQ0MwMDIy
RDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCAqLzsgfTsKIAkJRTM5RDQ1RjUxRDM5MDA1NjAw
QjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJl
dGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NTYxLDYgKzQ1NjIsNyBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlvbk1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjY1LDYgKzYyNjcsNyBAQAogCQkJCTUy
NkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJC
MzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLywKIAkJCQlBRDQxMkIzMjFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywKKwkJCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovLAogCQkJCUFENUMzNkRDMUY2ODhCNUYw
MDBCQ0FBRiAvKiBXYXNtRW1iZWRkZXIuaCAqLywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2
QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAqLywKIAkJCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3
OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgKi8sCkBAIC04NzM2LDcgKzg3MzksNiBA
QAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMU3RhY2ttYXBBcmd1bWVudExpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNDc2RkY0MjA3
RTg1RDUwMDkzQ0EyRCAvKiBKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
MjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkND
MjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJFMjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmggaW4gSGVhZGVycyAqLywK
QEAgLTg5MjgsNiArODkzMCw3IEBACiAJCQkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJ
VEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCNDFDMTBDQjkzMDAz
OTBGREQgLyogSklUQml0WG9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDRUZE
RTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0NzZG
RjQyMDdFODVENTAwOTNDQTJEIC8qIEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDkxLDYgKzk0OTQsNyBAQAogCQkJCTUzRkQw
NEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZERDFGNjg4QjY1MDAwQkNBQUYg
LyogV2FzbUVtYmVkZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURBRTI3QTFFMDNDODIyMDBC
NTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzODFCOTM5
MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTBhNDRhZmU1MTg5NWRjZTIwMGJlZmI4MmViZjhi
NjZmZTU4MmMxNS4uNzQ0ZGUzMGVmN2U0ZmU4YzkyODA5NzE2YjFiNDMzOWY2ZmYwYzljMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhDb21tYW5kTGluZSwgYm9vbCBpc1dv
cmtlciwgY29uc3QgRnVuYyYpOwotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgQ29tbWFu
ZExpbmUmLCBib29sJiBzdWNjZXNzKTsKK3N0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24s
IEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CiAKIGNsYXNzIE1lc3NhZ2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVzc2FnZT4gewogcHVibGljOgpAQCAtMTYz
Miw3ICsxNjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxh
ckFnZW50U3RhcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VD
b2RlLCBTb3VyY2VPcmlnaW4oQVNDSUlMaXRlcmFsKCJ3b3JrZXIiKSkpLCBKU1ZhbHVlKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGV2YWx1YXRpb25FeGNl
cHRpb24tPnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdHJ1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmVzdWx0LCBjb21tYW5kTGluZSwg
c3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIHRydWUsIGV2YWx1YXRpb25FeGNlcHRpb24s
IHJlc3VsdCwgY29tbWFuZExpbmUsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTIyNTksNyArMjI1OSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0
aW9uLCBKU1ZhbHVlIHZhbHVlLCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCYgc3VjY2VzcykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTIyNzEsNyArMjI3MSw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgaWYgKCFvcHRpb25zLm1fdW5jYXVnaHRF
eGNlcHRpb25OYW1lIHx8ICFpc0xhc3RGaWxlKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNz
ICYmICFoYXNFeGNlcHRpb247CiAgICAgICAgIGlmIChvcHRpb25zLm1fZHVtcCAmJiAhaGFzRXhj
ZXB0aW9uKQotICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4iLCB2YWx1ZS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBwcmludGYoIkVuZDogJXNcbiIsIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBpZiAoaGFzRXhjZXB0aW9uKQogICAgICAgICAgICAgZHVtcEV4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICB9IGVsc2UKQEAgLTIzMjQsMTIgKzIzMjQsMTIg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVsZmlsbEhhbmRsZXIgPSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmLCBpc0xh
c3RGaWxlXShFeGVjU3RhdGUqIGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIGlzTGFzdEZpbGUsIGZhbHNlLCBleGVjLT5hcmd1bWVudCgwKSwgb3B0
aW9ucywgc3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBpc0xhc3RGaWxlLCBmYWxzZSwgZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMs
IHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgSlNGdW5jdGlvbiogcmVq
ZWN0SGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcoKSwgWyYsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAg
ICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwg
ZXhlYy0+YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAgIGNo
ZWNrRXhjZXB0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwgdHJ1ZSwgZXhlYy0+
YXJndW1lbnQoMCksIG9wdGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9KTsKIApAQCAtMjM0
Miw3ICsyMzQyLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZXZhbHVhdGlvbkV4Y2VwdGlvbi0+dmFsdWUo
KTsKLSAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgaXNMYXN0RmlsZSwg
ZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9wdGlvbnMsIHN1Y2Nlc3MpOworICAg
ICAgICAgICAgY2hlY2tFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2Jh
bE9iamVjdCwgaXNMYXN0RmlsZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgcmV0dXJuVmFsdWUsIG9w
dGlvbnMsIHN1Y2Nlc3MpOwogICAgICAgICB9CiAKICAgICAgICAgc2NyaXB0QnVmZmVyLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAKaW5kZXggNDI2ZTUzYjlkMWQ3N2IwMGY0MjlmOWI3NDQ5YWRlNDEyZDVkNTllMi4u
YzVjNmRmMDllMzJkNGQwYWM2NjlkZTAyZWM5MjRmZDRhMDRhZjIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApAQCAtNTQs
NyArNTQsOCBAQCB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYgYW5hbHl6ZXIpCiAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5h
ZGRJbXBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgewogICAgICAgICAgICAg
bV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmltcG9y
dGVkTmFtZSgpLAotICAgICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQorICAgICAgICAg
ICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0
ZWROYW1lKCkgPT0gYW5hbHl6ZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT50aW1lc0lkZW50aWZpZXIs
CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAyYzgwNDJkZmVkM2RlZDRh
YTkxMThiZDA5YmIxYjc0MWIwZDUwNmY5Li5kNjg5YTEyOTA1ZDZhZTNhMzEyODQ5MGFkYWJmMjk4
OWYwZjc2NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYXV0byBBYnN0cmFj
dE1vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGxvY2EKICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKICAg
ICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsK
LSAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgaWYgKGlt
cG9ydEVudHJ5LmlzTmFtZXNwYWNlKQogICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91
bmQoKTsKIAogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CkBA
IC03NzYsNyArNzc2LDcgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICAgICAgcmV0dXJuIGpzTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoYXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykpCi0gICAgICAgIHJldHVybiB3YXNtTW9kdWxl
UmVjb3JkLT5saW5rKGV4ZWMsIHNjcmlwdEZldGNoZXIpOworICAgICAgICByZXR1cm4gd2FzbU1v
ZHVsZVJlY29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGEx
N2VkZmQ3Njg4NmQ4OTkuLjQ3MzQ3OTVmOTk3Y2NlYmFiMThkMGQ2YzllYTdhMTlkZTQ3MmNkOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuaApAQCAtNjUsMTEgKzY1LDcgQEAgY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICBJZGVudGlmaWVyIG1vZHVs
ZVJlcXVlc3Q7CiAgICAgICAgIElkZW50aWZpZXIgaW1wb3J0TmFtZTsKICAgICAgICAgSWRlbnRp
ZmllciBsb2NhbE5hbWU7Ci0KLSAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnRpbWVzSWRlbnRpZmllcjsKLSAgICAgICAgfQorICAgICAgICBib29sIGlzTmFtZXNw
YWNlOwogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwpA
QCAtMTE5LDYgKzExNSwxMSBAQCBjbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOwogICAgIH0KIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25t
ZW50TWF5QmVOdWxsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50
LmdldCgpOworICAgIH0KKwogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggYzYxNzMxNDg1MGJmOGNhZDIxNGMyMzJiMDQ3MjY1NzYx
NGJhODNlOC4uMTgzZmJkMjhkZGZiOGE0MDJkOTNkZjcyMWFhMzI0MWQ1MWM3NmY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKQEAgLTEwMywxMCArMTAzLDkgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSoKIHsKICAg
ICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQ
cm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmltcG9ydEVu
dHJpZXMoKSkgewogICAgICAgICAgICAgY29uc3QgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkltcG9y
dEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWltcG9y
dEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkKKyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNO
YW1lc3BhY2UpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRF
bnRyeS5sb2NhbE5hbWUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGE3Yzk5ZGNjNDgzMzA2MGE5
YzMyNjViZjM0YjViMWZlMjU5OGJiMDkuLmQ2NWY2ODBiNzNiMTZhNjM3NTE5OTJmNGM3Mzc5MzYx
OTBiMzk5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQog
ICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOwogICAg
ICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUlt
cG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2Uodm0pKSB7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFj
ZSkgewogICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVj
dCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgYm9vbCBw
dXRSZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DcmVhdGlvbk1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DcmVh
dGlvbk1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmZlOGNjMGJmZDRlZTc0NDczOGY5MDM0MTMxZDg5Nzli
MzdmYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNyZWF0aW9uTW9kZS5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2VudW0g
Y2xhc3MgQ3JlYXRpb25Nb2RlIHsKKyAgICBGcm9tSlMsCisgICAgRnJvbU1vZHVsZUxvYWRlcgor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5YjlmZDhi
NzQxMTNiNGI5OGMuLmNlMTBiMDk3NGQyOGNiODY0MGYwM2MwMGNkMDZhNGI0NzIxN2I0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlv
bjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUg
ZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCiB9CiAKLXZvaWQgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2ssIE1vZHVsZVJ1bk1vZGUgbW9k
dWxlUnVuTW9kZSkKK3ZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9u
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2Rl
QmxvY2ssIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlv
bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih0aGlzLCB3YXNtQ29k
ZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyOSw4ICsxMjksOCBAQCB2b2lkIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgUmVm
PFdhc206OgogICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZCo+KG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LT5tb2R1bGVSZWNvcmQoKSk7CiAgICAg
bW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBpZiAobW9kdWxlUnVu
TW9kZSA9PSBNb2R1bGVSdW5Nb2RlOjpSdW4pIHsKLSAgICAgICAgbW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIGpzTnVsbCgpKTsKKyAgICBpZiAoY3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9u
TW9kZTo6RnJvbUpTKSB7CisgICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwo
KSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgICAgIEpTVmFsdWUgc3RhcnRSZXN1bHQgPSBtb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIElkZW50aWZpZXIg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCkKICAgICByZXR1
cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRp
b24sICJXZWJBc3NlbWJseUluc3RhbmNlIikpOwogfQogCi1KU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGpzTW9kdWxl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlLCBS
ZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2Jq
ZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNt
OjpNb2R1bGU+JiYgbW9kdWxlLCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTE2MywxMCAr
MTYzLDYgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSksICI6IiwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsKICAgICB9OwogCi0gICAg
Ly8gSWYgdGhlIGxpc3Qgb2YgbW9kdWxlLmltcG9ydHMgaXMgbm90IGVtcHR5IGFuZCBUeXBlKGlt
cG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgotICAgIGlm
IChtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQotICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
ImNhbid0IG1ha2UgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBv
cnRzIE9iamVjdCBhbmQgdGhlIFdlYkFzc2VtYmx5Lk1vZHVsZSByZXF1aXJlcyBpbXBvcnRzIikp
KTsKLQogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgbW9kdWxlSW5mb3JtYXRpb24p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKQEAgLTE4
NCw2OSArMTgwLDU5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAKICAgICAvLyBMZXQgZnVu
Y3MsIG1lbW9yaWVzIGFuZCB0YWJsZXMgYmUgaW5pdGlhbGx5LWVtcHR5IGxpc3RzIG9mIGNhbGxh
YmxlIEphdmFTY3JpcHQgb2JqZWN0cywgV2ViQXNzZW1ibHkuTWVtb3J5IG9iamVjdHMgYW5kIFdl
YkFzc2VtYmx5LlRhYmxlIG9iamVjdHMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBMZXQgaW1wb3J0
cyBiZSBhbiBpbml0aWFsbHktZW1wdHkgbGlzdCBvZiBleHRlcm5hbCB2YWx1ZXMuCi0gICAgdW5z
aWduZWQgbnVtSW1wb3J0RnVuY3Rpb25zID0gMDsKICAgICB1bnNpZ25lZCBudW1JbXBvcnRHbG9i
YWxzID0gMDsKIAogICAgIGJvb2wgaGFzTWVtb3J5SW1wb3J0ID0gZmFsc2U7CiAgICAgYm9vbCBo
YXNUYWJsZUltcG9ydCA9IGZhbHNlOworCisgICAgaWYgKGNyZWF0aW9uTW9kZSA9PSBXYXNtOjpD
cmVhdGlvbk1vZGU6OkZyb21KUykgeworICAgICAgICAvLyBJZiB0aGUgbGlzdCBvZiBtb2R1bGUu
aW1wb3J0cyBpcyBub3QgZW1wdHkgYW5kIFR5cGUoaW1wb3J0T2JqZWN0KSBpcyBub3QgT2JqZWN0
LCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCisgICAgICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5p
bXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjYW4ndCBtYWtlIFdlYkFz
c2VtYmx5Lkluc3RhbmNlIGJlY2F1c2UgdGhlcmUgaXMgbm8gaW1wb3J0cyBPYmplY3QgYW5kIHRo
ZSBXZWJBc3NlbWJseS5Nb2R1bGUgcmVxdWlyZXMgaW1wb3J0cyIpKSk7CisgICAgfQorCiAgICAg
Ly8gRm9yIGVhY2ggaW1wb3J0IGkgaW4gbW9kdWxlLmltcG9ydHM6CiAgICAgZm9yIChhdXRvJiBp
bXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7Ci0gICAgICAgIC8vIDEuIExldCBv
IGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBp
Lm1vZHVsZV9uYW1lKS4KLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGltcG9y
dE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZy
b21VVEY4KGltcG9ydC5tb2R1bGUpKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9iamVj
dCwgdGhyb3cgYSBUeXBlRXJyb3IuCi0gICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9iamVj
dCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9k
dWxlVmFsdWUpKSk7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpKTsKKyAgICAg
ICAgSWRlbnRpZmllciBmaWVsZE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3Ry
aW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpKTsKKyAgICAgICAgbW9kdWxlUmVjb3JkLT5hcHBl
bmRSZXF1ZXN0ZWRNb2R1bGUobW9kdWxlTmFtZSk7CisgICAgICAgIG1vZHVsZVJlY29yZC0+YWRk
SW1wb3J0RW50cnkoV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5IHsKKyAgICAg
ICAgICAgIG1vZHVsZU5hbWUsCisgICAgICAgICAgICBmaWVsZE5hbWUsCisgICAgICAgICAgICBJ
ZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwg
IldlYkFzc2VtYmx5SW1wb3J0TmFtZSIpKSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICB9
KTsKKworICAgICAgICAvLyBTa2lwIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gdmFsaWRh
dGlvbiBoZXJlLiBJdCB3aWxsIGJlIGRvbmUgaW4gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsuCisgICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIGFsbCB0aGUgbGlua2luZyBj
b2RlIGhlcmUgdG8gV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsuCisgICAgICAgIHN3aXRj
aCAoaW1wb3J0LmtpbmQpIHsKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0
aW9uOgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxL
aW5kOjpUYWJsZToKKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeToKKyAg
ICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKLSAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZhbHVlIG9mIHBlcmZv
cm1pbmcgR2V0KG8sIGkuaXRlbV9uYW1lKQotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOwotICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6
ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAo
Y3JlYXRpb25Nb2RlID09IFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKSB7CisgICAgICAgICAg
ICAvLyAxLiBMZXQgbyBiZSB0aGUgcmVzdWx0YW50IHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0KGlt
cG9ydE9iamVjdCwgaS5tb2R1bGVfbmFtZSkuCisgICAgICAgICAgICBKU1ZhbHVlIGltcG9ydE1v
ZHVsZVZhbHVlID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworICAgICAgICAg
ICAgLy8gMi4gSWYgVHlwZShvKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci4KKyAg
ICAgICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOworCisg
ICAgICAgICAgICAvLyAzLiBMZXQgdiBiZSB0aGUgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQobywg
aS5pdGVtX25hbWUpCisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdl
dChleGVjLCBmaWVsZE5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbHVlKQorICAgICAg
ICAgICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaW1wb3J0Lmtp
bmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7Ci0gICAg
ICAgICAgICAvLyA0LiBJZiBpIGlzIGEgZnVuY3Rpb24gaW1wb3J0OgotICAgICAgICAgICAgLy8g
aS4gSWYgSXNDYWxsYWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJy
b3IuCi0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCBmdW5jdGlvbiIsICJtdXN0IGJlIGNh
bGxhYmxlIikpKTsKLQotICAgICAgICAgICAgV2FzbTo6SW5zdGFuY2UqIGNhbGxlZUluc3RhbmNl
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Okxv
YWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKLQotICAgICAg
ICAgICAgLy8gaWkuIElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdDoK
LSAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKLSAgICAgICAg
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwotICAg
ICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGZ1bmN0aW9uLCB3YXNt
RnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgLy8gYS4g
SWYgdGhlIHNpZ25hdHVyZSBvZiB2IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgaSwg
dGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCi0gICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggaW1wb3J0ZWRTaWduYXR1cmVJbmRleDsKLSAgICAgICAgICAgICAgICBpZiAo
d2FzbUZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydGVkU2lnbmF0dXJlSW5k
ZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxlZUluc3RhbmNlID0gJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IHdhc21GdW5jdGlv
bi0+ZW50cnlwb2ludExvYWRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRl
eCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCi0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0
ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaW1wb3J0
ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhl
Yywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNp
Z25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidz
IHNpZ25hdHVyZSIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBpaWkuIE90aGVy
d2lzZToKLSAgICAgICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3QgZnVuY3Rp
b24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5nIFdlYkFz
c2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1ZhbHVlIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2ViQXNzZW1i
bHlWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5vdGU6IGRvbmUgYXMgcGFydCBvZiBQbGFuIGNvbXBp
bGF0aW9uLgotICAgICAgICAgICAgLy8gaXYuIEFwcGVuZCB2IHRvIGZ1bmNzLgotICAgICAgICAg
ICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8gdGhlIGluc3RhbmNlIGxpc3QgZnVsZmls
bHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUgKHRoZSBXZWJBc3NlbWJseS5JbnN0YW5j
ZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93ICh0aGUgSlNGdW5jdGlvbikuCi0KLSAg
ICAgICAgICAgIEFTU0VSVChudW1JbXBvcnRGdW5jdGlvbnMgPT0gaW1wb3J0LmtpbmRJbmRleCk7
Ci0gICAgICAgICAgICBhdXRvKiBpbmZvID0ganNJbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRG
dW5jdGlvbkluZm8obnVtSW1wb3J0RnVuY3Rpb25zKTsKLSAgICAgICAgICAgIGluZm8tPnRhcmdl
dEluc3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7Ci0gICAgICAgICAgICBpbmZvLT53YXNtRW50cnlw
b2ludExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRpb247Ci0gICAgICAgICAgICBq
c0luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFBvaXNvbmVkQmFycmllcjxKU09i
amVjdD4+KG51bUltcG9ydEZ1bmN0aW9ucyktPnNldCh2bSwganNJbnN0YW5jZSwgZnVuY3Rpb24p
OwotICAgICAgICAgICAgKytudW1JbXBvcnRGdW5jdGlvbnM7Ci0gICAgICAgICAgICAvLyB2LiBB
cHBlbmQgY2xvc3VyZSB0byBpbXBvcnRzLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0zMzcsNiArMzIz
LDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQorICAgIEFTU0VSVChtb2R1bGVSZWNvcmQtPmltcG9ydEVudHJpZXMoKS5zaXplKCkgPT0gbW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0cy5zaXplKCkpOwogCiAgICAgewogICAgICAgICBpZiAoISFt
b2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkgJiYgbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmlzSW1w
b3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgKaW5kZXggMDMyYjU2NWYwODFlMGUwNzFiZmNkYjNhYmU3OWI5OWU3
ODkxM2Y5Yi4uM2NhNDZkNmRiZmRlOTQ5NTg1MGZlMDlkOWNkZWE1ODFhNTdlZTcwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgorI2luY2x1ZGUgIldhc21DcmVhdGlvbk1vZGUuaCIKICNpbmNsdWRlICJX
YXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTUyLDEzICs1MywxMiBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogCiAgICAgc3RhdGljIElkZW50aWZpZXIgY3JlYXRlUHJpdmF0ZU1vZHVsZUtl
eSgpOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxl
KiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4m
Jik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwg
SlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4mJiwg
V2FzbTo6Q3JlYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIGVudW0gY2xhc3MgTW9kdWxlUnVuTW9kZSB7IFJ1biwgTm9uZSB9OwotICAg
IHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxv
Y2s+JiYsIE1vZHVsZVJ1bk1vZGUpOworICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4
ZWNTdGF0ZSosIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgCiAgICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNl
KCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNy4uMjA4OWU0ZjcxNTNiMjY5MGZhNzhh
M2ViYTcyNjUxNDc5ZmNkNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBA
IC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICBTdHJ1Y3R1cmUq
IGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGlu
c3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSk7Cisg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVN
b2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8
V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9t
SlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpbnN0YW5j
ZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3lu
Yygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVK
U1RvV2FzbVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRl
eHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIs
ICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25N
b2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5k
ZXggMGU0ODQ3NThhNGMxZDYxMGRiMmE4OGFmZDdjNmM5ZjZiYTUzYTQxZC4uMjg3MTc5OGE4NzZl
NzI4YWFiMjNhOTMxNmEwYTM1NWVmNWE4MGE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpwcmVwYXJlTGluayhWTSYg
dm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuYwogICAgIG1faW5zdGFuY2Uuc2V0KHZt
LCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKQordm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDUs
NiArMTA1LDEzOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSkKICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBtX2lu
c3RhbmNlLT5tb2R1bGUoKTsKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCk7CiAKKyAgICBhdXRv
IGV4Y2VwdGlvbiA9IFsmXSAoSlNPYmplY3QqIGVycm9yKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBlcnJvcik7CisgICAgfTsKKworICAgIGF1dG8gaW1wb3J0RmFpbE1l
c3NhZ2UgPSBbJl0gKGNvbnN0IFdhc206OkltcG9ydCYgaW1wb3J0LCBjb25zdCBjaGFyKiBiZWZv
cmUsIGNvbnN0IGNoYXIqIGFmdGVyKSB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGJlZm9y
ZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpLCAiOiIsIFN0cmluZzo6ZnJv
bVVURjgoaW1wb3J0LmZpZWxkKSwgIiAiLCBhZnRlcik7CisgICAgfTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgaW1wb3J0IDogbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cykgeworICAgICAgICAv
LyBWYWxpZGF0aW9uIGFuZCBsaW5raW5nIG90aGVyIHRoYW4gV2FzbTo6RXh0ZXJuYWxLaW5kOjpG
dW5jdGlvbiBpcyBhbHJlYWR5IGRvbmUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlLgorICAgICAg
ICAvLyBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSBhbGwgdGhlIGxpbmtpbmcgY29kZSBpbiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UgaGVyZSBhbmQgcmVtb3ZlIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4K
KyAgICAgICAgc3dpdGNoIChpbXBvcnQua2luZCkgeworICAgICAgICBjYXNlIFdhc206OkV4dGVy
bmFsS2luZDo6RnVuY3Rpb246CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXYXNt
OjpFeHRlcm5hbEtpbmQ6OlRhYmxlOgorICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6
TWVtb3J5OgorICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xvYmFsOgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQu
bW9kdWxlKSk7CisgICAgICAgIElkZW50aWZpZXIgZmllbGROYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSk7CisgICAgICAgIEpT
VmFsdWUgdmFsdWU7CisgICAgICAgIGlmIChjcmVhdGlvbk1vZGUgPT0gV2FzbTo6Q3JlYXRpb25N
b2RlOjpGcm9tSlMpIHsKKyAgICAgICAgICAgIC8vIDEuIExldCBvIGJlIHRoZSByZXN1bHRhbnQg
dmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0LCBpLm1vZHVsZV9uYW1lKS4KKyAg
ICAgICAgICAgIEpTVmFsdWUgaW1wb3J0TW9kdWxlVmFsdWUgPSBpbXBvcnRPYmplY3QtPmdldChl
eGVjLCBtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgICAgICAvLyAyLiBJZiBUeXBlKG8pIGlzIG5vdCBPYmplY3QsIHRo
cm93IGEgVHlwZUVycm9yLgorICAgICAgICAgICAgaWYgKCFpbXBvcnRNb2R1bGVWYWx1ZS5pc09i
amVjdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9i
amVjdCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0
TW9kdWxlVmFsdWUpKSk7CisKKyAgICAgICAgICAgIC8vIDMuIExldCB2IGJlIHRoZSB2YWx1ZSBv
ZiBwZXJmb3JtaW5nIEdldChvLCBpLml0ZW1fbmFtZSkKKyAgICAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihpbXBvcnRNb2R1bGVWYWx1ZSk7CisgICAgICAgICAg
ICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGZpZWxkTmFtZSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJ
bXBvcnRlZE1vZHVsZShleGVjLCBtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRp
b24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBmaWVsZE5hbWUpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAg
IHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywg
c2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhmaWVs
ZE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAg
ICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIklt
cG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhmaWVsZE5hbWUuaW1wbCgpKSwgIicgY2Fu
bm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3Bl
LCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUg
cmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBYnN0cmFj
dE1vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZDsK
KyAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVkRW52aXJvbm1lbnQgPSBp
bXBvcnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnRNYXlCZU51bGwoKTsKKyAgICAgICAgICAg
IC8vIEl0IG1lYW5zIHRoYXQgdGFyZ2V0IG1vZHVsZSBpcyBub3QgbGlua2VkIHlldC4gSW4gd2Fz
bSBsb2FkaW5nLCB3ZSBhbGxvdyB0aGlzIHNpbmNlIHdlIGRvIG5vdCBzb2x2ZSBjeWNsaWMgcmVz
b2x1dGlvbiBhcyBpZiBKUydzIGJpbmRpbmdzLgorICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1l
LCBlcnJvciBvY2N1cnMgc2luY2UgfHZhbHVlfCBpcyBhbiBlbXB0eSwgYW5kIGxhdGVyIHx2YWx1
ZXwgYmVjb21lcyBhbiB1bmRlZmluZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vV2ViQXNzZW1ibHkvZXNtLWludGVncmF0aW9uL3RyZWUvbWFzdGVyL3Byb3Bvc2Fscy9lc20t
aW50ZWdyYXRpb24janMtLS13YXNtLWN5Y2xlLXdoZXJlLWpzLWlzLWhpZ2hlci1pbi10aGUtbW9k
dWxlLWdyYXBoCisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRFbnZpcm9ubWVudCkgeworICAgICAg
ICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGltcG9ydGVkRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBzeW1i
b2xUYWJsZS0+ZmluZChsb2NrZXIsIHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGl0ZXIgIT0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpKTsKKyAg
ICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOworICAg
ICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChpbXBvcnRlZEVudmlyb25tZW50LT5pc1ZhbGlkU2NvcGVPZmZzZXQoZW50cnkuc2NvcGVP
ZmZzZXQoKSkpOworCisgICAgICAgICAgICAgICAgLy8gU25hcHNob3R0aW5nIGEgdmFsdWUuCisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBpbXBvcnRlZEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVu
dHJ5LnNjb3BlT2Zmc2V0KCkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisKKyAg
ICAgICAgc3dpdGNoIChpbXBvcnQua2luZCkgeworICAgICAgICBjYXNlIFdhc206OkV4dGVybmFs
S2luZDo6RnVuY3Rpb246IHsKKyAgICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBp
bXBvcnQ6CisgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJv
dyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5j
dGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0
IGZ1bmN0aW9uIiwgIm11c3QgYmUgY2FsbGFibGUiKSkpOworCisgICAgICAgICAgICBXYXNtOjpJ
bnN0YW5jZSogY2FsbGVlSW5zdGFuY2UgPSBudWxscHRyOworICAgICAgICAgICAgV2FzbVRvV2Fz
bUltcG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24g
PSBudWxscHRyOworICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2Jq
ZWN0Kj4odmFsdWUpOworCisgICAgICAgICAgICAvLyBpaS4gSWYgdiBpcyBhbiBFeHBvcnRlZCBG
dW5jdGlvbiBFeG90aWMgT2JqZWN0OgorICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiog
d2FzbUZ1bmN0aW9uOworICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdh
c21XcmFwcGVyRnVuY3Rpb247CisgICAgICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgZnVuY3Rpb24sIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsK
KyAgICAgICAgICAgICAgICAvLyBhLiBJZiB0aGUgc2lnbmF0dXJlIG9mIHYgZG9lcyBub3QgbWF0
Y2ggdGhlIHNpZ25hdHVyZSBvZiBpLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KKyAg
ICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBpbXBvcnRlZFNpZ25hdHVyZUluZGV4
OworICAgICAgICAgICAgICAgIGlmICh3YXNtRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW1wb3J0ZWRTaWduYXR1cmVJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGVlSW5zdGFuY2UgPSAmd2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpLT5pbnN0YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50TG9h
ZExvY2F0aW9uID0gd2FzbUZ1bmN0aW9uLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWRTaWduYXR1
cmVJbmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAg
ICAgICAgICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCisgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXgg
ZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9u
U2lnbmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAo
aW1wb3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9u
IiwgInNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5j
dGlvbidzIHNpZ25hdHVyZSIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpaWku
IE90aGVyd2lzZToKKyAgICAgICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3Qg
ZnVuY3Rpb24gb2YgdGhlIGdpdmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5n
IFdlYkFzc2VtYmx5IGFyZ3VtZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1Zh
bHVlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2Vi
QXNzZW1ibHlWYWx1ZS4KKyAgICAgICAgICAgIC8vIE5vdGU6IGRvbmUgYXMgcGFydCBvZiBQbGFu
IGNvbXBpbGF0aW9uLgorICAgICAgICAgICAgLy8gaXYuIEFwcGVuZCB2IHRvIGZ1bmNzLgorICAg
ICAgICAgICAgLy8gTm90ZTogYWRkaW5nIHRoZSBKU0NlbGwgdG8gdGhlIGluc3RhbmNlIGxpc3Qg
ZnVsZmlsbHMgY2xvc3VyZSByZXF1aXJlbWVudHMgYi4gYWJvdmUgKHRoZSBXZWJBc3NlbWJseS5J
bnN0YW5jZSB3aWwgYmUga2VwdCBhbGl2ZSkgYW5kIHYuIGJlbG93ICh0aGUgSlNGdW5jdGlvbiku
CisKKyAgICAgICAgICAgIGF1dG8qIGluZm8gPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9y
dEZ1bmN0aW9uSW5mbyhpbXBvcnQua2luZEluZGV4KTsKKyAgICAgICAgICAgIGluZm8tPnRhcmdl
dEluc3RhbmNlID0gY2FsbGVlSW5zdGFuY2U7CisgICAgICAgICAgICBpbmZvLT53YXNtRW50cnlw
b2ludExvYWRMb2NhdGlvbiA9IGVudHJ5cG9pbnRMb2FkTG9jYXRpb247CisgICAgICAgICAgICBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaW1wb3J0LmtpbmRJbmRleCktPnNldCh2bSwg
bV9pbnN0YW5jZS5nZXQoKSwgZnVuY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6TWVt
b3J5OiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdhc206
OkV4dGVybmFsS2luZDo6R2xvYmFsOiB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJvbFRhYmxlID0g
bW9kdWxlLT5leHBvcnRTeW1ib2xUYWJsZSgpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0
Q291bnQgPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgK
aW5kZXggNDE3YTBjNjA4MzdkNDVjZWI1NjMxZjRiMGY0NzVkYjNiNWZiMzg5YS4uMzE2ZjMzN2Rl
YzBjOWJlNjEzY2JiM2Q1YTVmNDQ4ZjgzNzYzOWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQWJzdHJhY3RN
b2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJXYXNtQ3JlYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAi
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDksNyArNTAs
NyBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBBYnN0cmFj
dE1vZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBjcmVh
dGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAogICAgIHZvaWQgcHJlcGFyZUxpbmsoVk0mLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKLSAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKik7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAKaW5kZXggNGVmNjQ3YTNiYWE0Y2NlNTNlYmM5NDQzNzNiN2VjOWUw
YTM2ODlhNi4uYzdhZDBlM2RkY2E4ZDY0NDQ5YWYxNTkxNzFhZmNiODZhMzgwZWE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90
eXBlLmNwcApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIGVu
dW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZVJlY29yZCwgV2l0aE1v
ZHVsZUFuZEluc3RhbmNlIH07Ci1zdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBSZWY8V2FzbTo6Q29kZUJs
b2NrPiYmIGNvZGVCbG9jaywgUmVzb2x2ZSByZXNvbHZlS2luZCwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCitzdGF0aWMgdm9pZCByZXNvbHZlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBK
U09iamVjdCogaW1wb3J0T2JqZWN0LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvZGVCbG9jaywg
UmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgaW5zdGFuY2Ut
PmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2NrKSwgbW9kdWxlUnVu
TW9kZSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUo
Y29kZUJsb2NrKSwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1vZGUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgaWYg
KHJlc29sdmVLaW5kID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkKQEAgLTE0NCwyOCArMTQ0LDI5
IEBAIHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzCiAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQorc3RhdGljIHZvaWQgaW5zdGFudGlhdGUo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgUmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25N
b2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21waWxpbmcg
YSBtb2R1bGUuIFdlIGZpcnN0IGdhdGhlciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5mb3JtYXRp
b24gcHJpb3IgdG8gY29tcGlsaW5nIGNvZGUuCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGVL
ZXksIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldl
YkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5t
b2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9y
dE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNl
U3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCBjcmVhdGlv
bk1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29w
ZSwgcHJvbWlzZSkpOwogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7
CiAgICAgLy8gVGhlIGluc3RhbmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKKyAgICBkZXBlbmRl
bmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICB2bS5w
cm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBtYXkgb3Ig
bWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgotICAgIG1vZHVsZS0+bW9kdWxlKCkuY29t
cGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRl
U2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3Rh
bmNlLCBtb2R1bGUsIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dIChSZWY8V2FzbTo6
Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CisgICAgbW9kdWxlLT5tb2R1bGUo
KS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBj
cmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwg
aW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2Rl
LCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CiAg
ICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdURk1vdmUocmVmQ29k
ZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIHJlc29sdmVLaW5kLCBtb2R1
bGVSdW5Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHBy
b21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVL
aW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGluc3RhbmNlLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgcmVzb2x2ZSh2bSwgZXhlYywg
cHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJl
c29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlKTsKKyAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMs
IHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJlbGVh
c2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKICAg
ICB9KSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0
aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVz
b2x2ZSByZXNvbHZlS2luZCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlIG1v
ZHVsZVJ1bk1vZGUpCitzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgYnVmZmVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBS
ZXNvbHZlIHJlc29sdmVLaW5kLCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIApAQCAtMTgwLDggKzE4
MSw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJj
ZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgYnVmZmVyKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsK
IAotICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1v
dmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4o
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNv
bHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVz
dWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXIt
PnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxl
S2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVL
aW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dICgpIG11dGFibGUgeworICAgIFdhc206Ok1vZHVsZTo6
dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hh
cmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVj
dCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2Rl
LCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9t
aXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3Qs
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZt
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNX
ZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJB
c3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMTkyLDcgKzE5
Myw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywg
c2NvcGUsIHByb21pc2UpOwogCi0gICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJv
bWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleSwgcmVzb2x2ZUtpbmQsIG1vZHVs
ZVJ1bk1vZGUpOworICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUp
OwogICAgICAgICB9KTsKICAgICB9KSk7CiB9CkBAIC0yMDAsNyArMjAxLDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VEZWZlcnJlZCogcHIKIEpTVmFsdWUgV2ViQXNzZW1ibHlQcm90b3R5cGU6Omluc3RhbnRpYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9k
dWxlS2V5LCBhcmd1bWVudCwgbnVsbHB0ciwgUmVzb2x2ZTo6V2l0aE1vZHVsZVJlY29yZCwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpOb25lKTsKKyAgICBjb21waWxlQW5k
SW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZUtleSwgYXJndW1lbnQsIG51bGxw
dHIsIFJlc29sdmU6OldpdGhNb2R1bGVSZWNvcmQsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbU1v
ZHVsZUxvYWRlcik7CiAgICAgcmV0dXJuIHByb21pc2UtPnByb21pc2UoKTsKIH0KIApAQCAtMjI1
LDkgKzIyNiw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
ICAgICAgICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1v
ZHVsZSo+KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2
bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKKyAgICAgICAgICAgICAg
ICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpX
aXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21p
c2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJz
dEFyZ3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpSdW4pOworICAgICAgICAgICAg
ICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQsIGltcG9y
dE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1v
ZGU6OkZyb21KUyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHByb21pc2UtPnByb21pc2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZjM5NTYwNjRmN2QyN2QwM2U2MjA5NjZiN2U4ZTg1YjA1ZmQ5NGJl
ZS4uYzljYzI2MWVhOTg1YmRmYzVkMzUxMDNkYzY1Mjg0NmRlNDAxYzNjNCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE4LTA0LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wbGVtZW50IGZ1bmN0aW9uIGltcG9ydCBmcm9t
IHdhc20gbW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0Njg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHJ1bldlYkFzc2VtYmx5RGlyZWN0LCB3aGljaCBydW5zIHdhc20gZmlsZSBkaXJl
Y3RseS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTgt
MDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHTElCXSBBZGQgQVBJIHRvIGNsZWFyIEpTQ0NvbnRleHQgdW5jYXVnaHQgZXhjZXB0aW9u
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBhMTg2YzA5ZmNlOTliZGRkODY5ZGNk
ZmZmY2ZhNjRlNWYyOGY2OWE5Li4yNGE4M2M3NDQ4YzVjNjgzNGU1MzU4NTJmNTY0MDEzY2E1NTFj
NGM2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTEwMTQsNiArMTAxNCwxOSBA
QCBkZWYgcnVuV2ViQXNzZW1ibHkKICAgICBlbmQKIGVuZAogCitkZWYgcnVuV2ViQXNzZW1ibHlE
aXJlY3QKKyAgICByZXR1cm4gaWYgISRqaXRUZXN0cworICAgIHJldHVybiBpZiAhJGlzRlRMUGxh
dGZvcm0KKyAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIsICpGVExfT1BUSU9OUykKKyAgICBp
ZiAkbW9kZSAhPSAicXVpY2siCisgICAgICAgIHJ1bigid2FzbS1uby1jaml0LXllcy10bHMtY29u
dGV4dCIsICItbSIsICItLXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dD10cnVlIiwgKihGVExfT1BU
SU9OUyArIE5PX0NKSVRfT1BUSU9OUykpCisgICAgICAgIHJ1bigid2FzbS1lYWdlci1qZXR0aXNv
biIsICItbSIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAq
RlRMX09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1uby1jYWxsLWljIiwgIi1tIiwgIi0tdXNl
Q2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZhbHNlIiwgKkZUTF9PUFRJT05TKQorICAg
ICAgICBydW4oIndhc20tbm8tdGxzLWNvbnRleHQiLCAiLW0iLCAiLS11c2VGYXN0VExTRm9yV2Fz
bUNvbnRleHQ9ZmFsc2UiLCAqRlRMX09QVElPTlMpCisgICAgICAgIHJ1bigid2FzbS1zbG93LW1l
bW9yeSIsICItbSIsICItLXVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeT1mYWxzZSIsICpGVExfT1BU
SU9OUykKKyAgICBlbmQKK2VuZAorCiBkZWYgcnVuV2ViQXNzZW1ibHlFbXNjcmlwdGVuKG1vZGUp
CiAgICAgY2FzZSBtb2RlCiAgICAgd2hlbiA6c2tpcApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlYTcxYzFiMGUyY2U4NzI2NzljMzlhNmE0
Nzg4Nzg4ZDg2ZjRiNDQ3Li44NDZiMzZmZWIxZTM1NzVhMjdlMjYzOWRiM2MxNzBkNDNjMTE3NzIz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ3IEBACisyMDE4LTA0LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wbGVtZW50IGZ1
bmN0aW9uIGltcG9ydCBmcm9tIHdhc20gbW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0Njg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9tb2R1
bGVzL2pzLXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy9qcy13
YXNtLWN5Y2xlL2VudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuZXhwb3J0LnJldHVybjQyKToKKyAgICAgICAgKiB3YXNtL21vZHVsZXMvanMtd2FzbS1j
eWNsZS9zdW0ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tY3lj
bGUvc3VtLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20u
d2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2F0OiBB
ZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS9jaGVjay5qczogQWRk
ZWQuCisgICAgICAgIChleHBvcnQuY2hlY2spOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtanMtZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dh
c20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbTogQWRkZWQuCisgICAgICAgICogd2Fz
bS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRlZC4KKyAg
ICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGV4cG9ydC5zdW0pOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWlt
cG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMuanM6IEFkZGVkLgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0
cy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJl
LWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL3JlLWV4cG9y
dC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1l
eHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1
bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0OiBBZGRl
ZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy5qczog
QWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMv
aW1wb3J0cy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRz
LXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdDogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc206IEFkZGVkLgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXQ6IEFkZGVkLgorICAg
ICAgICAqIHdhc20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdh
c20vbW9kdWxlcy93YXNtLWpzLWN5Y2xlL3N1bS5qczogQWRkZWQuCisgICAgICAgIChmcm9tLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5zdW0pOgorICAgICAgICAqIHdhc20vbW9kdWxlcy93
YXNtLXdhc20tY3ljbGUuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNtLXdh
c20tY3ljbGUvZW50cnkud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3dhc20t
d2FzbS1jeWNsZS9lbnRyeS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNt
LXdhc20tY3ljbGUvc3VtLndhc206IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxlcy93YXNt
LXdhc20tY3ljbGUvc3VtLndhdDogQWRkZWQuCisKIDIwMTgtMDQtMTYgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dlYkFzc2VtYmx5XVtNb2R1bGVz
XSBQcm90b3R5cGUgd2FzbSBpbXBvcnQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1sIGIv
SlNUZXN0cy93YXNtLnlhbWwKaW5kZXggODdjODgwMjlhN2E1NTAxY2Q1NjBjNTQxZGFhOGUxOTMz
ZGE4Mzk4OC4uOTg5NGY5ZDk3OTY0Yjg3YWJiMzdmNmE0NzAwNTRiNmE1N2ExYWQzYSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTE3OCwz
ICsxNzgsNiBAQAogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAogLSBwYXRo
OiB3YXNtL3NwZWMtdGVzdHMvdXRmOC1pbXBvcnQtbW9kdWxlLndhc3QuanMKICAgY21kOiBydW5X
ZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKworLSBwYXRoOiB3YXNtL21vZHVsZXMvcnVuLWZy
b20td2FzbS53YXNtCisgIGNtZDogcnVuV2ViQXNzZW1ibHlEaXJlY3QKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxl
cy9qcy13YXNtLWN5Y2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjBmODY2YzI5YTM4OTc4NDc5NTQxMjMz
ZTkwNzRmODc5ODc0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9q
cy13YXNtLWN5Y2xlLmpzCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20g
Jy4uL2Fzc2VydC5qcyc7CitpbXBvcnQoIi4vanMtd2FzbS1jeWNsZS9lbnRyeS5qcyIpLnRoZW4o
JHZtLmFib3J0LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICBhc3NlcnQuZXEoU3RyaW5nKGVycm9y
KSwgYEVycm9yOiBpbXBvcnQgZnVuY3Rpb24gLi9lbnRyeS5qczpyZXR1cm40MiBtdXN0IGJlIGNh
bGxhYmxlYCk7Cit9KS50aGVuKGZ1bmN0aW9uICgpIHsgfSwgJHZtLmFib3J0KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tY3ljbGUvZW50cnkuanMgYi9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMTQzNjQ0
YTAxYzczNjc3NDg4YTgxZGU5MGE4Y2M0OWExZTJlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL2VudHJ5LmpzCkBAIC0wLDAgKzEsNCBAQAor
aW1wb3J0IHsgc3VtIH0gZnJvbSAiLi9zdW0ud2FzbSIKK2V4cG9ydCBmdW5jdGlvbiByZXR1cm40
MigpIHsKKyAgICByZXR1cm4gNDI7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxl
cy9qcy13YXNtLWN5Y2xlL3N1bS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1j
eWNsZS9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGMxNmU1Y2ZhYzYxZTg4ZWZkM2JhZTNmMTQ2MWQx
NTE1NzUwYWE3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6Y21WfiRJfVUmIzVDeT5abUk4
JFgqbTQzKWowYnsoaDZEO2VoMUZpJjhSWGRyZkxAWlFRV0wwaChaIyM7SE5JSHEKWEcwTkpiells
MUh1JEVALTJEKzBMZmRTUzN7KmV0RwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0IGIvSlNUZXN0cy93
YXNtL21vZHVsZXMvanMtd2FzbS1jeWNsZS9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMjIzZjc2Y2U0
MmIyNjIyNTBiNWJlYjcwNjI1MzlmNWFlNTU5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy9qcy13YXNtLWN5Y2xlL3N1bS53YXQKQEAgLTAsMCArMSw3IEBACisobW9k
dWxlCisgICAgKGltcG9ydCAiLi9lbnRyeS5qcyIgInJldHVybjQyIiAoZnVuYyAkcmV0dXJuNDIg
KHJlc3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpIChyZXN1
bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJzdW0iKSAodHlwZSAkdDApIChwYXJh
bSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGdldF9sb2Nh
bCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBpMzIuYWRkKSkKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2FzbSBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3J1bi1mcm9tLXdhc20ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzM0NWU2Y2VjNTVkYWM2
YWFkYmRjMmY0NjJlMzI2NzU4MzRhMTMxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MQp6Y21a
UWJFWTQrUVV8P1k2VWBrK01OTU5qSVV7WWR+KDk8c30mQ15YUSVGb3A7MlApN3smUFl3cCoyXmtw
MXYzfkoKVm5WQT9GSTJha1pJMmhSJjlKS0AoeEIoenU0bFYheQoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXQg
Yi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTUx
ZTUwYTIxOWE4YzExNmRiMGM0MWIwZDk5ZDgwOGM4OTNjYTA3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy93YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXQKQEAgLTAsMCArMSw3IEBACiso
bW9kdWxlCisgICAgKGltcG9ydCAiLi9ydW4tZnJvbS13YXNtL2NoZWNrLmpzIiAiY2hlY2siIChm
dW5jICRjaGVjayAocGFyYW0gaTMyKSkpCisgICAgKHR5cGUgJHQwIChmdW5jKSkKKyAgICAoZnVu
YyAkbWFpbiAodHlwZSAkdDApCisgICAgICAgIGkzMi5jb25zdCA0MgorICAgICAgICBjYWxsICRj
aGVjaykKKyAgICAoc3RhcnQgJG1haW4pKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVs
ZXMvcnVuLWZyb20td2FzbS9jaGVjay5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1mcm9t
LXdhc20vY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhMzUzNTI2ZTQ1YThjNzE2YjNmYzI4MDc4ODUw
MjE1Mzg1YjBlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3J1bi1m
cm9tLXdhc20vY2hlY2suanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vLi4vYXNzZXJ0LmpzJzsKKworZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKHZhbHVlKQorewor
ICAgIGFzc2VydC5lcSh2YWx1ZSwgNDIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93
YXNtLWltcG9ydHMtanMtZXhwb3J0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDlkMGJjYWQ4OWI1YjU2ODll
M2IxOWRjMjllMzkwYTk4NzhhMWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQg
eyBhZGRPbmUgfSBmcm9tICIuL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9ydHMud2FzbSIK
K2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCithc3NlcnQuaXNGdW5j
dGlvbihhZGRPbmUpOworYXNzZXJ0LmVxKGFkZE9uZSgzMiksIDMzKTsKK2Fzc2VydC5lcShhZGRP
bmUoLTIpLCAtMSk7Cithc3NlcnQuZXEoYWRkT25lKDB4N2ZmZmZmZmYpLCAtMjE0NzQ4MzY0OCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhwb3J0
cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtZXhw
b3J0cy9pbXBvcnRzLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkODdlNjE4ZmIxNjZkNzM1YTNhYTE1NzY5
ZmZiNDYzODU0ODFkYQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjgKemNtWlFiRVk0K1FVfD9Z
NlZNPGBFWFJKP1BzdDF4eDAqb0FiYG8qUVdkUmZLSEsjR0JwblRlNXNvcntxekYodCk2ClVGT2A5
amk7SXppIUk0cGNMNGJpOTBMN0ZHI3tkOFQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL2ltcG9y
dHMud2F0IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvaW1w
b3J0cy53YXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUxMTJlMGU0NTJhMjA5ZDZlODI3NmM0YWM1ZjhlNWJjOWYz
YTJhMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0
cy1qcy1leHBvcnRzL2ltcG9ydHMud2F0CkBAIC0wLDAgKzEsNyBAQAorKG1vZHVsZQorICAgIChp
bXBvcnQgIi4vc3VtLmpzIiAic3VtIiAoZnVuYyAkc3VtIChwYXJhbSBpMzIgaTMyKSAocmVzdWx0
IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQor
ICAgIChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikgKHR5cGUgJHQwKSAocGFyYW0gJHAw
IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25zdCAxCisgICAgICAgIGdldF9sb2Nh
bCAkcDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3dhc20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVz
L3dhc20taW1wb3J0cy1qcy1leHBvcnRzL3N1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDgzYjY3MzljZWU0
ZmFiMTM4MTZmN2Q0YWVhZGFkYzFiNTBmZWJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLWV4cG9ydHMvc3VtLmpzCkBAIC0wLDAgKzEsNCBA
QAorZXhwb3J0IGZ1bmN0aW9uIHN1bShhcmcwLCBhcmcxKQoreworICAgIHJldHVybiBhcmcwICsg
YXJnMTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1q
cy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20t
aW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzljMjM0
NjUxOTVkMmQzOGY1MmViYjUwZWVhY2FhZTcxYWY0NjQyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRz
LmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsgYWRkT25lIH0gZnJvbSAiLi93YXNtLWltcG9y
dHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtIgoraW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC5pc0Z1bmN0aW9uKGFkZE9uZSk7
Cithc3NlcnQuZXEoYWRkT25lKDMyKSwgMzMpOworYXNzZXJ0LmVxKGFkZE9uZSgtMiksIC0xKTsK
K2Fzc2VydC5lcShhZGRPbmUoMHg3ZmZmZmZmZiksIC0yMTQ3NDgzNjQ4KTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhw
b3J0cy9pbXBvcnRzLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMt
cmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YjY1MjIy
ZmZlYTc5MGZmMGM5NWZlZmY2YWZkY2I0OGI0MjI3YTYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDc0CnpjbVpRYkVZNCtRVXw/WTZWTTxgRVhSSj9Qc3QxeHhWdkt4eGBiRFhfc1RCcUpNSjBNISNt
dlF9eGVTY1ZPcEZaZApiVCNSZ3FESmxNV3NTSiE8VCNPdEhqKkpRbjB1MDskTzF1c3YKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20t
aW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdCBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20tZXhwb3J0cy9pbXBv
cnRzLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NGU5NjdkYzNkODc4OWI3YWRlNDA2YTYwY2RkYTMxNWIxZWQ4
YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRz
LWpzLXJlLWV4cG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2F0CkBAIC0wLDAgKzEsNyBAQAor
KG1vZHVsZQorICAgIChpbXBvcnQgIi4vcmUtZXhwb3J0LmpzIiAic3VtIiAoZnVuYyAkc3VtIChw
YXJhbSBpMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0g
aTMyKSAocmVzdWx0IGkzMikpKQorICAgIChmdW5jICRhZGRPbmUgKGV4cG9ydCAiYWRkT25lIikg
KHR5cGUgJHQwKSAocGFyYW0gJHAwIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIGkzMi5jb25z
dCAxCisgICAgICAgIGdldF9sb2NhbCAkcDAKKyAgICAgICAgY2FsbCAkc3VtKSkKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1yZS1leHBvcnRzLXdhc20t
ZXhwb3J0cy9yZS1leHBvcnQuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMt
anMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvcmUtZXhwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNmJh
MWMwMzczM2YxZjU5ZjA3MTA5NTc5MzM0N2E3ZjRmMGU4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9y
dHMvcmUtZXhwb3J0LmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCB7IHN1bSB9IGZyb20gIi4vc3Vt
Lndhc20iCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMt
cmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93
YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhc20KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGM3MjJhN2MzYjdmZTIxMDM5YzQ4NDYzNDFhYjE0ZGZhOWE0OTljZgpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNDEKd2NtWlFiRVk0K1FVfD9XbVhHfnpLdVY8YGhXQDJQdVhKPSRDRjNufE47
Tm9PdFhIWn5OVjk0U0kwRGhlWFk1KUtMCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNt
LWV4cG9ydHMvc3VtLndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy1qcy1y
ZS1leHBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2YyYTM1OTM4MzA4
MTNjNDEzYTBhMTM2MjU4YzAwYjRkNTY5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20vbW9kdWxlcy93YXNtLWltcG9ydHMtanMtcmUtZXhwb3J0cy13YXNtLWV4cG9ydHMvc3VtLndh
dApAQCAtMCwwICsxLDYgQEAKKyhtb2R1bGUKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkz
MiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJzdW0iKSAodHlw
ZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBpMzIpCisgICAg
ICAgIGdldF9sb2NhbCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAgICBpMzIuYWRk
KSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4
cG9ydHMuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcwOWQwYmNhZDg5YjViNTY4OWUzYjE5ZGMyOWUzOTBhOTg3OGExZDUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2Fz
bS1leHBvcnRzLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHsgYWRkT25lIH0gZnJvbSAiLi93
YXNtLWltcG9ydHMtanMtZXhwb3J0cy9pbXBvcnRzLndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQg
ZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LmlzRnVuY3Rpb24oYWRkT25lKTsKK2Fzc2Vy
dC5lcShhZGRPbmUoMzIpLCAzMyk7Cithc3NlcnQuZXEoYWRkT25lKC0yKSwgLTEpOworYXNzZXJ0
LmVxKGFkZE9uZSgweDdmZmZmZmZmKSwgLTIxNDc0ODM2NDgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhc20gYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLWltcG9ydHMtd2FzbS1leHBvcnRzL2ltcG9ydHMud2Fz
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZmU3OWUzYTlhNzViMTJiZGIyNmQ4YmE0NDVhNzk5OGJkNjUyNzI4CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MAp6Y21aUWJFWTQrUVV8P1k2Vk08YEVYUko/UHN0MXh4
TFgyRWBgbypRV2RnVlpRVyp+IXNrKHI1K2Z0YHp5RWlvbTwKVktRRVBtayZCQ3dnVGF3ZWZrQStR
OHZ5ZiU0NWsxOAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9pbXBvcnRzLndhdCBiL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvaW1wb3J0cy53YXQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTYwMjllN2Q2ZTEzMjBlYWJhNWIyODg2ZWQzNzZlMmYxM2ZmNzdiZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9y
dHMvaW1wb3J0cy53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9z
dW0ud2FzbSIgInN1bSIgKGZ1bmMgJHN1bSAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkK
KyAgICAodHlwZSAkdDAgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVu
YyAkYWRkT25lIChleHBvcnQgImFkZE9uZSIpICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChy
ZXN1bHQgaTMyKQorICAgICAgICBpMzIuY29uc3QgMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisg
ICAgICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWltcG9ydHMtd2FzbS1leHBvcnRzL3N1bS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2Fz
bS1pbXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzcyMmE3YzNiN2Zl
MjEwMzljNDg0NjM0MWFiMTRkZmE5YTQ5OWNmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MQp3
Y21aUWJFWTQrUVV8P1dtWEd+ekt1VjxgaFdAMlB1WEo9JENGM258TjtOb090WEhafk5WOTRTSTBE
aGVYWTUpS0wKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdCBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3dhc20taW1wb3J0cy13YXNtLWV4cG9ydHMvc3VtLndhdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YTNmMmEzNTkzODMwODEzYzQxM2EwYTEzNjI1OGMwMGI0ZDU2OTM4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1pbXBvcnRzLXdhc20tZXhwb3J0cy9zdW0ud2F0
CkBAIC0wLDAgKzEsNiBAQAorKG1vZHVsZQorICAgICh0eXBlICR0MCAoZnVuYyAocGFyYW0gaTMy
IGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChleHBvcnQgInN1bSIpICh0eXBl
ICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
ICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAgICAgIGkzMi5hZGQp
KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS5qcyBiL0pT
VGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NjZGJkM2Uw
ZDRkM2M4YjZlNjM0ODlmMzc5ODNmMjJiNTNmMWY2YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUuanMKQEAgLTAsMCArMSw0IEBACitpbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworaW1wb3J0IHsgcmV0dXJuNDIgfSBmcm9t
ICIuL3dhc20tanMtY3ljbGUvZW50cnkud2FzbSIKKworYXNzZXJ0LmVxKHJldHVybjQyKCksIDQy
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvZW50cnku
d2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvZW50cnkud2FzbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNjQ5YmQ1ZjQxMmZmOGQ3NTMzYjNlODc3ZWZjZjNiMTMzZDMyZTcxCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCA2OQp6Y21aUWJFWTQrUVV8P1k2Vz1kZFN0V1JMN3VWPGBoNUA2KWUo
PVJUfil5cGJvMjJ1PSsldUl8Nz5eekpkTVg0cEYKV01SX0poNDIpYntqMnNNKGpFPFRENEJQPEEo
aE5AawoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS1qcy1jeWNsZS9lbnRyeS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNt
LWpzLWN5Y2xlL2VudHJ5LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWNjMTFjODUwOTlkNGNkMTNlNTExOTJm
Y2VkZmZjNzRlZThiZDFmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMv
d2FzbS1qcy1jeWNsZS9lbnRyeS53YXQKQEAgLTAsMCArMSw3IEBACisobW9kdWxlCisgICAgKGlt
cG9ydCAiLi9zdW0uanMiICJzdW0iIChmdW5jICRzdW0gKHBhcmFtIGkzMikgKHBhcmFtIGkzMikg
KHJlc3VsdCBpMzIpKSkKKyAgICAodHlwZSAkdDAgKGZ1bmMgKHJlc3VsdCBpMzIpKSkKKyAgICAo
ZnVuYyAkcmV0dXJuNDIgKGV4cG9ydCAicmV0dXJuNDIiKSAodHlwZSAkdDApIChyZXN1bHQgaTMy
KQorICAgICAgICBpMzIuY29uc3QgMQorICAgICAgICBpMzIuY29uc3QgNDEKKyAgICAgICAgY2Fs
bCAkc3VtKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUv
c3VtLmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS1qcy1jeWNsZS9zdW0uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjNmNzUzNzBmZDJjYTNhNDk3NWExNDNjY2VhMjMzMGI0ZDdjMTc2NgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20tanMtY3ljbGUvc3VtLmpzCkBAIC0w
LDAgKzEsNCBAQAoraW1wb3J0IHsgcmV0dXJuNDIgfSBmcm9tICIuL2VudHJ5Lndhc20iCitleHBv
cnQgZnVuY3Rpb24gc3VtKGEsIGIpIHsKKyAgICByZXR1cm4gYSArIGI7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUuanMgYi9KU1Rlc3RzL3dhc20v
bW9kdWxlcy93YXNtLXdhc20tY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFhNTA0ZWE5Y2RlZjcyNmNj
NzZmMWU0YTRhNTM1ZGE2OGM3ZGY2OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL3dhc20td2FzbS1jeWNsZS5qcwpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0KCIuL3dhc20td2FzbS1jeWNsZS9lbnRy
eS53YXNtIikudGhlbigkdm0uYWJvcnQsIGZ1bmN0aW9uIChlcnJvcikgeworICAgIGFzc2VydC5l
cShTdHJpbmcoZXJyb3IpLCBgRXJyb3I6IGltcG9ydCBmdW5jdGlvbiAuL2VudHJ5Lndhc206cmV0
dXJuNDIgbXVzdCBiZSBjYWxsYWJsZWApOworfSkudGhlbihmdW5jdGlvbiAoKSB7IH0sICR2bS5h
Ym9ydCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUv
ZW50cnkud2FzbSBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3dhc20td2FzbS1jeWNsZS9lbnRyeS53
YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNkZjdjOTJhN2QzYTY4OTU5NDA3NzkwYzMzNWNkNzM4MDIwOTRmOTAK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDcxCnpjbVpRYkVZNCtRVXw/WTZXPWRkU3RXUkw3dVY8
YGg1QE9gaSg9UlR+KWhoPXxHWG9oNmpMYn1vNEQzOU45N1UtbQpYckEydXJNaHVLeFQjT3RIaipP
MCkwdTA7JGBoZzhECgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvZW50cnkud2F0IGIvSlNUZXN0cy93YXNtL21v
ZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTJiMDM3Nzk3N2Q4
NmZkODgxOThjN2I3NzIyNzQ2MzE4MDg4NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL2VudHJ5LndhdApAQCAtMCwwICsxLDcgQEAKKyht
b2R1bGUKKyAgICAoaW1wb3J0ICIuL3N1bS53YXNtIiAic3VtIiAoZnVuYyAkc3VtIChwYXJhbSBp
MzIpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKHR5cGUgJHQwIChmdW5jIChyZXN1
bHQgaTMyKSkpCisgICAgKGZ1bmMgJHJldHVybjQyIChleHBvcnQgInJldHVybjQyIikgKHR5cGUg
JHQwKSAocmVzdWx0IGkzMikKKyAgICAgICAgaTMyLmNvbnN0IDEKKyAgICAgICAgaTMyLmNvbnN0
IDQxCisgICAgICAgIGNhbGwgJHN1bSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxl
cy93YXNtLXdhc20tY3ljbGUvc3VtLndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdh
c20tY3ljbGUvc3VtLndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRlZTA1MTFjOTg2ZTUxOWU0MTU1OWMwNTQ4
OTQ1YjQyZTI3MjA1MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzIKemNtWlFiRVk0K1FVfD9Z
Nlc9ZGVIdVY8YEpVfF82Z2w0UnUzKEApSlNEWFA+ZjJQKXR3Ti1aZlokfT0leVV9Uj11CmFXTUY0
IVdHKmh2V25rcHVXTXBTaFV7cWtwO3N5WE5MPUY0XgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL3N1bS53YXQg
Yi9KU1Rlc3RzL3dhc20vbW9kdWxlcy93YXNtLXdhc20tY3ljbGUvc3VtLndhdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MWQ4ZGE5MWM0NTEzYTZhZmU3OTRhY2UyNzViNWE2MmZiYzgyNDczCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvd2FzbS13YXNtLWN5Y2xlL3N1bS53YXQKQEAgLTAs
MCArMSw3IEBACisobW9kdWxlCisgICAgKGltcG9ydCAiLi9lbnRyeS53YXNtIiAicmV0dXJuNDIi
IChmdW5jICRyZXR1cm40MiAocmVzdWx0IGkzMikpKQorICAgICh0eXBlICR0MCAoZnVuYyAocGFy
YW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkc3VtIChleHBvcnQgInN1bSIp
ICh0eXBlICR0MCkgKHBhcmFtICRwMCBpMzIpIChwYXJhbSAkcDEgaTMyKSAocmVzdWx0IGkzMikK
KyAgICAgICAgZ2V0X2xvY2FsICRwMQorICAgICAgICBnZXRfbG9jYWwgJHAwCisgICAgICAgIGkz
Mi5hZGQpKQo=
</data>
<flag name="review"
          id="356402"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
      

    </bug>

</bugzilla>