<?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>26932</bug_id>
          <alias>shared-workers</alias>
          <creation_ts>2009-07-02 13:18:06 -0700</creation_ts>
          <short_desc>Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs</short_desc>
          <delta_ts>2009-07-13 02:08:25 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129561</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-02 13:18:06 -0700</bug_when>
    <thetext>To support shared workers, we need to define an ENABLE(SHARED_WORKERS) flag and start refactoring the worker code to enable code sharing between the different flavors of workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129565</commentid>
    <comment_count>1</comment_count>
      <attachid>32196</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-02 13:51:32 -0700</bug_when>
    <thetext>Created attachment 32196
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129575</commentid>
    <comment_count>2</comment_count>
      <attachid>32199</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-02 14:34:05 -0700</bug_when>
    <thetext>Created attachment 32199
proposed patch

Removed unnecessary braces from V8SharedWorkerCustom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129658</commentid>
    <comment_count>3</comment_count>
      <attachid>32199</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-02 21:18:54 -0700</bug_when>
    <thetext>Comment on attachment 32199
proposed patch

This looks good in general.  There are a few things to address at the moment, but it is looking good.


&gt; diff --git a/LayoutTests/fast/workers/shared-worker-constructor.html-disabled b/LayoutTests/fast/workers/shared-worker-constructor.html-disabled
&gt; +try {
&gt; +    new SharedWorker({toString:function(){throw &quot;exception&quot;}}, &quot;name&quot;)
&gt; +    log(&quot;FAIL: toString exception not propagated.&quot;);

According to http://www.whatwg.org/specs/web-workers/current-work/#runtime-script-errors,

&quot;Whenever a runtime script error occurs in one of the worker&apos;s scripts, if the error did not occur while handling a previous script error, the user agent must report the error using the WorkerGlobalScope object&apos;s onerror attribute.

For shared workers, if the error is still not handled afterwards, or if the error occurred while handling a previous script error, the error should be reported to the user.&quot;

So it sounds this the exception should not be propogated.


&gt; +try {
&gt; +    var foo = {toString:function(){new Worker(foo)}}
&gt; +    new SharedWorker(foo, name);
&gt; +    log(&quot;FAIL: no exception when trying to create workers recursively&quot;);

Same comment as above.


&gt; diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
&gt; +webcore_built_sources += \
&gt; +	WebCore/bindings/js/JSAbstractWorkerCustom.cpp \
&gt; +	WebCore/bindings/js/JSSharedWorkerConstructor.cpp \
&gt; +	WebCore/bindings/js/JSSharedWorkerCustom.cpp \
&gt; +	WebCore/workers/AbstractWorker.cpp \
&gt; +	WebCore/workers/AbstractWorker.h \
&gt; +	WebCore/workers/SharedWorker.cpp \
&gt; +	WebCore/workers/SharedWorker.h

You&apos;re missing JSSharedWorkerConstructor.h in the above list.

&gt; diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro

This seems to be missing a line like this one:
    !contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1

&gt; +    SOURCES += \
&gt; +        bindings/js/JSAbstractWorkerCustom.cpp \
&gt; +        bindings/js/JSSharedWorkerConstructor.cpp \
&gt; +        bindings/js/JSSharedWorkerCustom.cpp \
&gt; +        workers/AbstractWorker.cpp \
&gt; +        workers/AbstractWorker.h \
&gt; +        workers/SharedWorker.cpp \
&gt; +        workers/SharedWorker.h

As you noted (well) before I did, the *.h need to be removed for this file.

&gt; +
&gt; +

It looks like there are typically not blank lines at this point in other sections like this.
&gt; +}


&gt; diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
&gt;  			isa = PBXGroup;
&gt;  			children = (
&gt; +				2E4346350F546A8200B0F1BA /* Worker.idl */,

&quot;Worker.idl&quot; is already in this list, so this addition seems like a mistake.

&gt;  				2E4346330F546A8200B0F1BA /* Worker.cpp */,
&gt;  				2E4346340F546A8200B0F1BA /* Worker.h */,
&gt;  				2E4346350F546A8200B0F1BA /* Worker.idl */,


&gt; diff --git a/WebCore/bindings/js/JSAbstractWorkerCustom.cpp b/WebCore/bindings/js/JSAbstractWorkerCustom.cpp
&gt; +#include &quot;JSDOMGlobalObject.h&quot;
&gt; +#include &quot;JSEventListener.h&quot;
&gt; +#include &quot;AbstractWorker.h&quot;

Sort these alphabetically.

Of course this file looks exceedingly similar to bindings/js/JSWorkerCustom.cpp, but it sounds like that is on your roadmap to clean that up.

Why not file a bug now about this so it is tracked?


&gt; diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp

&gt; +#if ENABLE(SHARED_WORKERS)
&gt; +    if (AbstractWorker* abstractWorker = target-&gt;toAbstractWorker())
&gt; +        return toJS(exec, abstractWorker);
&gt; +#endif
...
&gt; +#if ENABLE(SHARED_WORKERS)
&gt; +    CONVERT_TO_EVENT_TARGET(AbstractWorker)
&gt; +#endif

Why aren&apos;t these SharedWorker instead of AbstractWorker?


&gt; diff --git a/WebCore/bindings/js/JSSharedWorkerConstructor.cpp b/WebCore/bindings/js/JSSharedWorkerConstructor.cpp
&gt; +#include &quot;JSDOMWindowCustom.h&quot;
&gt; +#include &quot;JSSharedWorker.h&quot;
&gt; +#include &quot;SharedWorker.h&quot;

Sort these headers.

&gt; +JSSharedWorkerConstructor::JSSharedWorkerConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
&gt; +    : DOMObject(JSSharedWorkerConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))
&gt; +{
&gt; +    putDirect(exec-&gt;propertyNames().prototype, JSSharedWorkerPrototype::self(exec, globalObject), None);

This file looks ok, but I&apos;m weak on JSC bindings, so it would be great to get this file glanced at by someone who knows it better (for example ap, olliej, weinig, ...).

That being said the JSWorkerConstructor has the following line which you omitted:

    putDirect(exec-&gt;propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);

Why?  (To be honest I don&apos;t know why this line is necessary in that other file)


&gt; diff --git a/WebCore/dom/EventTarget.h b/WebCore/dom/EventTarget.h
&gt; +    class SharedWorker;

Sorting is done case sensitive so SharedWorker comes after ScriptExecutionContext. (ScriptExecutionContext comes after SVGElementInstance because ascii(&apos;c&apos;) &gt; ascii(&apos;V&apos;)).

&gt;      class SVGElementInstance;
&gt;      class ScriptExecutionContext;


&gt; diff --git a/WebCore/workers/AbstractWorker.cpp b/WebCore/workers/AbstractWorker.cpp
&gt; +void AbstractWorker::dispatchScriptErrorEvent(const String&amp;, const String&amp;, int)
&gt; +{
&gt; +    //FIXME(atwilson): Generate an ErrorEvent instead of a simple event

FIXME&apos;s in WebKit don&apos;t have names in them.  If people want to know who added it, they can use the revision history.


&gt; diff --git a/WebCore/workers/SharedWorker.h b/WebCore/workers/SharedWorker.h
&gt; +        SharedWorker(const String&amp;, const String&amp;, ScriptExecutionContext*, ExceptionCode&amp;);

I would keep the parameter names for the two strings here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129666</commentid>
    <comment_count>4</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-02 22:14:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; For shared workers, if the error is still not handled afterwards, or if the
&gt; error occurred while handling a previous script error, the error should be
&gt; reported to the user.&quot;
&gt; 
&gt; So it sounds this the exception should not be propogated.
&gt; 

That part of the spec is dealing with exceptions thrown by worker script. In
this test, the exception is thrown by the page script (in the &quot;toString()&quot;
method invoked to generate the params passed to the Worker constructor. This
test is correct.

&gt; 
&gt; &gt; +try {
&gt; &gt; +    var foo = {toString:function(){new Worker(foo)}}
&gt; &gt; +    new SharedWorker(foo, name);
&gt; &gt; +    log(&quot;FAIL: no exception when trying to create workers recursively&quot;);
&gt; 
&gt; Same comment as above.

Same thing as above - this is page script throwing an exception, so it should
be propagated up.


&gt; 
&gt; You&apos;re missing JSSharedWorkerConstructor.h in the above list.

Fixed.

&gt; 
&gt; &gt; diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
&gt; 
&gt; This seems to be missing a line like this one:
&gt;     !contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1
&gt; 

Good catch. I totally missed that.


&gt; &gt; diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; &gt;  			isa = PBXGroup;
&gt; &gt;  			children = (
&gt; &gt; +				2E4346350F546A8200B0F1BA /* Worker.idl */,
&gt; 
&gt; &quot;Worker.idl&quot; is already in this list, so this addition seems like a mistake.

Yeah, it&apos;s weird. I used xcode itself to make these modifications, so I&apos;m
confused about why this was added. I&apos;ve removed it.


&gt; 
&gt; Why not file a bug now about this so it is tracked?
&gt; 

Done: https://bugs.webkit.org/show_bug.cgi?id=26948

&gt; Why aren&apos;t these SharedWorker instead of AbstractWorker?

They are intentionally AbstractWorker. Long-term we&apos;ll get rid of toWorker()
also and just have toAbstractWorker() since that&apos;s the common base class. 

&gt; 
&gt; 
&gt; &gt; diff --git a/WebCore/bindings/js/JSSharedWorkerConstructor.cpp b/WebCore/bindings/js/JSSharedWorkerConstructor.cpp
&gt; &gt; +#include &quot;JSDOMWindowCustom.h&quot;
&gt; &gt; +#include &quot;JSSharedWorker.h&quot;
&gt; &gt; +#include &quot;SharedWorker.h&quot;
&gt; 
&gt; Sort these headers.

Aren&apos;t they already sorted?

&gt; 
&gt; 
&gt; This file looks ok, but I&apos;m weak on JSC bindings, so it would be great to get
&gt; this file glanced at by someone who knows it better (for example ap, olliej,
&gt; weinig, ...).

It&apos;s using Worker as a template, which ap wrote, so I&apos;m assuming it&apos;s correct,
but who knows? :) The Constructor code is kinda dense.

&gt; 
&gt; That being said the JSWorkerConstructor has the following line which you
&gt; omitted:
&gt; 
&gt;     putDirect(exec-&gt;propertyNames().length, jsNumber(exec, 1),
&gt; ReadOnly|DontDelete|DontEnum);
&gt; 

I thought that was a copy/paste bug in the Worker constructor, but maybe I&apos;m
wrong? I don&apos;t see that in JSXMLHttpRequestConstructor.cpp. I&apos;ll ping the folks
on webkit-dev about it.

I addressed the other comments as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129669</commentid>
    <comment_count>5</comment_count>
      <attachid>32218</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-02 22:41:50 -0700</bug_when>
    <thetext>Created attachment 32218
Patch addressing Levin&apos;s comments

Also added the &quot;length&quot; property to the constructor with appropriate comments, per maciej&apos;s email on the webkit-dev mailing-list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129670</commentid>
    <comment_count>6</comment_count>
      <attachid>32218</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-02 23:22:00 -0700</bug_when>
    <thetext>Comment on attachment 32218
Patch addressing Levin&apos;s comments

This looks great.  This could be landed as is (if possible to address the nits it would be great -- but it could be landed as is).


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        * bindings/js/JSEventTarget.cpp:
&gt; +        (WebCore::toJS):
&gt; +        (WebCore::toEventTarget):
&gt; +        Added support for converting to/from AbstractWorkers.
&gt; +        * bindings/js/JSSharedWorkerConstructor.cpp: Added.
&gt; +       (WebCore::JSSharedWorkerConstructor::JSSharedWorkerConstructor):

This one got out of place by one space.

&gt; +        (WebCore::CALLBACK_FUNC_DECL):
&gt; +        Custom constructor for SharedWorker.
&gt; +       * dom/EventTarget.cpp:

This one got out of place by one space.

&gt; diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp

&gt; +#if ENABLE(SHARED_WORKERS)
&gt; +#include &quot;JSAbstractWorker.h&quot;
&gt; +#include &quot;AbstractWorker.h&quot;

Nice to sort these.

&gt; diff --git a/WebCore/workers/AbstractWorker.cpp b/WebCore/workers/AbstractWorker.cpp
&gt; +#endif  // ENABLE(SHARED_WORKERS)

Only one space before end of line comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129724</commentid>
    <comment_count>7</comment_count>
      <attachid>32242</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-03 10:33:50 -0700</bug_when>
    <thetext>Created attachment 32242
Patch with final style/whitespace tweaks

OK, addressed the whitespace/include sorting tweaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129821</commentid>
    <comment_count>8</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-04 19:40:50 -0700</bug_when>
    <thetext>There&apos;s one more issue I need to deal with on this patch - I need a custom toJS handler on AbstractWorker, to make sure I generate the correct wrapper object based on the type of m_impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130027</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-06 14:40:22 -0700</bug_when>
    <thetext>bugzilla-tool isn&apos;t smart enough yet to land a patch other than the one which is r+&apos;d :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130310</commentid>
    <comment_count>10</comment_count>
      <attachid>32403</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-07 17:16:54 -0700</bug_when>
    <thetext>Created attachment 32403
proposed patch with a fix to AbstractWorker::toJS()

While working on a patch based on this patch, I found a bug in how AbstractWorker::toJS() worked, so I added a custom toJS() function in AbstractWorker.

Also fixed JSSharedWorkerConstructor.cpp to use the proper global object when constructing the prototype chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131010</commentid>
    <comment_count>11</comment_count>
      <attachid>32592</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-10 16:42:09 -0700</bug_when>
    <thetext>Created attachment 32592
Patch including changes to newly-upstreamed gypi files, and a couple of layout test &quot;expected.txt&quot; files I missed.

Code base keeps changing underneath me - updated patch to reflect latest revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131018</commentid>
    <comment_count>12</comment_count>
      <attachid>32593</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-10 16:53:26 -0700</bug_when>
    <thetext>Created attachment 32593
More style fixups per levin&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131116</commentid>
    <comment_count>13</comment_count>
      <attachid>32614</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-11 10:36:44 -0700</bug_when>
    <thetext>Created attachment 32614
Removed test expectations that were incorrectly generated with non-default flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131260</commentid>
    <comment_count>14</comment_count>
      <attachid>32614</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-13 00:33:23 -0700</bug_when>
    <thetext>Comment on attachment 32614
Removed test expectations that were incorrectly generated with non-default flags.

&gt; While working on a patch based on this patch, I found a bug in how
&gt; AbstractWorker::toJS() worked, so I added a custom toJS() function in
&gt; AbstractWorker.

It would have been nice to fix this issue while adding a layout tests that caught the issue, but it sounds like your later patch will have a layout test which catches this.

This looks fine.  I have a few very minor nits which I&apos;ll address while landing.


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        (WebCore::AbstractWorker::AbstractWorker):
&gt; +        Common baseclass for SharedWorker and (soon) Worker. The functions below were copied from Worker.cpp.

s/baseclass/base class/


&gt; diff --git a/WebCore/workers/AbstractWorker.cpp b/WebCore/workers/AbstractWorker.cpp
&gt; +#include &quot;AbstractWorker.h&quot;

Typically a blank line is after the header for the cpp file.



&gt; diff --git a/WebCore/workers/AbstractWorker.h b/WebCore/workers/AbstractWorker.h

&gt; +
&gt; +#if ENABLE(SHARED_WORKERS)
&gt; +
&gt; +#include &quot;AtomicStringHash.h&quot;
&gt; +#include &quot;ActiveDOMObject.h&quot;

Out of order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131275</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-13 02:08:25 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/45795</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32196</attachid>
            <date>2009-07-02 13:51:32 -0700</date>
            <delta_ts>2009-07-02 14:34:05 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>86460</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4wZDUxY2Zm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgICogY29uZmlndXJlLmFj
OgorCiAyMDA5LTA2LTIwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDM3Yjg0Yy4u
OTk1ZTY1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdp
bHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQg
ZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDYtMzAgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTJmYmNkZC4uNjI3NDI2NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM4LDYgKzM4
LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJM
RV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBF
TkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NW
R19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsK
QEAgLTUxLDQgKzUyLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGJiOWExZmYuLmJlNDFiN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wNy0wMiAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBV
bml0IHRlc3RzIGZvciBuZXcgU2hhcmVkV29ya2VyIEFQSXMgKGRpc2FibGVkIGJ5IGRlZmF1bHQp
LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
b25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJs
ZWQ6IEFkZGVkLgorCiAyMDA5LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQwMWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRX
b3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9m
IFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhj
ZXB0aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5LgorUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3Jr
ZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29y
a2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlv
biAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hh
cmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtl
ciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1OTg0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0
cnVjdG9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8cD5UZXN0IFNo
YXJlZFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVz
dWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7dG9TdHJpbmc6
ZnVuY3Rpb24oKXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9nKCJGQUlMOiB0
b1N0cmluZyBleGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChleCkgeworICAg
IGlmIChleCA9PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0cmluZyBleGNl
cHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZB
SUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBpbnN0ZWFkIG9m
IG9uZSBwcm9wYWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7CisgICAgdmFyIGZv
byA9IHt0b1N0cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAgbmV3IFNoYXJl
ZFdvcmtlcihmb28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9uIHdoZW4gdHJ5
aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hh
cmVkV29ya2VyKCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0b3Igd2l0aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhjZXB0aW9uIik7
Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNv
bnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiAr
IGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtl
cigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6IENvbnN0cnVj
dG9yIHN1Y2NlZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNoIChleCkgewor
ICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQg
bmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK3RyeSB7
CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29t
bW9uLmpzIiwgIm5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0
b3Igc3VjY2VlZGVkIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiRkFJTDogaW52b2tpbmcg
U2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKK30KKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3MDRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBT
aG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05F
LgorCitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkLgorU1VDQ0VTUzogTGlzdGVuZXIgd2Fz
IG5vdCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4KK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQg
YWZ0ZXIgR0MuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMzNmZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5l
ci5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsNzMgQEAKKzxib2R5PgorPHA+VGVzdCBTaGFyZWRX
b3JrZXIgZXZlbnQgbGlzdGVuZXIuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9u
LmpzIiwgImZvb2JhciIpOwordmFyIG51bUxpc3RlbmVyQ2FsbHMgPSAwOworZnVuY3Rpb24gY291
bnRMaXN0ZW5lckNhbGxiYWNrcyhldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSAhPSAiZm9v
IikKKyAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV2ZW50OiAiICsgZXZl
bnQudHlwZSk7CisgICAgbnVtTGlzdGVuZXJDYWxscysrOworfQord29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoImZvbyIsIGNvdW50TGlzdGVuZXJDYWxsYmFja3MsIGZhbHNlKTsKK3ZhciBldmVudCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTsKK2V2ZW50LmluaXRFdmVudCgiZm9vIiwg
ZmFsc2UsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0
ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQu
Iik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQuIik7
Cit9CisKK3dvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVyQ2Fs
bGJhY2tzLCBmYWxzZSk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlz
dGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgbm90IGNh
bGxlZCBhZnRlciByZW1vdmFsLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVy
IHdhcyBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30KKworLy8gVGVzdCB0byBtYWtlIHN1cmUg
dGhhdCBldmVudCBsaXN0ZW5lcnMgc3Vydml2ZSBHQy4KK3dvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJmb28iLCBjcmVhdGVOZXdMaXN0ZW5lcihjb3VudExpc3RlbmVyQ2FsbGJhY2tzKSwgZmFsc2Up
OworZ2MoKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0ZW5lckNh
bGxzID09IDIpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQgYWZ0ZXIg
R0MuIik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQg
YWZ0ZXIgR0MuIik7Cit9CisKKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworZnVu
Y3Rpb24gY3JlYXRlTmV3TGlzdGVuZXIoZnVuYykKK3sKKyAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50
KSB7IGZ1bmMoZXZlbnQpOyB9OworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2Ug
Y29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29s
bGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NTUyOWRlLi44ODA1Y2RiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA5
LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEluaXRpYWwg
SURMIGRlZmluaXRpb24gYW5kIGJpbmRpbmdzIGZvciBTaGFyZWRXb3JrZXJzLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3Vw
cG9ydC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVz
IGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIG5ldyBmaWxl
cyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFj
dFdvcmtlcjo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGhhbmRsZXIgdGhhdCBtYXJrcyB0
aGUgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKToK
KyAgICAgICAgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIChvbmx5IGVuYWJsZWQgd2hlbiBTSEFS
RURfV09SS0VSUyBpcworICAgICAgICBlbmFibGVkKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbnZlcnRp
bmcgdG8vZnJvbSBBYnN0cmFjdFdvcmtlcnMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgIChXZWJDb3JlOjpKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmspOgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlv
biB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBNZXNzYWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6
CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBWOCBoYW5k
bGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50TGlzdGVuZXIoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxM
QkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBDdXN0b20gY29uc3RydWN0b3IgZm9yIFNoYXJlZFdv
cmtlci4KKyAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6dG9BYnN0cmFjdFdvcmtlcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2Vy
OjpBYnN0cmFjdFdvcmtlcik6CisgICAgICAgIENvbW1vbiBiYXNlY2xhc3MgZm9yIFNoYXJlZFdv
cmtlciBhbmQgKHNvb24pIFdvcmtlci4gVGhlIGZ1bmN0aW9ucyBiZWxvdyB3ZXJlIGNvcGllZCBm
cm9tIFdvcmtlci5jcHAuCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVmYWN0
b3JpbmcgV29ya2VyIHRvIGRlcml2ZSBmcm9tIEFic3RyYWN0V29ya2VyIHRvIGVuYWJsZSBjb2Rl
IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0V29y
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJvckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaFNjcmlwdEVycm9yRXZl
bnQpOgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDogQWRkZWQuCisgICAgICAg
IERlZmluaXRpb25zIG9mIGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJ5IFdvcmtlci5oIGFuZCBTaGFy
ZWRXb3JrZXIuaC4gSW4gYSBmdXR1cmUgcGF0Y2gsIFdvcmtlciB3aWxsIGRlcml2ZSBmcm9tIEFi
c3RyYWN0V29ya2VyLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnRvQWJz
dHJhY3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNldE9uZXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6Om9uZXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdFdvcmtlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpw
b3J0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGw6IEFkZGVkLgorCiAyMDA5
LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxMzIyYjcuLmRkZTczMDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBA
QCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lD
T05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJM
RV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FO
SU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAt
NTIsNCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01f
U1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
REFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA2ZjFmNjU0Li45ZjNjZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00NSw2ICs0NSw3
IEBAIFZQQVRIID0gXAogCiBET01fQ0xBU1NFUyA9IFwKICAgICBBYnN0cmFjdFZpZXcgXAorICAg
IEFic3RyYWN0V29ya2VyIFwKICAgICBBdHRyIFwKICAgICBCYXJJbmZvIFwKICAgICBDREFUQVNl
Y3Rpb24gXApAQCAtMjAwLDYgKzIwMSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFJhbmdlIFwK
ICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBcCisgICAgU2hhcmVkV29ya2VyIFwKICAg
ICBTUUxFcnJvciBcCiAgICAgU1FMUmVzdWx0U2V0IFwKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGU2YzI1ODIuLjVlZDY3NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ5LDYgKzI0OSw4IEBA
IElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwK
IAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFy
cmF5LmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCisJV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRs
IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5pZGwgXApAQCAtMjMyMiw2ICsyMzI0LDI2IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCiBlbmRpZgogCisjIC0t
LQorIyBTaGFyZWRXb3JrZXIgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9TSEFSRURfV09SS0VS
UworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEK
Kword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCit3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKwlXZWJDb3Jl
L3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAorCitlbmRpZgorCiAjIC0t
LS0KICMgV01MIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODQyMTYzMC4uY2Q0N2E2NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNDMx
LDYgKzE0MzEsMjUgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9MSkgewogICAg
ICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKIH0KIAorY29udGFpbnMoREVGSU5F
UywgU0hBUkVEX1dPUktFUlM9MSkgeworICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9
IEVOQUJMRV9XT1JLRVJTPTEKKworICAgIElETF9CSU5ESU5HUyArPSBcCisgICAgICAgIHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRs
CisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBc
CisgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKyAgICAgICAgd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5oIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIFwKKyAg
ICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaAorCisKK30KKwogY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1ZJREVPPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfVklERU89MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc4MTM4Y2IuLjAzYTk1N2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NDEsMTEgKzY0MSwxNyBAQAogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQz
NkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwogCQk0
MTJBNjg0NzBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTJBNjg0NjBGNkIw
M0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi87IH07CisJCTQxNUI3
QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU0MEZGNTk4RTYw
MDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTgw
RkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTUwRkY1OThFNjAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk0MTVCN0M1
OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTYwRkY1OThFNjAwNjc3
MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNjMwRkY1QTc2
NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
U3RhY2suaCAqLzsgfTsKIAkJNDE2RTc1QkYwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxT
dGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJ
NDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQk0MTZFNzVDQzBFREY5MEM3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwogCQk0MTZGNDVGMDBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNDVF
RjBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwICovOyB9OworCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDE5NTM2
NTEwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTUzNjUwMEY2ODIyMjQwMEQw
QzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggKi87IH07CiAJCTQxQkY3MDBCMEZFODZG
NDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAv
KiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLzsgfTsKQEAgLTY1NCw2ICs2NjAsMTQgQEAKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2
NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQwMTVDQTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1
QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0Uw
RkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5jcHAgKi87IH07CisJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFEMTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5oICovOyB9OworCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovOyB9OworCQk0
MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIz
QiAvKiBTaGFyZWRXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRjBGRjU5ODY5
MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLzsgfTsKIAkJNDFGMDYwQ0QwRjVFRUIyQjAw
QTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNDFGMDYwQ0UwRjVFRUIyQjAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9y
Q29udHJvbGxlci5oICovOyB9OwogCQk0MUYwNjE2QTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNw
ZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2MTY5MEY1RUZCREQwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNv
bnRyb2xsZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTU2NywxMSArNTU4MSwxNyBAQAogCQk0MTEw
NDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNj
cmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyQTY4NDYwRjZCMDNE
RDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTYwRkY1
OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3
NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4
ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE5NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJh
bnRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5
MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTgwLDYgKzU2MDAsMTQgQEAKIAkJ
NDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyog
SlNTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3
RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0
aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIx
Q0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2
QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyog
U2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdv
cmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMv
U2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwQUEw
RjVFRThCQjAwQTA3RUFDIC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MENDMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05ODM1LDcgKzk4NjMsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMThGODMxQjcwRkQ0OEM3ODAwRDhDNTZCIC8qIFdvcmtlckxvYWRl
clByb3h5LmggKi8sCisJCQkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29y
a2VyLmNwcCAqLywKKwkJCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCAqLywKKwkJCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aWRsICovLAorCQkJCTQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3Bw
ICovLAorCQkJCTQxRTFCMUNFMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCAqLywK
KwkJCQk0MUUxQjFDRjBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLywKIAkJ
CQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLywKKwkJ
CQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKIAkJCQkyRTQzNDYz
MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLywKIAkJCQkyRTQzNDYzNDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyLmggKi8sCiAJCQkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlci5pZGwgKi8sCkBAIC0xMzM3MCw2ICsxMzQwNSwxMCBAQAogCQlCQzFBMzc5MzA5N0M2
RkIxMDAxOUYzRDggLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmggKi8sCisJCQkJNDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJhY3RX
b3JrZXJDdXN0b20uY3BwICovLAorCQkJCTQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk0MTVCN0M1NjBGRjU5OEU2MDA2Nzcw
RjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDNEVERUY3MEMwOEY0MTQw
MDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKQEAgLTEzOTI2LDYgKzEzOTY1LDEwIEBACiAJCUUx
QzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNB
YnN0cmFjdFdvcmtlci5jcHAgKi8sCisJCQkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuaCAqLywKKwkJCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNT
aGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5oICovLAogCQkJCUUxQzhCRTVDMEU4QkQxNUEwMDY0Q0I3RCAvKiBKU1dvcmtl
ci5jcHAgKi8sCiAJCQkJRTFDQUE1QzUwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggKi8s
CiAJCQkJRTE4MjU2OEQwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi8s
CkBAIC0xNjkxMyw2ICsxNjk1NiwxMSBAQAogCQkJCUJDQkNBRTNEMEZGMTkzOTkwMDA3NjJBRSAv
KiBKU0RhdGFHcmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0RBQUVGMEZGOTYxNUQwMENFMDEzOCAvKiBET01EYXRhR3JpZERhdGFTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3MEY3IC8qIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDA3QTdGMEZG
OTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4
Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMTcwMjEsNiArMTcwNjksOCBAQAogCQkJCUJDNzdDREEzMEZFRkVCNTMwMDcwODg3QiAv
KiBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUJDNzdD
Rjk5MEZGMTcyNDIwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbkxpc3QuaWRsIGluIFJlc291cmNl
cyAqLywKIAkJCQlCQzc3Q0Y5RjBGRjE3MkIzMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW4uaWRs
IGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFENTBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODkyNyw2ICsxODk3
NywxMyBAQAogCQkJCUJDNzdEMjM5MEZGMjk4MDgwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEQUFFRTBGRjk2MTVEMDBDRTAx
MzggLyogRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRTFC
MUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2Vy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3
QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fi
c3RyYWN0V29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42ZmQwMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtl
ci5oIgorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0V2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNBYnN0cmFjdFdvcmtlcjo6
bWFyaygpCit7CisgICAgRE9NT2JqZWN0OjptYXJrKCk7CisKKyAgICBtYXJrSWZOb3ROdWxsKG1f
aW1wbC0+b25lcnJvcigpKTsKKworICAgIHR5cGVkZWYgQWJzdHJhY3RXb3JrZXI6OkV2ZW50TGlz
dGVuZXJzTWFwIEV2ZW50TGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYgQWJzdHJhY3RXb3JrZXI6
Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOworICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBl
dmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBmb3IgKEV2ZW50
TGlzdGVuZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsg
bWFwSXRlciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7CisgICAgICAgIGZv
ciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQuYmVn
aW4oKTsgdmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikKKyAgICAg
ICAgICAgICgqdmVjSXRlciktPm1hcmtKU0Z1bmN0aW9uKCk7CisgICAgfQorfQorCitKU1ZhbHVl
IEpTQWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnbG9iYWxPYmplY3QtPmZpbmRP
ckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAoIWxpc3RlbmVyKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVu
ZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVsZWFzZSgpLCBhcmdzLmF0
KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pT
VmFsdWUgSlNBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBKU0V2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZ2xvYmFsT2JqZWN0LT5maW5k
SlNFdmVudExpc3RlbmVyKGFyZ3MuYXQoMSkpOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdCgyKS50b0Jvb2xlYW4o
ZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIyMDEzZWIuLmMwOTViZjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKQEAgLTQ3Niw2ICs0NzcsMTMgQEAgSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6d29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hh
cmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcj4oZXhlYywgdGhpcyk7Cit9CisjZW5k
aWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdpbmRvdy5vcGVuKCkg
YW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dC5jcHAKaW5kZXggMjA1ODA5OC4uMjVkMDkzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXQuY3BwCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1ZGUgIkpTQWJzdHJh
Y3RXb3JrZXIuaCIKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSw2ICsxMDYsMTEg
QEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQqIHRhcmdldCkKICAg
ICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4dCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoQWJzdHJhY3RXb3JrZXIqIGFi
c3RyYWN0V29ya2VyID0gdGFyZ2V0LT50b0Fic3RyYWN0V29ya2VyKCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGFic3RyYWN0V29ya2VyKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTMyLDYgKzE0MiwxMCBAQCBF
dmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVS
VF9UT19FVkVOVF9UQVJHRVQoV29ya2VyQ29udGV4dCkKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKEFic3RyYWN0V29ya2Vy
KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWFiYmQxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9t
LmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25z
dCBDbGFzc0luZm8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CisKK0pTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9i
amVjdFByb3RvdHlwZSgpKSkKK3sKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgSlNTaGFyZWRXb3JrZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7Cit9CisKK3N0YXRpYyBKU09iamVjdCogY29uc3RydWN0U2hhcmVkV29ya2Vy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5
bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKworICAgIFVTdHJpbmcgc2NyaXB0
VVJMID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBVU3RyaW5nIG5hbWUgPSBhcmdz
LmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUo
c2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKworICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkp
KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RTaGFyZWRXb3JrZXI7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmU4YjJiNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3JfaAorI2RlZmluZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gK
KworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7CisgICAgcHVibGljOgorICAgICAgICBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsK
KworICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQorCisjZW5kaWYgLy8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjJjZWViNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFy
ZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBKU1NoYXJlZFdvcmtlcjo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygp
OworCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2Vy
Kj4oaW1wbCgpKS0+cG9ydCgpKSB7CisgICAgICAgIERPTU9iamVjdCogd3JhcHBlciA9IGdldENh
Y2hlZERPTU9iamVjdFdyYXBwZXIoKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9y
dCk7CisgICAgICAgIGlmICh3cmFwcGVyICYmICF3cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAg
ICAgIHdyYXBwZXItPm1hcmsoKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3Bw
CmluZGV4IDc3NzIwMTYuLmYyZjRlN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApAQCAtMzc2
LDYgKzM3NiwxMSBAQAogI2luY2x1ZGUgIlY4V29ya2VyTmF2aWdhdG9yLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRlICJWOEFic3RyYWN0V29ya2VyLmgi
CisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IFY4Q2xhc3NJbmRleDo6R2V0RmFjdG9yeShW
OFdyYXBwZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCmluZGV4IGIyMzhkNzAuLjUzZWVl
YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCkBAIC02NSw2ICs2NSwxNyBAQCB0eXBlZGVmIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5
KSgpOwogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVf
T0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKFNIQVJF
RFdPUktFUiwgU2hhcmVkV29ya2VyKQorCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9X
UkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihBQlNUUkFD
VFdPUktFUiwgQWJzdHJhY3RXb3JrZXIpCisjZWxzZQorI2RlZmluZSBTSEFSRURfV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorI2RlZmluZSBTSEFSRURfV09SS0VSX05PTk5P
REVfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisKICNkZWZpbmUgRE9NX05PREVfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEFU
VFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3RlckRhdGEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI2Nyw3ICsyNzgsOCBAQCB0eXBlZGVmIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0
b3J5KSgpOwogI2RlZmluZSBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoTUVTU0FHRVBPUlQsIE1lc3NhZ2VQb3J0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoWE1MSFRU
UFJFUVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyAgICBXT1JL
RVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhW
KQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0IGludG8gdHdvIGhhbHZlcyBi
ZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxsaW5vbnNlbnNlIGNyYXNoZXMg
d2hlbiBtYWNyb3MgZ2V0CkBAIC0zNjUsNiArMzc3LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICAg
ICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3IpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWSURFT19OT05OT0RFX1RZUEVT
KFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBT
SEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAKICNpZiBF
TkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjI4NjBkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3Ry
YWN0V29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihBYnN0cmFjdFdvcmtl
ciogd29ya2VyLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBmaW5kT25seSkKK3sK
KyAgICBpZiAod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4
dCgpKSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogd29ya2VyQ29udGV4
dFByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRyaWV2ZSgpOworICAgICAg
ICBBU1NFUlQod29ya2VyQ29udGV4dFByb3h5KTsKKyAgICAgICAgcmV0dXJuIHdvcmtlckNvbnRl
eHRQcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UsIGZp
bmRPbmx5KTsKKyAgICB9CisKKyAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZl
KHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAocHJveHkpCisgICAg
ICAgIHJldHVybiBmaW5kT25seSA/IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1
ZSwgZmFsc2UpIDogcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUs
IGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQorCitBQ0NFU1NPUl9HRVRURVIoQWJzdHJhY3RX
b3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5vbmVy
cm9yLl9nZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09S
S0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAod29ya2VyLT5vbmVycm9yKCkpIHsKKyAgICAg
ICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0
RXZlbnRMaXN0ZW5lcio+KHdvcmtlci0+b25lcnJvcigpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihBYnN0cmFjdFdvcmtlck9uZXJyb3IpCit7CisgICAg
SU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLm9uZXJyb3IuX3NldCIpOworICAgIEFic3Ry
YWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJh
Y3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGluZm8uSG9sZGVyKCkpOwor
ICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9i
amVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9uZXJyb3IoKSk7CisgICAgaWYgKHZhbHVlLT5J
c051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJ
bmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVhciB0aGUgbGlzdGVuZXIuCisgICAg
ICAgIHdvcmtlci0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgdmFsdWUs
IGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlz
dGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0
ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAg
IHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhD
dXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgd29ya2VyLT5zZXRPbmVycm9yKGxpc3RlbmVyKTsKKyAgICAgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjpr
QWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwor
ICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9s
ZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRM
aXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJv
b2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICB3b3JrZXIt
PmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206
OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEFic3RyYWN0V29ya2VyUmVt
b3ZlRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CisgICAgQWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4
UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4
OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7CisKKyAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgYXJnc1sxXSwgdHJ1ZSk7
CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3Rl
bmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0
Q2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCA2
MDgzYWM1Li43NjA5NTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBr
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29y
a2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtBYnN0cmFjdFdvcmtlckludGVybmFsRmll
bGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisjZW5kaWYK
KwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dDb25zb2xlSW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dIaXN0b3J5SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxk
Q291bnQgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJh
ckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKQEAgLTQ4Nyw2
ICs0OTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3RlbmVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEFic3Ry
YWN0V29ya2VyT25lcnJvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3Jr
ZXJBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdv
cmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgorCiAjdW5kZWYgREVDTEFSRV9JTkRFWEVEX0FD
Q0VTU19DSEVDSwogI3VuZGVmIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zNDM1OTRmCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19GVU5DX0RFQ0woU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLlNoYXJlZFdvcmtl
ci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKSB7Cisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKKyAgICB9CisKKyAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDIpIHsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRz
IiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgIH0KKworICAgIHY4OjpUcnlDYXRjaCB0cnlD
YXRjaDsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRv
U3RyaW5nKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gYXJnc1sxXS0+VG9T
dHJpbmcoKTsKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpIHsKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkpOworICAgIH0KKyAgICBpZiAoc2NyaXB0
VXJsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIC8v
IEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQgPSAwOworICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJv
eHkgPSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJldHJpZXZlKCk7CisgICAgaWYgKHBy
b3h5KQorICAgICAgICBjb250ZXh0ID0gcHJveHktPndvcmtlckNvbnRleHQoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZSgpOworICAg
ICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICAgICAgY29udGV4dCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIH0KKworICAgIC8vIENyZWF0
ZSB0aGUgd29ya2VyIG9iamVjdC4KKyAgICAvLyBOb3RlOiBpdCdzIE9LIHRvIGxldCB0aGlzIFJl
ZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBhbHNvIGNhbGwgU2V0RE9NV3JhcHBlcigp
LCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVyZW5jZSB0byBvYmouCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gb2JqID0gU2hhcmVkV29y
a2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVybCksIHRvV2ViQ29yZVN0cmluZyhu
YW1lKSwgY29udGV4dCwgZWMpOworCisgICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIg
b2JqZWN0IGludGVybmFsIGZpZWxkcy4KKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXJPYmplY3QgPSBhcmdzLkhvbGRlcigpOworICAgIFY4UHJveHk6OnNldERPTVdyYXBwZXIod3Jh
cHBlck9iamVjdCwgVjhDbGFzc0luZGV4OjpTSEFSRURXT1JLRVIsIG9iai5nZXQoKSk7CisKKyAg
ICBvYmotPnJlZigpOworICAgIFY4UHJveHk6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVj
dChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlck9iamVj
dCkpOworCisgICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApp
bmRleCAwNmNlYTA3Li5mNjkyYjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC05NSw2ICs5NSwxMyBA
QCBXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9Xb3JrZXJDb250ZXh0KCkKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorQWJzdHJhY3RXb3JrZXIqIEV2ZW50VGFy
Z2V0Ojp0b0Fic3RyYWN0V29ya2VyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiAj
aWZuZGVmIE5ERUJVRwogdm9pZCBmb3JiaWRFdmVudERpc3BhdGNoKCkKIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IDY2MjkwMmUuLjE1ODVjNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMzYsNiArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlcjsKICAgICBjbGFz
cyBBdG9taWNTdHJpbmc7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFz
cyBET01XaW5kb3c7CkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBFdmVudExpc3RlbmVyOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIE5v
ZGU7CisgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5j
ZTsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFdvcmtlcjsK
QEAgLTcwLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBX
b3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorICAgICAgICB2aXJ0dWFsIEFic3RyYWN0V29ya2VyKiB0b0Fic3RyYWN0
V29ya2VyKCk7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgPSAwOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAppbmRleCBhMjNkNzA4Li5iZmRlYmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDYxLDYgKzQ2MSwx
MCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJd
IFdvcmtlckNvbnN0cnVjdG9yIFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRv
cgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJiYgRU5BQkxF
X1NIQVJFRF9XT1JLRVJTCisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcg
b3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQ
bHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFy
cmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIGIv
V2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41OWU5NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2Vy
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFjdFdv
cmtlcjo6QWJzdHJhY3RXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQoreworfQorCitBYnN0cmFjdFdvcmtl
cjo6fkFic3RyYWN0V29ya2VyKCkKK3sKK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQoreworICAgIEV2ZW50TGlzdGVuZXJzTWFw
OjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAg
aWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0ZW5lclZl
Y3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7
CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vj
b25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5lckl0ZXIg
PSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKyts
aXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlz
dGVuZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGlz
dGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5h
ZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KK30KKwordm9pZCBBYnN0cmFjdFdvcmtl
cjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9vbCkKK3sKKyAgICBFdmVudExpc3RlbmVyc01h
cDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAg
IGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChM
aXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJl
Z2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7
CisgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAg
ICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEFic3RyYWN0
V29ya2VyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJS
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0
ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQoZXZlbnQtPnR5cGUoKSk7CisgICAgZm9y
IChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJz
Q29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzQ29weS5lbmQoKTsgKytsaXN0
ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZl
bnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCkt
PmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuICFl
dmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjpkaXNw
YXRjaExvYWRFcnJvckV2ZW50KCkKK3sKKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9v
bkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkVycm9yTGlzdGVuZXIt
PmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNT
RVJUKCFlYyk7Cit9CisKK3ZvaWQgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JF
dmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQpCit7CisgICAgLy9GSVhNRShh
dHdpbHNvbik6IEdlbmVyYXRlIGFuIEVycm9yRXZlbnQgaW5zdGVhZCBvZiBhIHNpbXBsZSBldmVu
dAorICAgIGRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1ODA1MwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEFic3RyYWN0V29ya2VyX2gKKyNkZWZpbmUgQWJzdHJhY3RXb3JrZXJf
aAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5n
SGFzaC5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFi
c3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSXMKKyAgICAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJl
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB2aXJ0dWFsIEFic3RyYWN0V29ya2VyKiB0b0Fic3RyYWN0V29y
a2VyKCkgeyByZXR1cm4gdGhpczsgfQorCisgICAgICAgIC8vIFV0aWxpdHkgcm91dGluZXMgdG8g
Z2VuZXJhdGUgYXBwcm9wcmlhdGUgZXJyb3IgZXZlbnRzIGZvciBsb2FkaW5nIGFuZCBzY3JpcHQg
ZXhjZXB0aW9ucy4KKyAgICAgICAgdm9pZCBkaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7CisgICAg
ICAgIHZvaWQgZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50KTsKKworICAgICAgICB2b2lkIHNldE9u
ZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25FcnJv
ckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7Cisg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVu
dExpc3RlbmVyc01hcDsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJz
KCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQorCisgICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8QWJzdHJhY3RXb3JrZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RXb3JrZXI+OjpkZXJlZjsKKworICAgICAgICBBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgICAgIHZpcnR1YWwgfkFic3RyYWN0V29ya2VyKCk7CisKKyAgICBw
cml2YXRlOgorCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
KworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAg
ICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisgICAgfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisj
ZW5kaWYgLy8gQWJzdHJhY3RXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmlkbCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlYjBmNwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbQ3VzdG9tTWFya0Z1bmN0aW9uLCBDb25k
aXRpb25hbD1TSEFSRURfV09SS0VSU10gQWJzdHJhY3RXb3JrZXIgeworCisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRF
dmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAg
IFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIg
bGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUxZDMwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShT
SEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorCisjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXI6OlNo
YXJlZFdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKKyAgICA6IEFic3RyYWN0V29ya2VyKGNv
bnRleHQpCit7CisgICAgLy8gUGxhY2Vob2xkZXIgLSB1bHRpbWF0ZWx5IHdlJ2xsIGxvb2sgdXAg
dGhlIHdvcmtlciBpbiB0aGUgU2hhcmVkV29ya2VyUmVwb3NpdG9yeS4KK30KKworU2hhcmVkV29y
a2VyOjp+U2hhcmVkV29ya2VyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjQyZGY0Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNoYXJlZFdvcmtlcl9oCisjZGVmaW5lIFNoYXJlZFdvcmtlcl9oCisKKyNpbmNsdWRlICJBYnN0
cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2hhcmVk
V29ya2VyIDogcHVibGljIEFic3RyYWN0V29ya2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNoYXJlZFdvcmtlcih1cmwsIG5hbWUsIGNvbnRleHQsIGVjKSk7CisgICAgICAgIH0KKyAgICAg
ICAgflNoYXJlZFdvcmtlcigpOworICAgICAgICBNZXNzYWdlUG9ydCogcG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkV29y
a2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhcmVkV29y
a2VyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIGIvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTY5ZjgxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRl
cmZhY2UgW0N1c3RvbU1hcmtGdW5jdGlvbiwgQ29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlNdIFNo
YXJlZFdvcmtlciA6IEFic3RyYWN0V29ya2VyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE1lc3NhZ2VQb3J0IHBvcnQ7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2YzM0Njk0Li5hMjc1YTIxIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtl
ciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyAoZGlzYWJs
ZWQgYnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzoKKwogMjAwOS0wNy0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHdhcm5pbmdzIGZyb20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1z
dHJpbmdzCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGIvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwppbmRleCBlMTMyMmI3Li5kZGU3MzAzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktpdC9tYWMvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM5LDYgKzM5LDcgQEAgRU5B
QkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFU
QUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBFTkFCTEVfU1ZH
ID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJ
T047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsKQEAgLTUyLDQg
KzUzLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFUSCA9
IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVG
SU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJ
TFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FO
SU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAk
KEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggOGRiNzIzNy4u
OTY5MzI0YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdpbHNvbiAg
PGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVmaW5l
IFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIC0tc2hhcmVkLXdv
cmtlcnMgKHR1cm5lZCBvZmYgYnkgZGVmYXVsdCkKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQt
d2Via2l0OgorCiAyMDA5LTA3LTAyICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29tZXNAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKaW5kZXggYzI0MmZlNy4uMzFmODA2OSAxMDA3NTUKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQKQEAgLTQ2LDEwICs0NiwxMCBAQCBteSAkbWFrZUFyZ3M7CiAKIG15ICgkdGhy
ZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkZGF0YWJhc2VT
dXBwb3J0LCAkZG9tU3RvcmFnZVN1cHBvcnQsCiAgICAgJGZpbHRlcnNTdXBwb3J0LCAkZ2VvbG9j
YXRpb25TdXBwb3J0LCAkZ25vbWVLZXlyaW5nU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQs
Ci0gICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25T
dXBwb3J0LCAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1cHBvcnQsCi0gICAgJHN2Z0FzSW1h
Z2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwg
JHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LAotICAgICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBw
b3J0LCAkd21sU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LCAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1
cHBvcnQsCi0gICAgJGNvdmVyYWdlU3VwcG9ydCk7CisgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1
cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBv
cnQsICRzdmdTdXBwb3J0LAorICAgICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1
cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAorICAg
ICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQs
ICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCisgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRT
dXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0
aW9uID0+ICIzZC1yZW5kZXJpbmciLCBkZXNjID0+ICJUb2dnbGUgM0QgcmVuZGVyaW5nIHN1cHBv
cnQiLApAQCAtODUsNiArODUsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4g
Im9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBPZmZsaW5lIFdlYiBB
cHBsaWNhdGlvbiBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRvZmZsaW5lV2ViQXBwbGlj
YXRpb25TdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAic2hhcmVkLXdvcmtlcnMiLCBkZXNj
ID0+ICJUb2dnbGUgU2hhcmVkV29ya2VycyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX1NIQVJFRF9XT1JLRVJTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHNoYXJlZFdvcmtl
cnNTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAic3ZnIiwgZGVzYyA9PiAiVG9nZ2xlIFNW
RyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1NWRyIsIGRlZmF1bHQgPT4gMSwg
dmFsdWUgPT4gXCRzdmdTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2Nv
bmZpZ3VyZS5hYwppbmRleCBiNzIwYTQzLi42Y2Y0NzA3IDEwMDY0NAotLS0gYS9jb25maWd1cmUu
YWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zOTgsNiArMzk4LDE0IEBAIEFDX0FSR19FTkFCTEUo
d21sLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dtbD0ibm8iXSkKIEFDX01TR19SRVNVTFQo
WyRlbmFibGVfd21sXSkKIAorIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBTaGFyZWRXb3JrZXJz
IHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgU2hhcmVkV29ya2Vy
cyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoc2hhcmVkX3dvcmtlcnMsCisgICAgICAgICAgICAg
IEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWQtd29ya2Vyc10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgU2hhcmVkV29ya2VycyBbZGVmYXVs
dD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9zaGFyZWRfd29ya2Vycz0ibm8iXSkK
K0FDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkX3dvcmtlcnNdKQorCiAjIGNoZWNrIHdoZXRo
ZXIgdG8gZW5hYmxlIFdlYiBXb3JrZXJzIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhbd2hldGhl
ciB0byBlbmFibGUgV2ViIFdvcmtlcnMgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKHdvcmtlcnMs
CkBAIC02ODAsNiArNjg4LDcgQEAgQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9DT1ZFUkFHRV0sW3Rl
c3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9G
QVNUX01BTExPQ10sW3Rlc3QgIiRlbmFibGVfZmFzdF9tYWxsb2MiID0gInllcyJdKQogQU1fQ09O
RElUSU9OQUwoW0VOQUJMRV9XTUxdLFt0ZXN0ICIkZW5hYmxlX3dtbCIgPSAieWVzIl0pCiBBTV9D
T05ESVRJT05BTChbRU5BQkxFX1dPUktFUlNdLFt0ZXN0ICIkZW5hYmxlX3dvcmtlcnMiID0gInll
cyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9TSEFSRURfV09SS0VSU10sW3Rlc3QgIiRlbmFi
bGVfc2hhcmVkX3dvcmtlcnMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW1NWR19GTEFHU10s
W3Rlc3QgIiRzdmdfZmxhZ3MiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0hUTUxfRkxBR1Nd
LFt0ZXN0ICIkaHRtbF9mbGFncyIgPSAieWVzIl0pCiAKQEAgLTcxOCw2ICs3MjcsNyBAQCBGZWF0
dXJlczoKICBIVE1MNSBjbGllbnQtc2lkZSBkYXRhYmFzZSBzdG9yYWdlIHN1cHBvcnQgICAgICAg
ICAgICAgICA6ICRlbmFibGVfZGF0YWJhc2UKICBIVE1MNSB2aWRlbyBlbGVtZW50IHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfdmlkZW8KICBJY29uIGRhdGFi
YXNlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
aWNvbl9kYXRhYmFzZQorIFNoYXJlZFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zaGFyZWRfd29ya2VycwogIFNWRyBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmcK
ICBTVkcgYW5pbWF0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICRlbmFibGVfc3ZnX2FuaW1hdGlvbgogIFNWRyBmb250cyBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmdfZm9udHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32199</attachid>
            <date>2009-07-02 14:34:05 -0700</date>
            <delta_ts>2009-07-02 22:41:50 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>86435</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4wZDUxY2Zm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgICogY29uZmlndXJlLmFj
OgorCiAyMDA5LTA2LTIwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDM3Yjg0Yy4u
OTk1ZTY1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdp
bHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQg
ZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDYtMzAgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTJmYmNkZC4uNjI3NDI2NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM4LDYgKzM4
LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJM
RV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBF
TkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NW
R19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsK
QEAgLTUxLDQgKzUyLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGJiOWExZmYuLmJlNDFiN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wNy0wMiAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBV
bml0IHRlc3RzIGZvciBuZXcgU2hhcmVkV29ya2VyIEFQSXMgKGRpc2FibGVkIGJ5IGRlZmF1bHQp
LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
b25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJs
ZWQ6IEFkZGVkLgorCiAyMDA5LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQwMWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRX
b3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9m
IFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhj
ZXB0aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5LgorUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3Jr
ZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29y
a2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlv
biAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hh
cmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtl
ciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1OTg0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0
cnVjdG9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8cD5UZXN0IFNo
YXJlZFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVz
dWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7dG9TdHJpbmc6
ZnVuY3Rpb24oKXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9nKCJGQUlMOiB0
b1N0cmluZyBleGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChleCkgeworICAg
IGlmIChleCA9PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0cmluZyBleGNl
cHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZB
SUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBpbnN0ZWFkIG9m
IG9uZSBwcm9wYWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7CisgICAgdmFyIGZv
byA9IHt0b1N0cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAgbmV3IFNoYXJl
ZFdvcmtlcihmb28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9uIHdoZW4gdHJ5
aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hh
cmVkV29ya2VyKCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0b3Igd2l0aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhjZXB0aW9uIik7
Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNv
bnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiAr
IGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtl
cigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6IENvbnN0cnVj
dG9yIHN1Y2NlZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNoIChleCkgewor
ICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQg
bmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK3RyeSB7
CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29t
bW9uLmpzIiwgIm5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0
b3Igc3VjY2VlZGVkIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiRkFJTDogaW52b2tpbmcg
U2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKK30KKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3MDRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBT
aG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05F
LgorCitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkLgorU1VDQ0VTUzogTGlzdGVuZXIgd2Fz
IG5vdCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4KK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQg
YWZ0ZXIgR0MuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMzNmZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5l
ci5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsNzMgQEAKKzxib2R5PgorPHA+VGVzdCBTaGFyZWRX
b3JrZXIgZXZlbnQgbGlzdGVuZXIuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9u
LmpzIiwgImZvb2JhciIpOwordmFyIG51bUxpc3RlbmVyQ2FsbHMgPSAwOworZnVuY3Rpb24gY291
bnRMaXN0ZW5lckNhbGxiYWNrcyhldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSAhPSAiZm9v
IikKKyAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV2ZW50OiAiICsgZXZl
bnQudHlwZSk7CisgICAgbnVtTGlzdGVuZXJDYWxscysrOworfQord29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoImZvbyIsIGNvdW50TGlzdGVuZXJDYWxsYmFja3MsIGZhbHNlKTsKK3ZhciBldmVudCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTsKK2V2ZW50LmluaXRFdmVudCgiZm9vIiwg
ZmFsc2UsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0
ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQu
Iik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQuIik7
Cit9CisKK3dvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVyQ2Fs
bGJhY2tzLCBmYWxzZSk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlz
dGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgbm90IGNh
bGxlZCBhZnRlciByZW1vdmFsLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVy
IHdhcyBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30KKworLy8gVGVzdCB0byBtYWtlIHN1cmUg
dGhhdCBldmVudCBsaXN0ZW5lcnMgc3Vydml2ZSBHQy4KK3dvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJmb28iLCBjcmVhdGVOZXdMaXN0ZW5lcihjb3VudExpc3RlbmVyQ2FsbGJhY2tzKSwgZmFsc2Up
OworZ2MoKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0ZW5lckNh
bGxzID09IDIpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQgYWZ0ZXIg
R0MuIik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQg
YWZ0ZXIgR0MuIik7Cit9CisKKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworZnVu
Y3Rpb24gY3JlYXRlTmV3TGlzdGVuZXIoZnVuYykKK3sKKyAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50
KSB7IGZ1bmMoZXZlbnQpOyB9OworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2Ug
Y29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29s
bGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NTUyOWRlLi44ODA1Y2RiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA5
LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEluaXRpYWwg
SURMIGRlZmluaXRpb24gYW5kIGJpbmRpbmdzIGZvciBTaGFyZWRXb3JrZXJzLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3Vw
cG9ydC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVz
IGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIG5ldyBmaWxl
cyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFj
dFdvcmtlcjo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGhhbmRsZXIgdGhhdCBtYXJrcyB0
aGUgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKToK
KyAgICAgICAgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIChvbmx5IGVuYWJsZWQgd2hlbiBTSEFS
RURfV09SS0VSUyBpcworICAgICAgICBlbmFibGVkKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbnZlcnRp
bmcgdG8vZnJvbSBBYnN0cmFjdFdvcmtlcnMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgIChXZWJDb3JlOjpKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmspOgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlv
biB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBNZXNzYWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6
CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBWOCBoYW5k
bGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50TGlzdGVuZXIoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxM
QkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBDdXN0b20gY29uc3RydWN0b3IgZm9yIFNoYXJlZFdv
cmtlci4KKyAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6dG9BYnN0cmFjdFdvcmtlcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2Vy
OjpBYnN0cmFjdFdvcmtlcik6CisgICAgICAgIENvbW1vbiBiYXNlY2xhc3MgZm9yIFNoYXJlZFdv
cmtlciBhbmQgKHNvb24pIFdvcmtlci4gVGhlIGZ1bmN0aW9ucyBiZWxvdyB3ZXJlIGNvcGllZCBm
cm9tIFdvcmtlci5jcHAuCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVmYWN0
b3JpbmcgV29ya2VyIHRvIGRlcml2ZSBmcm9tIEFic3RyYWN0V29ya2VyIHRvIGVuYWJsZSBjb2Rl
IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0V29y
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJvckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaFNjcmlwdEVycm9yRXZl
bnQpOgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDogQWRkZWQuCisgICAgICAg
IERlZmluaXRpb25zIG9mIGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJ5IFdvcmtlci5oIGFuZCBTaGFy
ZWRXb3JrZXIuaC4gSW4gYSBmdXR1cmUgcGF0Y2gsIFdvcmtlciB3aWxsIGRlcml2ZSBmcm9tIEFi
c3RyYWN0V29ya2VyLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnRvQWJz
dHJhY3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNldE9uZXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6Om9uZXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdFdvcmtlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpw
b3J0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGw6IEFkZGVkLgorCiAyMDA5
LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxMzIyYjcuLmRkZTczMDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBA
QCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lD
T05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJM
RV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FO
SU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAt
NTIsNCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01f
U1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
REFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA2ZjFmNjU0Li45ZjNjZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00NSw2ICs0NSw3
IEBAIFZQQVRIID0gXAogCiBET01fQ0xBU1NFUyA9IFwKICAgICBBYnN0cmFjdFZpZXcgXAorICAg
IEFic3RyYWN0V29ya2VyIFwKICAgICBBdHRyIFwKICAgICBCYXJJbmZvIFwKICAgICBDREFUQVNl
Y3Rpb24gXApAQCAtMjAwLDYgKzIwMSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFJhbmdlIFwK
ICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBcCisgICAgU2hhcmVkV29ya2VyIFwKICAg
ICBTUUxFcnJvciBcCiAgICAgU1FMUmVzdWx0U2V0IFwKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGU2YzI1ODIuLjVlZDY3NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ5LDYgKzI0OSw4IEBA
IElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwK
IAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFy
cmF5LmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCisJV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRs
IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5pZGwgXApAQCAtMjMyMiw2ICsyMzI0LDI2IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCiBlbmRpZgogCisjIC0t
LQorIyBTaGFyZWRXb3JrZXIgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9TSEFSRURfV09SS0VS
UworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEK
Kword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCit3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKwlXZWJDb3Jl
L3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAorCitlbmRpZgorCiAjIC0t
LS0KICMgV01MIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODQyMTYzMC4uY2Q0N2E2NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNDMx
LDYgKzE0MzEsMjUgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9MSkgewogICAg
ICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKIH0KIAorY29udGFpbnMoREVGSU5F
UywgU0hBUkVEX1dPUktFUlM9MSkgeworICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9
IEVOQUJMRV9XT1JLRVJTPTEKKworICAgIElETF9CSU5ESU5HUyArPSBcCisgICAgICAgIHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRs
CisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBc
CisgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKyAgICAgICAgd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5oIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIFwKKyAg
ICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaAorCisKK30KKwogY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1ZJREVPPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfVklERU89MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc4MTM4Y2IuLjAzYTk1N2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NDEsMTEgKzY0MSwxNyBAQAogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQz
NkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwogCQk0
MTJBNjg0NzBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTJBNjg0NjBGNkIw
M0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi87IH07CisJCTQxNUI3
QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU0MEZGNTk4RTYw
MDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTgw
RkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTUwRkY1OThFNjAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk0MTVCN0M1
OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTYwRkY1OThFNjAwNjc3
MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNjMwRkY1QTc2
NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
U3RhY2suaCAqLzsgfTsKIAkJNDE2RTc1QkYwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxT
dGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJ
NDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQk0MTZFNzVDQzBFREY5MEM3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwogCQk0MTZGNDVGMDBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNDVF
RjBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwICovOyB9OworCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDE5NTM2
NTEwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTUzNjUwMEY2ODIyMjQwMEQw
QzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggKi87IH07CiAJCTQxQkY3MDBCMEZFODZG
NDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAv
KiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLzsgfTsKQEAgLTY1NCw2ICs2NjAsMTQgQEAKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2
NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQwMTVDQTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1
QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0Uw
RkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5jcHAgKi87IH07CisJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFEMTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5oICovOyB9OworCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovOyB9OworCQk0
MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIz
QiAvKiBTaGFyZWRXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRjBGRjU5ODY5
MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLzsgfTsKIAkJNDFGMDYwQ0QwRjVFRUIyQjAw
QTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNDFGMDYwQ0UwRjVFRUIyQjAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9y
Q29udHJvbGxlci5oICovOyB9OwogCQk0MUYwNjE2QTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNw
ZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2MTY5MEY1RUZCREQwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNv
bnRyb2xsZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTU2NywxMSArNTU4MSwxNyBAQAogCQk0MTEw
NDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNj
cmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyQTY4NDYwRjZCMDNE
RDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTYwRkY1
OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3
NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4
ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE5NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJh
bnRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5
MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTgwLDYgKzU2MDAsMTQgQEAKIAkJ
NDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyog
SlNTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3
RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0
aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIx
Q0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2
QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyog
U2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdv
cmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMv
U2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwQUEw
RjVFRThCQjAwQTA3RUFDIC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MENDMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05ODM1LDcgKzk4NjMsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMThGODMxQjcwRkQ0OEM3ODAwRDhDNTZCIC8qIFdvcmtlckxvYWRl
clByb3h5LmggKi8sCisJCQkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29y
a2VyLmNwcCAqLywKKwkJCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCAqLywKKwkJCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aWRsICovLAorCQkJCTQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3Bw
ICovLAorCQkJCTQxRTFCMUNFMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCAqLywK
KwkJCQk0MUUxQjFDRjBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLywKIAkJ
CQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLywKKwkJ
CQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKIAkJCQkyRTQzNDYz
MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLywKIAkJCQkyRTQzNDYzNDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyLmggKi8sCiAJCQkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlci5pZGwgKi8sCkBAIC0xMzM3MCw2ICsxMzQwNSwxMCBAQAogCQlCQzFBMzc5MzA5N0M2
RkIxMDAxOUYzRDggLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmggKi8sCisJCQkJNDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJhY3RX
b3JrZXJDdXN0b20uY3BwICovLAorCQkJCTQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk0MTVCN0M1NjBGRjU5OEU2MDA2Nzcw
RjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDNEVERUY3MEMwOEY0MTQw
MDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKQEAgLTEzOTI2LDYgKzEzOTY1LDEwIEBACiAJCUUx
QzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNB
YnN0cmFjdFdvcmtlci5jcHAgKi8sCisJCQkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuaCAqLywKKwkJCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNT
aGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5oICovLAogCQkJCUUxQzhCRTVDMEU4QkQxNUEwMDY0Q0I3RCAvKiBKU1dvcmtl
ci5jcHAgKi8sCiAJCQkJRTFDQUE1QzUwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggKi8s
CiAJCQkJRTE4MjU2OEQwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi8s
CkBAIC0xNjkxMyw2ICsxNjk1NiwxMSBAQAogCQkJCUJDQkNBRTNEMEZGMTkzOTkwMDA3NjJBRSAv
KiBKU0RhdGFHcmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0RBQUVGMEZGOTYxNUQwMENFMDEzOCAvKiBET01EYXRhR3JpZERhdGFTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3MEY3IC8qIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDA3QTdGMEZG
OTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4
Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMTcwMjEsNiArMTcwNjksOCBAQAogCQkJCUJDNzdDREEzMEZFRkVCNTMwMDcwODg3QiAv
KiBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUJDNzdD
Rjk5MEZGMTcyNDIwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbkxpc3QuaWRsIGluIFJlc291cmNl
cyAqLywKIAkJCQlCQzc3Q0Y5RjBGRjE3MkIzMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW4uaWRs
IGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFENTBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODkyNyw2ICsxODk3
NywxMyBAQAogCQkJCUJDNzdEMjM5MEZGMjk4MDgwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEQUFFRTBGRjk2MTVEMDBDRTAx
MzggLyogRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRTFC
MUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2Vy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3
QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fi
c3RyYWN0V29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42ZmQwMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtl
ci5oIgorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0V2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNBYnN0cmFjdFdvcmtlcjo6
bWFyaygpCit7CisgICAgRE9NT2JqZWN0OjptYXJrKCk7CisKKyAgICBtYXJrSWZOb3ROdWxsKG1f
aW1wbC0+b25lcnJvcigpKTsKKworICAgIHR5cGVkZWYgQWJzdHJhY3RXb3JrZXI6OkV2ZW50TGlz
dGVuZXJzTWFwIEV2ZW50TGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYgQWJzdHJhY3RXb3JrZXI6
Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOworICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBl
dmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBmb3IgKEV2ZW50
TGlzdGVuZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsg
bWFwSXRlciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7CisgICAgICAgIGZv
ciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQuYmVn
aW4oKTsgdmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikKKyAgICAg
ICAgICAgICgqdmVjSXRlciktPm1hcmtKU0Z1bmN0aW9uKCk7CisgICAgfQorfQorCitKU1ZhbHVl
IEpTQWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnbG9iYWxPYmplY3QtPmZpbmRP
ckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAoIWxpc3RlbmVyKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVu
ZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVsZWFzZSgpLCBhcmdzLmF0
KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pT
VmFsdWUgSlNBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBKU0V2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZ2xvYmFsT2JqZWN0LT5maW5k
SlNFdmVudExpc3RlbmVyKGFyZ3MuYXQoMSkpOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdCgyKS50b0Jvb2xlYW4o
ZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIyMDEzZWIuLmMwOTViZjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKQEAgLTQ3Niw2ICs0NzcsMTMgQEAgSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6d29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hh
cmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcj4oZXhlYywgdGhpcyk7Cit9CisjZW5k
aWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdpbmRvdy5vcGVuKCkg
YW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dC5jcHAKaW5kZXggMjA1ODA5OC4uMjVkMDkzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXQuY3BwCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1ZGUgIkpTQWJzdHJh
Y3RXb3JrZXIuaCIKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSw2ICsxMDYsMTEg
QEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQqIHRhcmdldCkKICAg
ICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4dCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoQWJzdHJhY3RXb3JrZXIqIGFi
c3RyYWN0V29ya2VyID0gdGFyZ2V0LT50b0Fic3RyYWN0V29ya2VyKCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGFic3RyYWN0V29ya2VyKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTMyLDYgKzE0MiwxMCBAQCBF
dmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVS
VF9UT19FVkVOVF9UQVJHRVQoV29ya2VyQ29udGV4dCkKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKEFic3RyYWN0V29ya2Vy
KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWFiYmQxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9t
LmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25z
dCBDbGFzc0luZm8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CisKK0pTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9i
amVjdFByb3RvdHlwZSgpKSkKK3sKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgSlNTaGFyZWRXb3JrZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7Cit9CisKK3N0YXRpYyBKU09iamVjdCogY29uc3RydWN0U2hhcmVkV29ya2Vy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5
bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKworICAgIFVTdHJpbmcgc2NyaXB0
VVJMID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBVU3RyaW5nIG5hbWUgPSBhcmdz
LmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUo
c2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKworICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkp
KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RTaGFyZWRXb3JrZXI7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmU4YjJiNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3JfaAorI2RlZmluZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gK
KworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7CisgICAgcHVibGljOgorICAgICAgICBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsK
KworICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQorCisjZW5kaWYgLy8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjJjZWViNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFy
ZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBKU1NoYXJlZFdvcmtlcjo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygp
OworCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2Vy
Kj4oaW1wbCgpKS0+cG9ydCgpKSB7CisgICAgICAgIERPTU9iamVjdCogd3JhcHBlciA9IGdldENh
Y2hlZERPTU9iamVjdFdyYXBwZXIoKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9y
dCk7CisgICAgICAgIGlmICh3cmFwcGVyICYmICF3cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAg
ICAgIHdyYXBwZXItPm1hcmsoKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3Bw
CmluZGV4IDc3NzIwMTYuLmYyZjRlN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApAQCAtMzc2
LDYgKzM3NiwxMSBAQAogI2luY2x1ZGUgIlY4V29ya2VyTmF2aWdhdG9yLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRlICJWOEFic3RyYWN0V29ya2VyLmgi
CisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IFY4Q2xhc3NJbmRleDo6R2V0RmFjdG9yeShW
OFdyYXBwZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCmluZGV4IGIyMzhkNzAuLjUzZWVl
YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCkBAIC02NSw2ICs2NSwxNyBAQCB0eXBlZGVmIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5
KSgpOwogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVf
T0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKFNIQVJF
RFdPUktFUiwgU2hhcmVkV29ya2VyKQorCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9X
UkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihBQlNUUkFD
VFdPUktFUiwgQWJzdHJhY3RXb3JrZXIpCisjZWxzZQorI2RlZmluZSBTSEFSRURfV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorI2RlZmluZSBTSEFSRURfV09SS0VSX05PTk5P
REVfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisKICNkZWZpbmUgRE9NX05PREVfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEFU
VFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3RlckRhdGEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI2Nyw3ICsyNzgsOCBAQCB0eXBlZGVmIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0
b3J5KSgpOwogI2RlZmluZSBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoTUVTU0FHRVBPUlQsIE1lc3NhZ2VQb3J0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoWE1MSFRU
UFJFUVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyAgICBXT1JL
RVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhW
KQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0IGludG8gdHdvIGhhbHZlcyBi
ZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxsaW5vbnNlbnNlIGNyYXNoZXMg
d2hlbiBtYWNyb3MgZ2V0CkBAIC0zNjUsNiArMzc3LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICAg
ICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3IpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWSURFT19OT05OT0RFX1RZUEVT
KFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBT
SEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAKICNpZiBF
TkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjI4NjBkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3Ry
YWN0V29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihBYnN0cmFjdFdvcmtl
ciogd29ya2VyLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBmaW5kT25seSkKK3sK
KyAgICBpZiAod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4
dCgpKSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogd29ya2VyQ29udGV4
dFByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRyaWV2ZSgpOworICAgICAg
ICBBU1NFUlQod29ya2VyQ29udGV4dFByb3h5KTsKKyAgICAgICAgcmV0dXJuIHdvcmtlckNvbnRl
eHRQcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UsIGZp
bmRPbmx5KTsKKyAgICB9CisKKyAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZl
KHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAocHJveHkpCisgICAg
ICAgIHJldHVybiBmaW5kT25seSA/IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1
ZSwgZmFsc2UpIDogcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUs
IGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQorCitBQ0NFU1NPUl9HRVRURVIoQWJzdHJhY3RX
b3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5vbmVy
cm9yLl9nZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09S
S0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAod29ya2VyLT5vbmVycm9yKCkpIHsKKyAgICAg
ICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0
RXZlbnRMaXN0ZW5lcio+KHdvcmtlci0+b25lcnJvcigpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihBYnN0cmFjdFdvcmtlck9uZXJyb3IpCit7CisgICAg
SU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLm9uZXJyb3IuX3NldCIpOworICAgIEFic3Ry
YWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJh
Y3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGluZm8uSG9sZGVyKCkpOwor
ICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9i
amVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9uZXJyb3IoKSk7CisgICAgaWYgKHZhbHVlLT5J
c051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJ
bmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVhciB0aGUgbGlzdGVuZXIuCisgICAg
ICAgIHdvcmtlci0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgdmFsdWUs
IGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlz
dGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0
ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAg
IHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhD
dXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgd29ya2VyLT5zZXRPbmVycm9yKGxpc3RlbmVyKTsKKyAgICAgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjpr
QWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwor
ICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9s
ZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRM
aXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJv
b2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICB3b3JrZXIt
PmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206
OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEFic3RyYWN0V29ya2VyUmVt
b3ZlRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CisgICAgQWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4
UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4
OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7CisKKyAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgYXJnc1sxXSwgdHJ1ZSk7
CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3Rl
bmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0
Q2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCA2
MDgzYWM1Li43NjA5NTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBr
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29y
a2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtBYnN0cmFjdFdvcmtlckludGVybmFsRmll
bGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisjZW5kaWYK
KwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dDb25zb2xlSW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dIaXN0b3J5SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxk
Q291bnQgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJh
ckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKQEAgLTQ4Nyw2
ICs0OTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3RlbmVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEFic3Ry
YWN0V29ya2VyT25lcnJvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3Jr
ZXJBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdv
cmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgorCiAjdW5kZWYgREVDTEFSRV9JTkRFWEVEX0FD
Q0VTU19DSEVDSwogI3VuZGVmIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWIyZjhlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19GVU5DX0RFQ0woU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLlNoYXJlZFdvcmtl
ci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUg
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKKworICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gYXJnc1sxXS0+VG9TdHJpbmcoKTsKKyAgICBpZiAo
dHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNo
LkV4Y2VwdGlvbigpKTsKKworICAgIGlmIChzY3JpcHRVcmwuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgLy8gR2V0IHRoZSBzY3JpcHQgZXhlY3V0aW9u
IGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDA7CisgICAg
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAocHJveHkpCisgICAgICAgIGNvbnRleHQgPSBw
cm94eS0+d29ya2VyQ29udGV4dCgpOworICAgIGVsc2UgeworICAgICAgICBGcmFtZSogZnJhbWUg
PSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBjb250ZXh0ID0gZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSB3b3JrZXIgb2JqZWN0LgorICAg
IC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdvIG91dCBvZiBzY29wZSBiZWNh
dXNlIHdlIGFsc28gY2FsbCBTZXRET01XcmFwcGVyKCksIHdoaWNoIGVmZmVjdGl2ZWx5IGhvbGRz
IGEgcmVmZXJlbmNlIHRvIG9iai4KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8U2hhcmVkV29ya2VyPiBvYmogPSBTaGFyZWRXb3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJp
bmcoc2NyaXB0VXJsKSwgdG9XZWJDb3JlU3RyaW5nKG5hbWUpLCBjb250ZXh0LCBlYyk7CisKKyAg
ICAvLyBTZXR1cCB0aGUgc3RhbmRhcmQgd3JhcHBlciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlck9iamVjdCA9IGFyZ3MuSG9sZGVyKCk7
CisgICAgVjhQcm94eTo6c2V0RE9NV3JhcHBlcih3cmFwcGVyT2JqZWN0LCBWOENsYXNzSW5kZXg6
OlNIQVJFRFdPUktFUiwgb2JqLmdldCgpKTsKKworICAgIG9iai0+cmVmKCk7CisgICAgVjhQcm94
eTo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7CisKKyAgICByZXR1cm4gd3JhcHBl
ck9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDA2Y2VhMDcuLmY2OTJiNDMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKQEAgLTk1LDYgKzk1LDEzIEBAIFdvcmtlckNvbnRleHQqIEV2ZW50VGFy
Z2V0Ojp0b1dvcmtlckNvbnRleHQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCitBYnN0cmFjdFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvQWJzdHJhY3RXb3JrZXIoKQor
eworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNjYyOTAyZS4uMTU4NWM2ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAg
IGNsYXNzIEFic3RyYWN0V29ya2VyOwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFz
cyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTQzLDYgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiAgICAg
Y2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXI7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyOwpAQCAtNzAsNiArNzIsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29u
dGV4dCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHZp
cnR1YWwgQWJzdHJhY3RXb3JrZXIqIHRvQWJzdHJhY3RXb3JrZXIoKTsKKyNlbmRpZgorCiAgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGEyM2Q3MDguLmJmZGViZDQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCkBAIC00NjEsNiArNDYxLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAg
ICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV29ya2VyQ29uc3RydWN0b3IgV29ya2Vy
OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAmJiBFTkFCTEVfU0hBUkVEX1dPUktFUlMKKyAgICAgICAg
YXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJl
ZFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgorI2VuZGlmCisKICAgICAg
ICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVjdG9yIFBsdWdpbjsKICAgICAgICAgYXR0cmlidXRl
IFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1Z2luQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZTk1ZDYKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC0w
LDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKQorCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3RyYWN0V29ya2VyOjpBYnN0cmFjdFdvcmtlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCit7Cit9CisKK0Fic3RyYWN0V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIoKQorewor
fQorCit2b2lkIEFic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIs
IGJvb2wpCit7CisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50
TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVu
ZXJzLmVuZCgpKSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAgICAg
bGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVy
cy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIExpc3Rl
bmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlzdGVu
ZXJWZWN0b3I6Oml0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0
ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICAg
ICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVu
ZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7
CisgICAgfQorfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVy
LCBib29sKQoreworICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVu
dExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3Rl
bmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3Rl
bmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxp
c3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0
ZXIgPT0gZXZlbnRMaXN0ZW5lcikgeworICAgICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0
ZW5lckl0ZXIgLSBsaXN0ZW5lcnMuYmVnaW4oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZXZl
bnQgfHwgZXZlbnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2Vw
dGlvbjo6VU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVu
ZXJzLmdldChldmVudC0+dHlwZSgpKTsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9p
dGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnNDb3B5LmJlZ2luKCk7IGxpc3RlbmVySXRl
ciAhPSBsaXN0ZW5lcnNDb3B5LmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlz
KTsKKyAgICAgICAgbGlzdGVuZXJJdGVyLT5nZXQoKS0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCks
IGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7
Cit9CisKK3ZvaWQgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKQorewor
ICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgZmFsc2UsIHRydWUpOworICAgIGlmIChtX29uRXJyb3JMaXN0ZW5lcikgeworICAgICAg
ICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRo
aXMpOworICAgICAgICBtX29uRXJyb3JMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCB0
cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2
ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBBYnN0
cmFjdFdvcmtlcjo6ZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGludCkKK3sKKyAgICAvL0ZJWE1FKGF0d2lsc29uKTogR2VuZXJhdGUgYW4gRXJy
b3JFdmVudCBpbnN0ZWFkIG9mIGEgc2ltcGxlIGV2ZW50CisgICAgZGlzcGF0Y2hMb2FkRXJyb3JF
dmVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zZDU4MDUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWJzdHJhY3RX
b3JrZXJfaAorI2RlZmluZSBBYnN0cmFjdFdvcmtlcl9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAgIGNsYXNzIEFic3Ry
YWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
Ly8gRXZlbnRUYXJnZXQgQVBJcworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZpcnR1
YWwgQWJzdHJhY3RXb3JrZXIqIHRvQWJzdHJhY3RXb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9CisK
KyAgICAgICAgLy8gVXRpbGl0eSByb3V0aW5lcyB0byBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBlcnJv
ciBldmVudHMgZm9yIGxvYWRpbmcgYW5kIHNjcmlwdCBleGNlcHRpb25zLgorICAgICAgICB2b2lk
IGRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaFNjcmlwdEVy
cm9yRXZlbnQoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBpbnQpOworCisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVuZXIgPSBldmVudExpc3RlbmVy
OyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX29u
RXJyb3JMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0
b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOworICAgICAgICBF
dmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVu
ZXJzOyB9CisKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj46OnJlZjsK
KyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj46OmRlcmVmOworCisgICAg
ICAgIEFic3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgdmly
dHVhbCB+QWJzdHJhY3RXb3JrZXIoKTsKKworICAgIHByaXZhdGU6CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorCisgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29uRXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9l
dmVudExpc3RlbmVyczsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAvLyBBYnN0cmFjdFdvcmtlcl9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIGIvV2ViQ29y
ZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43NGViMGY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50
ZXJmYWNlIFtDdXN0b21NYXJrRnVuY3Rpb24sIENvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTXSBB
YnN0cmFjdFdvcmtlciB7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJv
cjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
ICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlz
ZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkMzBkMwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmKQorICAgIDogQWJzdHJhY3RXb3JrZXIoY29udGV4dCkKK3sKKyAgICAvLyBQbGFjZWhv
bGRlciAtIHVsdGltYXRlbHkgd2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRoZSBTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LgorfQorCitTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oIGIvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmY2NDJkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyX2gKKyNkZWZpbmUg
U2hhcmVkV29ya2VyX2gKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXIgOiBwdWJsaWMgQWJzdHJhY3RX
b3JrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29y
a2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyKHVybCwgbmFtZSwg
Y29udGV4dCwgZWMpKTsKKyAgICAgICAgfQorICAgICAgICB+U2hhcmVkV29ya2VyKCk7CisgICAg
ICAgIE1lc3NhZ2VQb3J0KiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKworICAg
ICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFyZWRXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjlmODEzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbQ3VzdG9tTWFya0Z1bmN0aW9u
LCBDb25kaXRpb25hbD1TSEFSRURfV09SS0VSU10gU2hhcmVkV29ya2VyIDogQWJzdHJhY3RXb3Jr
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKKyAgICB9
OworCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDZjMzQ2OTQuLmEyNzVhMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDkt
MDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIChkaXNhYmxlZCBieSBkZWZhdWx0KS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA3LTAy
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggd2FybmluZ3Mg
ZnJvbSB1cGRhdGUtd2Via2l0LWxvY2FsaXphYmxlLXN0cmluZ3MKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxMzIyYjcuLmRk
ZTczMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFC
TEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJM
RV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NW
R19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0Ug
PSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAtNTIsNCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9
IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hT
TFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJM
RV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChF
TkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxF
X1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAk
KEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VS
UykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNf
SU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxF
X1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAk
KEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA4ZGI3MjM3Li45NjkzMjRjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3IgLS1zaGFyZWQtd29ya2VycyAodHVybmVkIG9mZiBieSBkZWZh
dWx0KQorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDctMDIgIEFu
dG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBj
MjQyZmU3Li4zMWY4MDY5IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtNDYsMTAgKzQ2
LDEwIEBAIG15ICRtYWtlQXJnczsKIAogbXkgKCR0aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hh
bm5lbE1lc3NhZ2luZ1N1cHBvcnQsICRkYXRhYmFzZVN1cHBvcnQsICRkb21TdG9yYWdlU3VwcG9y
dCwKICAgICAkZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQsICRnbm9tZUtleXJp
bmdTdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwKLSAgICAkamF2YVNjcmlwdERlYnVnZ2Vy
U3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRzdmdTdXBwb3J0LCAkc3Zn
QW5pbWF0aW9uU3VwcG9ydCwKLSAgICAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmlu
ZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LCAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQs
Ci0gICAgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vy
c1N1cHBvcnQsICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwKLSAgICAkY292ZXJhZ2VTdXBw
b3J0KTsKKyAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNh
dGlvblN1cHBvcnQsICRzaGFyZWRXb3JrZXJzU3VwcG9ydCwgJHN2Z1N1cHBvcnQsCisgICAgJHN2
Z0FuaW1hdGlvblN1cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5n
c1N1cHBvcnQsICRzdmdGb250c1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0
LCAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3b3JrZXJzU3Vw
cG9ydCwKKyAgICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQp
OwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIjNkLXJlbmRlcmluZyIsIGRl
c2MgPT4gIlRvZ2dsZSAzRCByZW5kZXJpbmcgc3VwcG9ydCIsCkBAIC04NSw2ICs4NSw5IEBAIG15
IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAib2ZmbGluZS13ZWItYXBwbGljYXRpb25z
IiwgZGVzYyA9PiAiVG9nZ2xlIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9uIFN1cHBvcnQiLAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIiwgZGVmYXVsdCA9
PiAxLCB2YWx1ZSA9PiBcJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQgfSwKIAorICAgIHsg
b3B0aW9uID0+ICJzaGFyZWQtd29ya2VycyIsIGRlc2MgPT4gIlRvZ2dsZSBTaGFyZWRXb3JrZXJz
IHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfU0hBUkVEX1dPUktFUlMiLCBkZWZh
dWx0ID0+IDAsIHZhbHVlID0+IFwkc2hhcmVkV29ya2Vyc1N1cHBvcnQgfSwKKwogICAgIHsgb3B0
aW9uID0+ICJzdmciLCBkZXNjID0+ICJUb2dnbGUgU1ZHIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfU1ZHIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJHN2Z1N1cHBvcnQgfSwK
IApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGI3MjBhNDMu
LjZjZjQ3MDcgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAg
LTM5OCw2ICszOTgsMTQgQEAgQUNfQVJHX0VOQUJMRSh3bWwsCiAgICAgICAgICAgICAgIFtdLFtl
bmFibGVfd21sPSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV93bWxdKQogCisjIGNoZWNr
IHdoZXRoZXIgdG8gZW5hYmxlIFNoYXJlZFdvcmtlcnMgc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5H
KFt3aGV0aGVyIHRvIGVuYWJsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJM
RShzaGFyZWRfd29ya2VycywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxl
LXNoYXJlZC13b3JrZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBz
dXBwb3J0IGZvciBTaGFyZWRXb3JrZXJzIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBb
XSxbZW5hYmxlX3NoYXJlZF93b3JrZXJzPSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9z
aGFyZWRfd29ya2Vyc10pCisKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgV2ViIFdvcmtlcnMg
c3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgV29ya2VycyBz
dXBwb3J0XSkKIEFDX0FSR19FTkFCTEUod29ya2VycywKQEAgLTY4MCw2ICs2ODgsNyBAQCBBTV9D
T05ESVRJT05BTChbRU5BQkxFX0NPVkVSQUdFXSxbdGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAi
eWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0ZBU1RfTUFMTE9DXSxbdGVzdCAiJGVuYWJs
ZV9mYXN0X21hbGxvYyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1dNTF0sW3Rl
c3QgIiRlbmFibGVfd21sIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfV09SS0VS
U10sW3Rlc3QgIiRlbmFibGVfd29ya2VycyIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbRU5B
QkxFX1NIQVJFRF9XT1JLRVJTXSxbdGVzdCAiJGVuYWJsZV9zaGFyZWRfd29ya2VycyIgPSAieWVz
Il0pCiBBTV9DT05ESVRJT05BTChbU1ZHX0ZMQUdTXSxbdGVzdCAiJHN2Z19mbGFncyIgPSAieWVz
Il0pCiBBTV9DT05ESVRJT05BTChbSFRNTF9GTEFHU10sW3Rlc3QgIiRodG1sX2ZsYWdzIiA9ICJ5
ZXMiXSkKIApAQCAtNzE4LDYgKzcyNyw3IEBAIEZlYXR1cmVzOgogIEhUTUw1IGNsaWVudC1zaWRl
IGRhdGFiYXNlIHN0b3JhZ2Ugc3VwcG9ydCAgICAgICAgICAgICAgIDogJGVuYWJsZV9kYXRhYmFz
ZQogIEhUTUw1IHZpZGVvIGVsZW1lbnQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV92aWRlbwogIEljb24gZGF0YWJhc2Ugc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9pY29uX2RhdGFiYXNlCisgU2hhcmVkV29y
a2VycyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X3NoYXJlZF93b3JrZXJzCiAgU1ZHIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3N2ZwogIFNWRyBhbmltYXRpb24gc3VwcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmdfYW5pbWF0aW9u
CiAgU1ZHIGZvbnRzIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkZW5hYmxlX3N2Z19mb250cwo=
</data>
<flag name="review"
          id="16690"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32218</attachid>
            <date>2009-07-02 22:41:50 -0700</date>
            <delta_ts>2009-07-07 17:16:54 -0700</delta_ts>
            <desc>Patch addressing Levin&apos;s comments</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>86975</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4wZDUxY2Zm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgICogY29uZmlndXJlLmFj
OgorCiAyMDA5LTA2LTIwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDM3Yjg0Yy4u
OTk1ZTY1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdp
bHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQg
ZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDYtMzAgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTJmYmNkZC4uNjI3NDI2NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM4LDYgKzM4
LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJM
RV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBF
TkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NW
R19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsK
QEAgLTUxLDQgKzUyLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGJiOWExZmYuLmJlNDFiN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wNy0wMiAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBV
bml0IHRlc3RzIGZvciBuZXcgU2hhcmVkV29ya2VyIEFQSXMgKGRpc2FibGVkIGJ5IGRlZmF1bHQp
LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
b25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJs
ZWQ6IEFkZGVkLgorCiAyMDA5LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQwMWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRX
b3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9m
IFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhj
ZXB0aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5LgorUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3Jr
ZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29y
a2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlv
biAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hh
cmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtl
ciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1OTg0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0
cnVjdG9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8cD5UZXN0IFNo
YXJlZFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVz
dWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7dG9TdHJpbmc6
ZnVuY3Rpb24oKXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9nKCJGQUlMOiB0
b1N0cmluZyBleGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChleCkgeworICAg
IGlmIChleCA9PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0cmluZyBleGNl
cHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZB
SUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBpbnN0ZWFkIG9m
IG9uZSBwcm9wYWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7CisgICAgdmFyIGZv
byA9IHt0b1N0cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAgbmV3IFNoYXJl
ZFdvcmtlcihmb28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9uIHdoZW4gdHJ5
aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hh
cmVkV29ya2VyKCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0b3Igd2l0aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhjZXB0aW9uIik7
Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNv
bnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiAr
IGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtl
cigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6IENvbnN0cnVj
dG9yIHN1Y2NlZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNoIChleCkgewor
ICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQg
bmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK3RyeSB7
CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29t
bW9uLmpzIiwgIm5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0
b3Igc3VjY2VlZGVkIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiRkFJTDogaW52b2tpbmcg
U2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKK30KKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3MDRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBT
aG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05F
LgorCitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkLgorU1VDQ0VTUzogTGlzdGVuZXIgd2Fz
IG5vdCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4KK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQg
YWZ0ZXIgR0MuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMzNmZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5l
ci5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsNzMgQEAKKzxib2R5PgorPHA+VGVzdCBTaGFyZWRX
b3JrZXIgZXZlbnQgbGlzdGVuZXIuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9u
LmpzIiwgImZvb2JhciIpOwordmFyIG51bUxpc3RlbmVyQ2FsbHMgPSAwOworZnVuY3Rpb24gY291
bnRMaXN0ZW5lckNhbGxiYWNrcyhldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSAhPSAiZm9v
IikKKyAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV2ZW50OiAiICsgZXZl
bnQudHlwZSk7CisgICAgbnVtTGlzdGVuZXJDYWxscysrOworfQord29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoImZvbyIsIGNvdW50TGlzdGVuZXJDYWxsYmFja3MsIGZhbHNlKTsKK3ZhciBldmVudCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTsKK2V2ZW50LmluaXRFdmVudCgiZm9vIiwg
ZmFsc2UsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0
ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQu
Iik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQuIik7
Cit9CisKK3dvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVyQ2Fs
bGJhY2tzLCBmYWxzZSk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlz
dGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgbm90IGNh
bGxlZCBhZnRlciByZW1vdmFsLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVy
IHdhcyBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30KKworLy8gVGVzdCB0byBtYWtlIHN1cmUg
dGhhdCBldmVudCBsaXN0ZW5lcnMgc3Vydml2ZSBHQy4KK3dvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJmb28iLCBjcmVhdGVOZXdMaXN0ZW5lcihjb3VudExpc3RlbmVyQ2FsbGJhY2tzKSwgZmFsc2Up
OworZ2MoKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0ZW5lckNh
bGxzID09IDIpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQgYWZ0ZXIg
R0MuIik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQg
YWZ0ZXIgR0MuIik7Cit9CisKKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworZnVu
Y3Rpb24gY3JlYXRlTmV3TGlzdGVuZXIoZnVuYykKK3sKKyAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50
KSB7IGZ1bmMoZXZlbnQpOyB9OworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2Ug
Y29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29s
bGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NTUyOWRlLi44ODA1Y2RiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA5
LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEluaXRpYWwg
SURMIGRlZmluaXRpb24gYW5kIGJpbmRpbmdzIGZvciBTaGFyZWRXb3JrZXJzLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3Vw
cG9ydC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVz
IGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIG5ldyBmaWxl
cyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFj
dFdvcmtlcjo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGhhbmRsZXIgdGhhdCBtYXJrcyB0
aGUgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKToK
KyAgICAgICAgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIChvbmx5IGVuYWJsZWQgd2hlbiBTSEFS
RURfV09SS0VSUyBpcworICAgICAgICBlbmFibGVkKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbnZlcnRp
bmcgdG8vZnJvbSBBYnN0cmFjdFdvcmtlcnMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgIChXZWJDb3JlOjpKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmspOgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlv
biB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBNZXNzYWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6
CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBWOCBoYW5k
bGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50TGlzdGVuZXIoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxM
QkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBDdXN0b20gY29uc3RydWN0b3IgZm9yIFNoYXJlZFdv
cmtlci4KKyAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6dG9BYnN0cmFjdFdvcmtlcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2Vy
OjpBYnN0cmFjdFdvcmtlcik6CisgICAgICAgIENvbW1vbiBiYXNlY2xhc3MgZm9yIFNoYXJlZFdv
cmtlciBhbmQgKHNvb24pIFdvcmtlci4gVGhlIGZ1bmN0aW9ucyBiZWxvdyB3ZXJlIGNvcGllZCBm
cm9tIFdvcmtlci5jcHAuCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVmYWN0
b3JpbmcgV29ya2VyIHRvIGRlcml2ZSBmcm9tIEFic3RyYWN0V29ya2VyIHRvIGVuYWJsZSBjb2Rl
IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0V29y
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJvckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaFNjcmlwdEVycm9yRXZl
bnQpOgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDogQWRkZWQuCisgICAgICAg
IERlZmluaXRpb25zIG9mIGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJ5IFdvcmtlci5oIGFuZCBTaGFy
ZWRXb3JrZXIuaC4gSW4gYSBmdXR1cmUgcGF0Y2gsIFdvcmtlciB3aWxsIGRlcml2ZSBmcm9tIEFi
c3RyYWN0V29ya2VyLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnRvQWJz
dHJhY3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNldE9uZXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6Om9uZXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdFdvcmtlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OlNoYXJlZFdvcmtl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpw
b3J0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGw6IEFkZGVkLgorCiAyMDA5
LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxMzIyYjcuLmRkZTczMDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBA
QCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lD
T05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJM
RV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FO
SU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAt
NTIsNCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01f
U1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
REFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA2ZjFmNjU0Li45ZjNjZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00NSw2ICs0NSw3
IEBAIFZQQVRIID0gXAogCiBET01fQ0xBU1NFUyA9IFwKICAgICBBYnN0cmFjdFZpZXcgXAorICAg
IEFic3RyYWN0V29ya2VyIFwKICAgICBBdHRyIFwKICAgICBCYXJJbmZvIFwKICAgICBDREFUQVNl
Y3Rpb24gXApAQCAtMjAwLDYgKzIwMSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFJhbmdlIFwK
ICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBcCisgICAgU2hhcmVkV29ya2VyIFwKICAg
ICBTUUxFcnJvciBcCiAgICAgU1FMUmVzdWx0U2V0IFwKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGU2YzI1ODIuLjA2Yzk3N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ5LDYgKzI0OSw4IEBA
IElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwK
IAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFy
cmF5LmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCisJV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRs
IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5pZGwgXApAQCAtMjMyMiw2ICsyMzI0LDI3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCiBlbmRpZgogCisjIC0t
LQorIyBTaGFyZWRXb3JrZXIgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9TSEFSRURfV09SS0VS
UworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEK
Kword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCit3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvci5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNw
cCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCBcCisJV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
IFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKKworZW5kaWYKKwogIyAtLS0tCiAj
IFdNTCBTdXBwb3J0CiAjIC0tLS0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDg0MjE2MzAuLjViYWQxNmMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTIyLDYgKzEy
Miw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQ9MSkgewogIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YU0xUPTAK
ICMhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hCTD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEJM
PTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPS4pOiBERUZJTkVTICs9IEVOQUJMRV9X
TUw9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSEFSRURfV09SS0VSUz0uKTogREVGSU5F
UyArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9X
T1JLRVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XT1JLRVJTPTEKICFjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfWEhUTUxNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEhUTUxNUD0wCiAKQEAgLTE0
MzEsNiArMTQzMiwyMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0xKSB7CiAg
ICAgICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogfQogCitjb250YWlucyhERUZJ
TkVTLCBTSEFSRURfV09SS0VSUz0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQg
Kz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEKKworICAgIElETF9CSU5ESU5HUyArPSBcCisgICAg
ICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRX
b3JrZXIuaWRsCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckNvbnN0cnVjdG9yLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCBcCisgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKyAgICAgICAg
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9W
SURFTz0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1ZJREVP
PTEKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ODEz
OGNiLi40ODQ3MTE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjQxLDExICs2NDEsMTcgQEAKIAkJNDExMDQ2NDIwRkEyMjJBNjAwQkE0MzZBIC8qIFNj
cmlwdEV2ZW50TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExMDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVu
ZXIuY3BwICovOyB9OwogCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1
MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLzsgfTsKIAkJNDEyQTY4NDcw
RjZCMDNERDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyQTY4NDYwRjZCMDNERDAwMEVB
NjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovOyB9OworCQk0MTVCN0M1NzBGRjU5
OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M1NDBGRjU5OEU2MDA2NzcwRjcg
LyogSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgKi87IH07CisJCTQxNUI3QzU4MEZGNTk4RTYw
MDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTkwRkY1OThF
NjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAvKiBK
U1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi87IH07CisJCTQxNUI3QzYzMEZGNUE3NjcwMDY3NzBG
NyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAzNjBFMUQg
LyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmgg
Ki87IH07CiAJCTQxNkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkQw
RURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQxNkU3NUNC
MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJNDE2RTc1Q0MwRURGOTBDNzAwMzYwRTFEIC8qIFNj
cmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LzsgfTsKIAkJNDE2RjQ1RjAwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RjQ1RUYwRUQ3QjMx
MTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3Ry
YWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLzsg
fTsKKwkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAzMEZGOTU3
QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87IH07CiAJCTQxOTUzNjUxMEY2ODIy
MjQwMEQwQzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk1MzY1MDBGNjgyMjI0MDBEMEM2NzkgLyog
U2NyaXB0T2JqZWN0UXVhcmFudGluZS5oICovOyB9OwogCQk0MUJGNzAwQjBGRTg2RjQ5MDA1RThE
RUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDA5MEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9y
dENoYW5uZWwuY3BwICovOyB9OwogCQk0MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2Fn
ZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87
IH07CkBAIC02NTQsNiArNjYwLDE0IEBACiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAw
NEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAq
LzsgfTsKIAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi87IH07CisJCTQxRDA3QTdFMEZGOTM1Q0Ew
MDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRX
b3JrZXIuY3BwICovOyB9OworCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRX
b3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oICovOyB9OworCQk0MUUx
QjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKKwkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAq
LzsgfTsKKwkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0Mw
RkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLzsgfTsKKwkJNDFFMUIxRDMw
RkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hh
cmVkV29ya2VyLmNwcCAqLzsgfTsKKwkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJl
ZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovOyB9OworCQk0MUUx
QjFENTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNC
IC8qIFNoYXJlZFdvcmtlci5pZGwgKi87IH07CiAJCTQxRjA2MENEMEY1RUVCMkIwMEEwN0VBQyAv
KiBKU0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0lu
c3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MENDMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJNDFGMDYxNkEwRjVFRkJERDAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29u
dHJvbGxlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUYwNjE2OTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVy
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU1NjcsMTEgKzU1ODEsMTcgQEAKIAkJNDExMDQ2NDAwRkEy
MjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMkE2ODQ2MEY2QjAzREQwMDBFQTY2
RSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTVCN0M1NDBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdD
NTUwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU2MEZGNTk4RTYwMDY3
NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29y
a2VyQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1QkMw
RURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyog
U2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVDQTBFREY5
MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RyaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0
V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MThGODgwMzBGRjk1
N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOTUzNjUwMEY2ODIyMjQwMEQwQzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdFF1YXJhbnRpbmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVD
IC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU4MCw2ICs1NjAwLDE0IEBACiAJCTQxQzc2MEIw
MEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVk
V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVk
V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMDdBN0QwRkY5MzVD
QTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5jcHA7IHBhdGggPSB3b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFF
MUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmg7IHBhdGggPSB3b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUNDMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
QWJzdHJhY3RXb3JrZXIuaWRsOyBwYXRoID0gd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBT
aGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2hh
cmVkV29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaGFyZWRXb3JrZXIuaDsg
cGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IFNoYXJlZFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdv
cmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MEFBMEY1RUU4QkIw
MEEwN0VBQyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBJbnNwZWN0b3JDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjBDQzBGNUVFQjJCMDBBMDdF
QUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTgzNSw2ICs5ODYzLDEyIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5o
ICovLAorCQkJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAg
Ki8sCisJCQkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8s
CisJCQkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLywK
KwkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywKKwkJ
CQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8sCisJCQkJNDFF
MUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCiAJCQkJMkU0MzQ2
MzIwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJMkU0MzQ2
MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8sCiAJCQkJMkU0MzQ2MzQwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlci5oICovLApAQCAtMTMzNzAsNiArMTM0MDQsMTAgQEAKIAkJQkMx
QTM3OTMwOTdDNkZCMTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvci5oICovLAorCQkJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBK
U0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTVCN0M1NTBGRjU5OEU2MDA2Nzcw
RjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNDE1QjdDNTYwRkY1
OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVG
NzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4
Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4
IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCkBAIC0xMzkyNiw2ICsxMzk2NCwx
MCBAQAogCQlFMUM4QkU0QjBFOEJEMEQxMDA2NENCN0QgLyogVGhyZWFkcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE4Rjg4MDIwRkY5NTdBRTAwODBG
MDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovLAorCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgw
RjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8sCisJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVF
RENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLywKKwkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVE
Q0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLywKIAkJCQlFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0Qg
LyogSlNXb3JrZXIuY3BwICovLAogCQkJCUUxQ0FBNUM1MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dv
cmtlci5oICovLAogCQkJCUUxODI1NjhEMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRl
eHQuY3BwICovLApAQCAtMTY5MTMsNiArMTY5NTUsMTEgQEAKIAkJCQlCQ0JDQUUzRDBGRjE5Mzk5
MDAwNzYyQUUgLyogSlNEYXRhR3JpZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1
MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzdEQUFFRjBGRjk2MTVEMDBDRTAxMzggLyogRE9NRGF0YUdyaWREYXRhU291cmNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTFCMUQ0MEZGNTk4NjkwMDU3NkIzQiAv
KiBTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNUI3QzYzMEZGNUE3NjcwMDY3
NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTE3MDIxLDYgKzE3MDY4LDggQEAKIAkJCQlCQzc3Q0RBMzBGRUZFQjUz
MDA3MDg4N0IgLyogSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuaWRsIGluIFJlc291cmNlcyAqLywK
IAkJCQlCQzc3Q0Y5OTBGRjE3MjQyMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW5MaXN0LmlkbCBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJQkM3N0NGOUYwRkYxNzJCMzAwNzA4ODdCIC8qIERhdGFHcmlk
Q29sdW1uLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDFFMUIxRDUwRkY1
OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg5
MjcsNiArMTg5NzYsMTMgQEAKIAkJCQlCQzc3RDIzOTBGRjI5ODA4MDA3MDg4N0IgLyogRGF0YUdy
aWRDb2x1bW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0
IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3REFBRUUwRkY5
NjE1RDAwQ0UwMTM4IC8qIERPTURhdGFHcmlkRGF0YVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFFMUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTVCN0M1NzBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTVCN0M1ODBGRjU5OEU2
MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTVCN0M1OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDFEMDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVk
V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAv
KiBKU0Fic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDcwODdhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTQWJz
dHJhY3RXb3JrZXIuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAi
SlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTQWJzdHJh
Y3RXb3JrZXI6Om1hcmsoKQoreworICAgIERPTU9iamVjdDo6bWFyaygpOworCisgICAgbWFya0lm
Tm90TnVsbChtX2ltcGwtPm9uZXJyb3IoKSk7CisKKyAgICB0eXBlZGVmIEFic3RyYWN0V29ya2Vy
OjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKKyAgICB0eXBlZGVmIEFic3Ry
YWN0V29ya2VyOjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5lclZlY3RvcjsKKyAgICBFdmVudExpc3Rl
bmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2ltcGwtPmV2ZW50TGlzdGVuZXJzKCk7CisgICAg
Zm9yIChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgbWFwSXRlciA9IGV2ZW50TGlzdGVuZXJz
LmJlZ2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0ZW5lcnMuZW5kKCk7ICsrbWFwSXRlcikgewor
ICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciB2ZWNJdGVyID0gbWFwSXRlci0+
c2Vjb25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFwSXRlci0+c2Vjb25kLmVuZCgpOyArK3ZlY0l0
ZXIpCisgICAgICAgICAgICAoKnZlY0l0ZXIpLT5tYXJrSlNGdW5jdGlvbigpOworICAgIH0KK30K
KworSlNWYWx1ZSBKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2xvYmFsT2Jq
ZWN0LT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoYXJncy5hdCgxKSk7CisgICAgaWYgKCFs
aXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaW1wbCgpLT5hZGRF
dmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2Uo
KSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCitKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdsb2JhbE9i
amVjdC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAoIWxpc3RlbmVy
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50
TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIsIGFyZ3MuYXQoMiku
dG9Cb29sZWFuKGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMjAxM2ViLi5jMDk1
YmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU09wdGlvbkNvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnN0cnVjdG9yLmgiCkBAIC00NzYsNiArNDc3
LDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OndvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKK0pTVmFsdWUgSlNET01X
aW5kb3c6OnNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMp
OworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5jdGlvbnMKIAogLy8gSGVscGVyIGZvciB3aW5k
b3cub3BlbigpIGFuZCB3aW5kb3cuc2hvd01vZGFsRGlhbG9nKCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDIwNTgwOTguLjI1ZDA5MzUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRl
ICJKU0Fic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDEs
NiArMTA2LDExIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2V0KiB0
YXJnZXQpCiAgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgaWYgKEFic3RyYWN0
V29ya2VyKiBhYnN0cmFjdFdvcmtlciA9IHRhcmdldC0+dG9BYnN0cmFjdFdvcmtlcigpKQorICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBhYnN0cmFjdFdvcmtlcik7CisjZW5kaWYKKwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTEzMiw2ICsx
NDIsMTAgQEAgRXZlbnRUYXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdvcmtlckNvbnRleHQpCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChBYnN0
cmFjdFdvcmtlcikKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNGZjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNp
bmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OworCitKU1NoYXJlZFdvcmtl
ckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTU9iamVjdChKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTU2hhcmVkV29ya2VyUHJvdG90eXBlOjpzZWxmKGV4ZWMs
IGdsb2JhbE9iamVjdCksIE5vbmUpOworICAgIC8vIEhvc3QgZnVuY3Rpb25zIGhhdmUgYSBsZW5n
dGggcHJvcGVydHkgZGVzY3JpYmluZyB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGFyZ3VtZW50cy4K
KyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhl
YywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOworfQorCitzdGF0aWMgSlNPYmpl
Y3QqIGNvbnN0cnVjdFNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRz
Iik7CisKKyAgICBVU3RyaW5nIHNjcmlwdFVSTCA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7
CisgICAgVVN0cmluZyBuYW1lID0gYXJncy5hdCgxKS50b1N0cmluZyhleGVjKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtl
ciA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHNjcmlwdFVSTCwgbmFtZSwgY29udGV4dCwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gYXNPYmplY3QodG9K
UyhleGVjLCB3b3JrZXIucmVsZWFzZSgpKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
U2hhcmVkV29ya2VyOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3Iu
aCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOGIyYjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisK
KyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01PYmplY3QgeworICAg
IHB1YmxpYzoKKyAgICAgICAgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgSlNDOjpDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CisKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJnNfaW5mbzsgfQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2VuZGlmIC8vIEpTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2VlYjcwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKKworI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXI6Om1h
cmsoKQoreworICAgIEJhc2U6Om1hcmsoKTsKKworICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9
IHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlcio+KGltcGwoKSktPnBvcnQoKSkgeworICAgICAgICBE
T01PYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKCpIZWFwOjpoZWFw
KHRoaXMpLT5nbG9iYWxEYXRhKCksIHBvcnQpOworICAgICAgICBpZiAod3JhcHBlciAmJiAhd3Jh
cHBlci0+bWFya2VkKCkpCisgICAgICAgICAgICB3cmFwcGVyLT5tYXJrKCk7CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAppbmRleCA3NzcyMDE2Li5mMmY0ZTdmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHAKQEAgLTM3Niw2ICszNzYsMTEgQEAKICNpbmNsdWRlICJWOFdvcmtl
ck5hdmlnYXRvci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisjaW5j
bHVkZSAiVjhBYnN0cmFjdFdvcmtlci5oIgorI2luY2x1ZGUgIlY4U2hhcmVkV29ya2VyLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSBW
OENsYXNzSW5kZXg6OkdldEZhY3RvcnkoVjhXcmFwcGVyVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaAppbmRleCBiMjM4ZDcwLi41M2VlZWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaApAQCAtNjUs
NiArNjUsMTcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
KCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICNkZWZpbmUgV09SS0VSX05PTk5PREVfV1JB
UFBFUl9UWVBFUyhWKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisjZGVm
aW5lIFNIQVJFRF9XT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAg
ICAgICAgICAgICBcCisgICAgVihTSEFSRURXT1JLRVIsIFNoYXJlZFdvcmtlcikKKworI2RlZmlu
ZSBTSEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoQUJTVFJBQ1RXT1JLRVIsIEFic3RyYWN0V29ya2VyKQorI2Vsc2UK
KyNkZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKKyNlbmRpZgorCiAj
ZGVmaW5lIERPTV9OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihBVFRSLCBBdHRyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihDSEFSQUNURVJEQVRBLCBD
aGFyYWN0ZXJEYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0y
NjcsNyArMjc4LDggQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICNkZWZpbmUgQUNUSVZFX0RPTV9PQkpF
Q1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBW
KE1FU1NBR0VQT1JULCBNZXNzYWdlUG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBWKFhNTEhUVFBSRVFVRVNULCBYTUxIdHRwUmVxdWVzdCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXT1JLRVJfQUNUSVZFX09CSkVDVF9X
UkFQUEVSX1RZUEVTKFYpCisgICAgV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhW
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU0hBUkVEX1dPUktFUl9BQ1RJ
VkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKIAogLy8gTk9URTogRE9NX09CSkVDVF9UWVBFUyBp
cyBzcGxpdCBpbnRvIHR3byBoYWx2ZXMgYmVjYXVzZQogLy8gICAgICAgVmlzdWFsIFN0dWRpbydz
IEludGVsbGlub25zZW5zZSBjcmFzaGVzIHdoZW4gbWFjcm9zIGdldApAQCAtMzY1LDYgKzM3Nyw3
IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rp
b25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAgICAgVihYU0xUUFJPQ0VTU09SLCBYU0xUUHJvY2Vzc29y
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQUNUSVZFX0RPTV9P
QkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgVklERU9fTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQ
RVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX05PTk5PREVf
V1JBUFBFUl9UWVBFUyhWKQogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yODYwZGI5Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKQEAg
LTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJW
OE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2
ZW50TGlzdGVuZXIoQWJzdHJhY3RXb3JrZXIqIHdvcmtlciwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGJvb2wgZmluZE9ubHkpCit7CisgICAgaWYgKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtlckNvbnRleHQoKSkgeworICAgICAgICBXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkqIHdvcmtlckNvbnRleHRQcm94eSA9IFdvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eTo6cmV0cmlldmUoKTsKKyAgICAgICAgQVNTRVJUKHdvcmtlckNvbnRleHRQcm94eSk7Cisg
ICAgICAgIHJldHVybiB3b3JrZXJDb250ZXh0UHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50
TGlzdGVuZXIodmFsdWUsIGZhbHNlLCBmaW5kT25seSk7CisgICAgfQorCisgICAgVjhQcm94eSog
cHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZSh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgaWYgKHByb3h5KQorICAgICAgICByZXR1cm4gZmluZE9ubHkgPyBwcm94eS0+Zmlu
ZE9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKSA6IHByb3h5LT5maW5kT3JDcmVhdGVP
YmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
QUNDRVNTT1JfR0VUVEVSKEFic3RyYWN0V29ya2VyT25lcnJvcikKK3sKKyAgICBJTkNfU1RBVFMo
TCJET00uQWJzdHJhY3RXb3JrZXIub25lcnJvci5fZ2V0Iik7CisgICAgQWJzdHJhY3RXb3JrZXIq
IHdvcmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4o
VjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgaW5mby5Ib2xkZXIoKSk7CisgICAgaWYgKHdv
cmtlci0+b25lcnJvcigpKSB7CisgICAgICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIgPSBzdGF0aWNfY2FzdDxWOE9iamVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9uZXJyb3Io
KSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlzdGVuZXIt
PmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVybiB2OExpc3RlbmVyOworICAgIH0K
KyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitBQ0NFU1NPUl9TRVRURVIoQWJzdHJh
Y3RXb3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5v
bmVycm9yLl9zZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29u
dmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNU
V09SS0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOE9iamVjdEV2ZW50TGlzdGVuZXIqIG9sZExp
c3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RFdmVudExpc3RlbmVyKj4od29ya2VyLT5vbmVy
cm9yKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9sZExpc3Rl
bmVyKSB7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9
IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgcmVtb3ZlSGlk
ZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a0Fi
c3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Q2xlYXIgdGhlIGxpc3RlbmVyLgorICAgICAgICB3b3JrZXItPnNldE9uZXJyb3IoMCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZl
bnRMaXN0ZW5lcih3b3JrZXIsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGlmIChsaXN0ZW5lcikg
eworICAgICAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9s
ZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2Fj
aGVJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdvcmtlci0+c2V0T25lcnJv
cihsaXN0ZW5lcik7CisgICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9s
ZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgp
OworICAgICAgICB9CisgICAgfQorfQorCitDQUxMQkFDS19GVU5DX0RFQ0woQWJzdHJhY3RXb3Jr
ZXJBZGRFdmVudExpc3RlbmVyKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCkiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQ
cm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6
OkFCU1RSQUNUV09SS0VSLCBhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciA9IGdldEV2ZW50TGlzdGVuZXIod29ya2VyLCBhcmdzWzFdLCBmYWxzZSk7
CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVy
LCB1c2VDYXB0dXJlKTsKKworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9s
ZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRl
eCk7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0NBTExCQUNLX0ZV
TkNfREVDTChBYnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpCit7CisgICAgSU5DX1NU
QVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOworICAgIEFi
c3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJz
dHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9sZGVyKCkp
OworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRMaXN0ZW5l
cih3b3JrZXIsIGFyZ3NbMV0sIHRydWUpOworICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICBT
dHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICAgICAgYm9vbCB1c2VD
YXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CisgICAgICAgIHdvcmtlci0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lci5nZXQoKSwgdXNlQ2FwdHVyZSk7CisKKyAgICAg
ICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3Rv
bTo6a0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAgIH0KKworICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21CaW5kaW5nLmgKaW5kZXggNjA4M2FjNS4uNzYwOTUyNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKQEAgLTEyNiw2ICsxMjYsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJDb250
ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBr
QWJzdHJhY3RXb3JrZXJJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAxOworI2VuZGlmCisKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9N
V2luZG93Q29uc29sZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93SGlzdG9yeUluZGV4ID0ga0Rl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKICAgICAgICAgc3RhdGljIGNvbnN0
IGludCBrRE9NV2luZG93TG9jYXRpb25iYXJJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDI7CkBAIC00ODcsNiArNDkyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0UmVtb3ZlRXZlbnRMaXN0ZW5l
cik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUihBYnN0cmFjdFdvcmtlck9uZXJyb3IpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyQWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3JrZXJSZW1vdmVFdmVudExpc3RlbmVyKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcik7CisjZW5kaWYKKwog
I3VuZGVmIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0sKICN1bmRlZiBERUNMQVJFX05BTUVE
X0FDQ0VTU19DSEVDSwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNo
YXJlZFdvcmtlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
M2FiMmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
LmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJWOE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5j
bHVkZSAiVjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ0FMTEJBQ0tfRlVOQ19ERUNMKFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yKQoreworICAgIElO
Q19TVEFUUyhMIkRPTS5TaGFyZWRXb3JrZXIuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVu
b3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICB2ODo6VHJ5Q2F0
Y2ggdHJ5Q2F0Y2g7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzY3JpcHRVcmwgPSBhcmdz
WzBdLT5Ub1N0cmluZygpOworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gbmFtZSA9IGFyZ3Nb
MV0tPlRvU3RyaW5nKCk7CisgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSk7CisKKyAgICBpZiAoc2NyaXB0
VXJsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIC8v
IEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQgPSAwOworICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJv
eHkgPSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJldHJpZXZlKCk7CisgICAgaWYgKHBy
b3h5KQorICAgICAgICBjb250ZXh0ID0gcHJveHktPndvcmtlckNvbnRleHQoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZSgpOworICAg
ICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICAgICAgY29udGV4dCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIH0KKworICAgIC8vIENyZWF0
ZSB0aGUgd29ya2VyIG9iamVjdC4KKyAgICAvLyBOb3RlOiBpdCdzIE9LIHRvIGxldCB0aGlzIFJl
ZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBhbHNvIGNhbGwgU2V0RE9NV3JhcHBlcigp
LCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVyZW5jZSB0byBvYmouCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gb2JqID0gU2hhcmVkV29y
a2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVybCksIHRvV2ViQ29yZVN0cmluZyhu
YW1lKSwgY29udGV4dCwgZWMpOworCisgICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIg
b2JqZWN0IGludGVybmFsIGZpZWxkcy4KKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXJPYmplY3QgPSBhcmdzLkhvbGRlcigpOworICAgIFY4UHJveHk6OnNldERPTVdyYXBwZXIod3Jh
cHBlck9iamVjdCwgVjhDbGFzc0luZGV4OjpTSEFSRURXT1JLRVIsIG9iai5nZXQoKSk7CisKKyAg
ICBvYmotPnJlZigpOworICAgIFY4UHJveHk6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVj
dChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlck9iamVj
dCkpOworCisgICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApp
bmRleCAwNmNlYTA3Li5mNjkyYjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC05NSw2ICs5NSwxMyBA
QCBXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9Xb3JrZXJDb250ZXh0KCkKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorQWJzdHJhY3RXb3JrZXIqIEV2ZW50VGFy
Z2V0Ojp0b0Fic3RyYWN0V29ya2VyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiAj
aWZuZGVmIE5ERUJVRwogdm9pZCBmb3JiaWRFdmVudERpc3BhdGNoKCkKIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IDY2MjkwMmUuLmVjNmVkNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMzYsNiArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlcjsKICAgICBjbGFz
cyBBdG9taWNTdHJpbmc7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFz
cyBET01XaW5kb3c7CkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBOb2RlOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKICAgICBjbGFzcyBX
b3JrZXI7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVz
dDsKQEAgLTcwLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorICAgICAgICB2aXJ0dWFsIEFic3RyYWN0V29ya2VyKiB0b0Fic3Ry
YWN0V29ya2VyKCk7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAppbmRleCBhMjNkNzA4Li5iZmRlYmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDYxLDYgKzQ2
MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0
ZXJdIFdvcmtlckNvbnN0cnVjdG9yIFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVy
YXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJiYgRU5B
QkxFX1NIQVJFRF9XT1JLRVJTCisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBT
aGFyZWRXb3JrZXJDb25zdHJ1Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBu
ZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3Rv
ciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBsdWdp
bkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
IGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NzRiN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3RyYWN0V29y
a2VyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFj
dFdvcmtlcjo6QWJzdHJhY3RXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQoreworfQorCitBYnN0cmFjdFdv
cmtlcjo6fkFic3RyYWN0V29ya2VyKCkKK3sKK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQoreworICAgIEV2ZW50TGlzdGVuZXJz
TWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7Cisg
ICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0ZW5l
clZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5l
cik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+
c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5lckl0
ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsg
KytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50
TGlzdGVuZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVy
cy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KK30KKwordm9pZCBBYnN0cmFjdFdv
cmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9vbCkKK3sKKyAgICBFdmVudExpc3RlbmVy
c01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOwor
ICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9y
IChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJz
LmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVy
KSB7CisgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAg
ICAgICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEFic3Ry
YWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LT50eXBlKCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVf
RVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBs
aXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQoZXZlbnQtPnR5cGUoKSk7CisgICAg
Zm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVu
ZXJzQ29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzQ29weS5lbmQoKTsgKyts
aXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAg
ZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0
KCktPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJu
ICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjpk
aXNwYXRjaExvYWRFcnJvckV2ZW50KCkKK3sKKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAo
bV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAg
ICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkVycm9yTGlzdGVu
ZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAg
QVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJy
b3JFdmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQpCit7CisgICAgLy9GSVhN
RTogR2VuZXJhdGUgYW4gRXJyb3JFdmVudCBpbnN0ZWFkIG9mIGEgc2ltcGxlIGV2ZW50CisgICAg
ZGlzcGF0Y2hMb2FkRXJyb3JFdmVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDU4MDUzCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQWJzdHJhY3RXb3JrZXJfaAorI2RlZmluZSBBYnN0cmFjdFdvcmtlcl9oCisKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgi
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
KworICAgIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RX
b3JrZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJcworICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZpcnR1YWwgQWJzdHJhY3RXb3JrZXIqIHRvQWJzdHJhY3RXb3JrZXIoKSB7
IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgLy8gVXRpbGl0eSByb3V0aW5lcyB0byBnZW5lcmF0
ZSBhcHByb3ByaWF0ZSBlcnJvciBldmVudHMgZm9yIGxvYWRpbmcgYW5kIHNjcmlwdCBleGNlcHRp
b25zLgorICAgICAgICB2b2lkIGRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKKyAgICAgICAgdm9p
ZCBkaXNwYXRjaFNjcmlwdEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQpOworCisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVu
ZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBj
b25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVu
ZXJzTWFwOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CisKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0
cmFjdFdvcmtlcj46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtl
cj46OmRlcmVmOworCisgICAgICAgIEFic3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKyAgICAgICAgdmlydHVhbCB+QWJzdHJhY3RXb3JrZXIoKTsKKworICAgIHByaXZhdGU6
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorCisgICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgRXZl
bnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAv
LyBBYnN0cmFjdFdvcmtlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuaWRsIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGViMGY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRo
cmVhZHMgeworCisgICAgaW50ZXJmYWNlIFtDdXN0b21NYXJrRnVuY3Rpb24sIENvbmRpdGlvbmFs
PVNIQVJFRF9XT1JLRVJTXSBBYnN0cmFjdFdvcmtlciB7CisKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25lcnJvcjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQp
CisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFk
MzBkMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29y
a2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmKQorICAgIDogQWJzdHJhY3RXb3JrZXIoY29udGV4dCkK
K3sKKyAgICAvLyBQbGFjZWhvbGRlciAtIHVsdGltYXRlbHkgd2UnbGwgbG9vayB1cCB0aGUgd29y
a2VyIGluIHRoZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LgorfQorCitTaGFyZWRXb3JrZXI6On5T
aGFyZWRXb3JrZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMWE3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVk
V29ya2VyX2gKKyNkZWZpbmUgU2hhcmVkV29ya2VyX2gKKworI2luY2x1ZGUgIkFic3RyYWN0V29y
a2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXIg
OiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkV29ya2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVk
V29ya2VyKHVybCwgbmFtZSwgY29udGV4dCwgZWMpKTsKKyAgICAgICAgfQorICAgICAgICB+U2hh
cmVkV29ya2VyKCk7CisgICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0KCkgY29uc3QgeyByZXR1cm4g
bV9wb3J0LmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXIoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFyZWRX
b3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgYi9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41NjlmODEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGlu
dGVyZmFjZSBbQ3VzdG9tTWFya0Z1bmN0aW9uLCBDb25kaXRpb25hbD1TSEFSRURfV09SS0VSU10g
U2hhcmVkV29ya2VyIDogQWJzdHJhY3RXb3JrZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTWVzc2FnZVBvcnQgcG9ydDsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZjMzQ2OTQuLmEyNzVhMjEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25A
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29y
a2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI2OTMyCisKKyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIChkaXNh
YmxlZCBieSBkZWZhdWx0KS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorCiAyMDA5LTA3LTAyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggd2FybmluZ3MgZnJvbSB1cGRhdGUtd2Via2l0LWxvY2FsaXphYmxl
LXN0cmluZ3MKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IGUxMzIyYjcuLmRkZTczMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBF
TkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05E
QVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJMRV9T
VkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1B
VElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAtNTIs
NCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRI
ID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RP
UkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lD
T05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04p
ICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVf
U1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFC
TEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFU
QUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVf
RklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
QU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19C
SU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Qp
ICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxF
X1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4ZGI3MjM3
Li45NjkzMjRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDIgIERyZXcgV2lsc29u
ICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZp
bmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgLS1zaGFyZWQt
d29ya2VycyAodHVybmVkIG9mZiBieSBkZWZhdWx0KQorCisgICAgICAgICogU2NyaXB0cy9idWls
ZC13ZWJraXQ6CisKIDIwMDktMDctMDIgIEFudG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0Bv
cGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBjMjQyZmU3Li4zMWY4MDY5IDEwMDc1NQotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdApAQCAtNDYsMTAgKzQ2LDEwIEBAIG15ICRtYWtlQXJnczsKIAogbXkgKCR0
aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQsICRkYXRhYmFz
ZVN1cHBvcnQsICRkb21TdG9yYWdlU3VwcG9ydCwKICAgICAkZmlsdGVyc1N1cHBvcnQsICRnZW9s
b2NhdGlvblN1cHBvcnQsICRnbm9tZUtleXJpbmdTdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9y
dCwKLSAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlv
blN1cHBvcnQsICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwKLSAgICAkc3ZnQXNJ
bWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0
LCAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsCi0gICAgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1
cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsICR4cGF0aFN1cHBvcnQsICR4c2x0
U3VwcG9ydCwKLSAgICAkY292ZXJhZ2VTdXBwb3J0KTsKKyAgICAkamF2YVNjcmlwdERlYnVnZ2Vy
U3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRzaGFyZWRXb3JrZXJzU3Vw
cG9ydCwgJHN2Z1N1cHBvcnQsCisgICAgJHN2Z0FuaW1hdGlvblN1cHBvcnQsICRzdmdBc0ltYWdl
U3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdGb250c1N1cHBvcnQsCisg
ICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9y
dCwgJHdtbFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAkeHBhdGhTdXBwb3J0LCAkeHNs
dFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQpOwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBv
cHRpb24gPT4gIjNkLXJlbmRlcmluZyIsIGRlc2MgPT4gIlRvZ2dsZSAzRCByZW5kZXJpbmcgc3Vw
cG9ydCIsCkBAIC04NSw2ICs4NSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9
PiAib2ZmbGluZS13ZWItYXBwbGljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIE9mZmxpbmUgV2Vi
IEFwcGxpY2F0aW9uIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJG9mZmxpbmVXZWJBcHBs
aWNhdGlvblN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJzaGFyZWQtd29ya2VycyIsIGRl
c2MgPT4gIlRvZ2dsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfU0hBUkVEX1dPUktFUlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkc2hhcmVkV29y
a2Vyc1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJzdmciLCBkZXNjID0+ICJUb2dnbGUg
U1ZHIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfU1ZHIiwgZGVmYXVsdCA9PiAx
LCB2YWx1ZSA9PiBcJHN2Z1N1cHBvcnQgfSwKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv
Y29uZmlndXJlLmFjCmluZGV4IGI3MjBhNDMuLjZjZjQ3MDcgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy
ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTM5OCw2ICszOTgsMTQgQEAgQUNfQVJHX0VOQUJM
RSh3bWwsCiAgICAgICAgICAgICAgIFtdLFtlbmFibGVfd21sPSJubyJdKQogQUNfTVNHX1JFU1VM
VChbJGVuYWJsZV93bWxdKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFNoYXJlZFdvcmtl
cnMgc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBTaGFyZWRXb3Jr
ZXJzIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShzaGFyZWRfd29ya2VycywKKyAgICAgICAgICAg
ICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXNoYXJlZC13b3JrZXJzXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBTaGFyZWRXb3JrZXJzIFtkZWZh
dWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX3NoYXJlZF93b3JrZXJzPSJubyJd
KQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRfd29ya2Vyc10pCisKICMgY2hlY2sgd2hl
dGhlciB0byBlbmFibGUgV2ViIFdvcmtlcnMgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0
aGVyIHRvIGVuYWJsZSBXZWIgV29ya2VycyBzdXBwb3J0XSkKIEFDX0FSR19FTkFCTEUod29ya2Vy
cywKQEAgLTY4MCw2ICs2ODgsNyBAQCBBTV9DT05ESVRJT05BTChbRU5BQkxFX0NPVkVSQUdFXSxb
dGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxF
X0ZBU1RfTUFMTE9DXSxbdGVzdCAiJGVuYWJsZV9mYXN0X21hbGxvYyIgPSAieWVzIl0pCiBBTV9D
T05ESVRJT05BTChbRU5BQkxFX1dNTF0sW3Rlc3QgIiRlbmFibGVfd21sIiA9ICJ5ZXMiXSkKIEFN
X0NPTkRJVElPTkFMKFtFTkFCTEVfV09SS0VSU10sW3Rlc3QgIiRlbmFibGVfd29ya2VycyIgPSAi
eWVzIl0pCitBTV9DT05ESVRJT05BTChbRU5BQkxFX1NIQVJFRF9XT1JLRVJTXSxbdGVzdCAiJGVu
YWJsZV9zaGFyZWRfd29ya2VycyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbU1ZHX0ZMQUdT
XSxbdGVzdCAiJHN2Z19mbGFncyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbSFRNTF9GTEFH
U10sW3Rlc3QgIiRodG1sX2ZsYWdzIiA9ICJ5ZXMiXSkKIApAQCAtNzE4LDYgKzcyNyw3IEBAIEZl
YXR1cmVzOgogIEhUTUw1IGNsaWVudC1zaWRlIGRhdGFiYXNlIHN0b3JhZ2Ugc3VwcG9ydCAgICAg
ICAgICAgICAgIDogJGVuYWJsZV9kYXRhYmFzZQogIEhUTUw1IHZpZGVvIGVsZW1lbnQgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV92aWRlbwogIEljb24gZGF0
YWJhc2Ugc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9pY29uX2RhdGFiYXNlCisgU2hhcmVkV29ya2VycyBzdXBwb3J0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3NoYXJlZF93b3JrZXJzCiAgU1ZHIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3N2
ZwogIFNWRyBhbmltYXRpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9zdmdfYW5pbWF0aW9uCiAgU1ZHIGZvbnRzIHN1cHBvcnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3N2Z19mb250cwo=
</data>
<flag name="review"
          id="16706"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32242</attachid>
            <date>2009-07-03 10:33:50 -0700</date>
            <delta_ts>2009-07-07 17:16:54 -0700</delta_ts>
            <desc>Patch with final style/whitespace tweaks</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>86976</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4wZDUxY2Zm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDIgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgICogY29uZmlndXJlLmFj
OgorCiAyMDA5LTA2LTIwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDM3Yjg0Yy4u
OTk1ZTY1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdp
bHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQg
ZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDYtMzAgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTJmYmNkZC4uNjI3NDI2NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM4LDYgKzM4
LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJM
RV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBF
TkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NW
R19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsK
QEAgLTUxLDQgKzUyLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGJiOWExZmYuLmJlNDFiN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wNy0wMiAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBV
bml0IHRlc3RzIGZvciBuZXcgU2hhcmVkV29ya2VyIEFQSXMgKGRpc2FibGVkIGJ5IGRlZmF1bHQp
LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
b25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJs
ZWQ6IEFkZGVkLgorCiAyMDA5LTA3LTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQwMWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRX
b3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9m
IFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhj
ZXB0aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5LgorUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3Jr
ZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29y
a2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlv
biAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hh
cmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRp
b24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtl
ciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1OTg0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0
cnVjdG9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8cD5UZXN0IFNo
YXJlZFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVz
dWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7dG9TdHJpbmc6
ZnVuY3Rpb24oKXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9nKCJGQUlMOiB0
b1N0cmluZyBleGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChleCkgeworICAg
IGlmIChleCA9PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0cmluZyBleGNl
cHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZB
SUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBpbnN0ZWFkIG9m
IG9uZSBwcm9wYWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7CisgICAgdmFyIGZv
byA9IHt0b1N0cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAgbmV3IFNoYXJl
ZFdvcmtlcihmb28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9uIHdoZW4gdHJ5
aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVk
IGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hh
cmVkV29ya2VyKCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0b3Igd2l0aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhjZXB0aW9uIik7
Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNv
bnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiAr
IGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtl
cigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6IENvbnN0cnVj
dG9yIHN1Y2NlZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNoIChleCkgewor
ICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQg
bmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK3RyeSB7
CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29t
bW9uLmpzIiwgIm5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0
b3Igc3VjY2VlZGVkIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiRkFJTDogaW52b2tpbmcg
U2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKK30KKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3MDRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBT
aG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05F
LgorCitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkLgorU1VDQ0VTUzogTGlzdGVuZXIgd2Fz
IG5vdCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4KK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQg
YWZ0ZXIgR0MuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMzNmZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5l
ci5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsNzMgQEAKKzxib2R5PgorPHA+VGVzdCBTaGFyZWRX
b3JrZXIgZXZlbnQgbGlzdGVuZXIuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9u
LmpzIiwgImZvb2JhciIpOwordmFyIG51bUxpc3RlbmVyQ2FsbHMgPSAwOworZnVuY3Rpb24gY291
bnRMaXN0ZW5lckNhbGxiYWNrcyhldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSAhPSAiZm9v
IikKKyAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV2ZW50OiAiICsgZXZl
bnQudHlwZSk7CisgICAgbnVtTGlzdGVuZXJDYWxscysrOworfQord29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoImZvbyIsIGNvdW50TGlzdGVuZXJDYWxsYmFja3MsIGZhbHNlKTsKK3ZhciBldmVudCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTsKK2V2ZW50LmluaXRFdmVudCgiZm9vIiwg
ZmFsc2UsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0
ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQu
Iik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQuIik7
Cit9CisKK3dvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVyQ2Fs
bGJhY2tzLCBmYWxzZSk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlz
dGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgbm90IGNh
bGxlZCBhZnRlciByZW1vdmFsLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVy
IHdhcyBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30KKworLy8gVGVzdCB0byBtYWtlIHN1cmUg
dGhhdCBldmVudCBsaXN0ZW5lcnMgc3Vydml2ZSBHQy4KK3dvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJmb28iLCBjcmVhdGVOZXdMaXN0ZW5lcihjb3VudExpc3RlbmVyQ2FsbGJhY2tzKSwgZmFsc2Up
OworZ2MoKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1MaXN0ZW5lckNh
bGxzID09IDIpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQgYWZ0ZXIg
R0MuIik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQg
YWZ0ZXIgR0MuIik7Cit9CisKKworbG9nKCJET05FIik7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKworZnVu
Y3Rpb24gY3JlYXRlTmV3TGlzdGVuZXIoZnVuYykKK3sKKyAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50
KSB7IGZ1bmMoZXZlbnQpOyB9OworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2Ug
Y29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29s
bGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NTUyOWRlLi40ZjkyZTkwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA5
LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09S
S0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEluaXRpYWwg
SURMIGRlZmluaXRpb24gYW5kIGJpbmRpbmdzIGZvciBTaGFyZWRXb3JrZXJzLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3Vw
cG9ydC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVz
IGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIG5ldyBmaWxl
cyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFj
dFdvcmtlcjo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGhhbmRsZXIgdGhhdCBtYXJrcyB0
aGUgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKToK
KyAgICAgICAgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIChvbmx5IGVuYWJsZWQgd2hlbiBTSEFS
RURfV09SS0VSUyBpcworICAgICAgICBlbmFibGVkKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbnZlcnRp
bmcgdG8vZnJvbSBBYnN0cmFjdFdvcmtlcnMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNsYXNzSW5mbyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTU2hhcmVkV29ya2VyOjptYXJrKToKKyAgICAgICAgQ3VzdG9tIG1hcmsgZnVuY3Rp
b24gdGhhdCBtYXJrcyB0aGUgaW50ZXJuYWwgTWVzc2FnZVBvcnQuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRleC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFDQ0VTU09SX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgVjggaGFu
ZGxlcnMgZm9yIGFkZC9yZW1vdmVFdmVudExpc3RlbmVyKCkuCisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0FM
TEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgQ3VzdG9tIGNvbnN0cnVjdG9yIGZvciBTaGFyZWRX
b3JrZXIuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50VGFyZ2V0Ojp0b0Fic3RyYWN0V29ya2VyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3Jr
ZXI6OkFic3RyYWN0V29ya2VyKToKKyAgICAgICAgQ29tbW9uIGJhc2VjbGFzcyBmb3IgU2hhcmVk
V29ya2VyIGFuZCAoc29vbikgV29ya2VyLiBUaGUgZnVuY3Rpb25zIGJlbG93IHdlcmUgY29waWVk
IGZyb20gV29ya2VyLmNwcC4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiByZWZh
Y3RvcmluZyBXb3JrZXIgdG8gZGVyaXZlIGZyb20gQWJzdHJhY3RXb3JrZXIgdG8gZW5hYmxlIGNv
ZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjp+QWJzdHJhY3RX
b3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JF
dmVudCk6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOiBBZGRlZC4KKyAgICAg
ICAgRGVmaW5pdGlvbnMgb2YgZnVuY3Rpb25hbGl0eSBzaGFyZWQgYnkgV29ya2VyLmggYW5kIFNo
YXJlZFdvcmtlci5oLiBJbiBhIGZ1dHVyZSBwYXRjaCwgV29ya2VyIHdpbGwgZGVyaXZlIGZyb20g
QWJzdHJhY3RXb3JrZXIuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6dG9B
YnN0cmFjdFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6c2V0T25l
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6b25lcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAo
V2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFic3RyYWN0V29ya2VyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiB3b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3Jr
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29y
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6Cisg
ICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6
OnBvcnQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDogQWRkZWQuCisKIDIw
MDktMDctMDIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTEzMjJiNy4uZGRlNzMwMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zOSw2ICszOSw3
IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVf
SUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUjsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TOworRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwogRU5B
QkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9TVkdf
QU5JTUFUSU9OOwogRU5BQkxFX1NWR19BU19JTUFHRSA9IEVOQUJMRV9TVkdfQVNfSU1BR0U7CkBA
IC01Miw0ICs1Myw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVf
WFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFU
VVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RP
TV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1B
VElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVO
QUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxF
X1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9P
QkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDZmMWY2NTQuLjlmM2NlMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQ1LDYgKzQ1
LDcgQEAgVlBBVEggPSBcCiAKIERPTV9DTEFTU0VTID0gXAogICAgIEFic3RyYWN0VmlldyBcCisg
ICAgQWJzdHJhY3RXb3JrZXIgXAogICAgIEF0dHIgXAogICAgIEJhckluZm8gXAogICAgIENEQVRB
U2VjdGlvbiBcCkBAIC0yMDAsNiArMjAxLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgUmFuZ2Ug
XAogICAgIFJhbmdlRXhjZXB0aW9uIFwKICAgICBSZWN0IFwKKyAgICBTaGFyZWRXb3JrZXIgXAog
ICAgIFNRTEVycm9yIFwKICAgICBTUUxSZXN1bHRTZXQgXAogICAgIFNRTFJlc3VsdFNldFJvd0xp
c3QgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZTZjMjU4Mi4uMDZjOTc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDksNiArMjQ5LDgg
QEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5pZGwg
XAogCVdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRsIFwKIAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
QXJyYXkuaWRsIFwKKwlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKwlXZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5p
ZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmlkbCBcCkBAIC0yMzIyLDYgKzIzMjQsMjcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKIGVuZGlmCiAKKyMg
LS0tCisjIFNoYXJlZFdvcmtlciBzdXBwb3J0CisjIC0tLQoraWYgRU5BQkxFX1NIQVJFRF9XT1JL
RVJTCitGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9
MQorCit3ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktREVOQUJMRV9TSEFSRURfV09SS0VSUz0xCisK
K3dlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckNvbnN0cnVjdG9yLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20u
Y3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKwlXZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5j
cHAgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAorCitlbmRpZgorCiAjIC0tLS0K
ICMgV01MIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODQyMTYzMC4uNWJhZDE2YyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjIsNiAr
MTIyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJTkdMRV9USFJFQURFRD0xKSB7CiAh
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hTTFQ9Lik6IERFRklORVMgKz0gRU5BQkxFX1hTTFQ9
MAogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9Y
Qkw9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5BQkxF
X1dNTD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NIQVJFRF9XT1JLRVJTPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1dPUktFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1dPUktFUlM9MQogIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9YSFRNTE1QPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YSFRNTE1QPTAKIApAQCAt
MTQzMSw2ICsxNDMyLDIxIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPTEpIHsK
ICAgICAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB9CiAKK2NvbnRhaW5zKERF
RklORVMsIFNIQVJFRF9XT1JLRVJTPTEpIHsKKyAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCisgICAgSURMX0JJTkRJTkdTICs9IFwKKyAg
ICAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAorICAgICAgICB3b3JrZXJzL1NoYXJl
ZFdvcmtlci5pZGwKKworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0Fi
c3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29y
a2VyQ29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
dXN0b20uY3BwIFwKKyAgICAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgXAorICAgICAg
ICB3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1ZJREVPPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfVklE
RU89MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4
MTM4Y2IuLjQ4NDcxMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02NDEsMTEgKzY0MSwxNyBAQAogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEgLyog
U2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3
RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwogCQk0MTJBNjg0
NzBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTJBNjg0NjBGNkIwM0REMDAw
RUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi87IH07CisJCTQxNUI3QzU3MEZG
NTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU0MEZGNTk4RTYwMDY3NzBG
NyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTgwRkY1OThF
NjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3
IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk0MTVCN0M1OTBGRjU5
OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8q
IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3
MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2su
aCAqLzsgfTsKIAkJNDE2RTc1QkYwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVC
RDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJNDE2RTc1
Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQk0MTZFNzVDQzBFREY5MEM3MDAzNjBFMUQgLyog
U2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3Bw
ICovOyB9OwogCQk0MTZGNDVGMDBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNDVFRjBFRDdC
MzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICov
OyB9OworCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5
NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDE5NTM2NTEwRjY4
MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTUzNjUwMEY2ODIyMjQwMEQwQzY3OSAv
KiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggKi87IH07CiAJCTQxQkY3MDBCMEZFODZGNDkwMDVF
OERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNz
YWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAq
LzsgfTsKQEAgLTY1NCw2ICs2NjAsMTQgQEAKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQwMTVDQTBGNEI1Qzcx
MDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5o
ICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRC
NUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0UwRkY5MzVD
QTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJl
ZFdvcmtlci5jcHAgKi87IH07CisJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJl
ZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi87IH07CisJCTQx
RTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
ICovOyB9OworCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRs
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFD
QzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovOyB9OworCQk0MUUxQjFE
MzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBT
aGFyZWRXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0IgLyogU2hh
cmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07CisJCTQx
RTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRjBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLzsgfTsKIAkJNDFGMDYwQ0QwRjVFRUIyQjAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0
b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNDFGMDYwQ0UwRjVFRUIyQjAwQTA3RUFDIC8qIEpT
SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJv
bGxlci5oICovOyB9OwogCQk0MUYwNjE2QTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JD
b250cm9sbGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MTY5MEY1RUZCREQwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xs
ZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTU2NywxMSArNTU4MSwxNyBAQAogCQk0MTEwNDY0MDBG
QTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyQTY4NDYwRjZCMDNERDAwMEVB
NjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJz
dHJhY3RXb3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTVC
N0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTYwRkY1OThFNjAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVC
QzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAv
KiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVE
RjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0
cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4ODAzMEZG
OTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGlu
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5MDA1RThE
RUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTgwLDYgKzU2MDAsMTQgQEAKIAkJNDFDNzYw
QjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFy
ZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFy
ZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3RDBGRjkz
NUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0aCA9IHdv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0MwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBBYnN0cmFjdFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
aGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVk
V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5o
OyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVk
V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwQUEwRjVFRThC
QjAwQTA3RUFDIC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MENDMEY1RUVCMkIwMEEw
N0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05ODM1LDYgKzk4NjMsMTIgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMThGODMxQjcwRkQ0OEM3ODAwRDhDNTZCIC8qIFdvcmtlckxvYWRlclByb3h5
LmggKi8sCisJCQkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNw
cCAqLywKKwkJCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAq
LywKKwkJCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICov
LAorCQkJCTQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3BwICovLAor
CQkJCTQxRTFCMUNFMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0
MUUxQjFDRjBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLywKIAkJCQkyRTQz
NDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLywKIAkJCQkyRTQz
NDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLywKIAkJCQkyRTQzNDYzNDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi8sCkBAIC0xMzM3MCw2ICsxMzQwNCwxMCBAQAogCQlC
QzFBMzc5MzA5N0M2RkIxMDAxOUYzRDggLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yLmggKi8sCisJCQkJNDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8q
IEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwICovLAorCQkJCTQxNUI3QzU1MEZGNTk4RTYwMDY3
NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk0MTVCN0M1NjBG
RjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDNEVE
RUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2MzAw
MThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0
NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKQEAgLTEzOTI2LDYgKzEzOTY0
LDEwIEBACiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MThGODgwMjBGRjk1N0FFMDA4
MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8sCisJCQkJNDE4Rjg4MDMwRkY5NTdBRTAw
ODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLywKKwkJCQk0MUQwN0E3QzBGRjkzNUNBMDA5
NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwICovLAorCQkJCTQxRDA3QTdEMEZGOTM1Q0EwMDk1
RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oICovLAogCQkJCUUxQzhCRTVDMEU4QkQxNUEwMDY0Q0I3
RCAvKiBKU1dvcmtlci5jcHAgKi8sCiAJCQkJRTFDQUE1QzUwRThCRDIzNjAwQTczRUNBIC8qIEpT
V29ya2VyLmggKi8sCiAJCQkJRTE4MjU2OEQwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29u
dGV4dC5jcHAgKi8sCkBAIC0xNjkxMyw2ICsxNjk1NSwxMSBAQAogCQkJCUJDQkNBRTNEMEZGMTkz
OTkwMDA3NjJBRSAvKiBKU0RhdGFHcmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDN0RBQUVGMEZGOTYxNUQwMENFMDEzOCAvKiBET01EYXRhR3JpZERhdGFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0
cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNC
IC8qIFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1QjdDNjMwRkY1QTc2NzAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMTcwMjEsNiArMTcwNjgsOCBAQAogCQkJCUJDNzdDREEzMEZFRkVC
NTMwMDcwODg3QiAvKiBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICov
LAogCQkJCUJDNzdDRjk5MEZGMTcyNDIwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbkxpc3QuaWRs
IGluIFJlc291cmNlcyAqLywKIAkJCQlCQzc3Q0Y5RjBGRjE3MkIzMDA3MDg4N0IgLyogRGF0YUdy
aWRDb2x1bW4uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk0MUUxQjFENTBG
RjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0x
ODkyNyw2ICsxODk3NiwxMyBAQAogCQkJCUJDNzdEMjM5MEZGMjk4MDgwMDcwODg3QiAvKiBEYXRh
R3JpZENvbHVtbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2
NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEQUFFRTBG
Rjk2MTVEMDBDRTAxMzggLyogRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2Vy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fi
c3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU4MEZGNTk4
RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFy
ZWRXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1
IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wNzA4N2FmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNB
YnN0cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNBYnN0
cmFjdFdvcmtlcjo6bWFyaygpCit7CisgICAgRE9NT2JqZWN0OjptYXJrKCk7CisKKyAgICBtYXJr
SWZOb3ROdWxsKG1faW1wbC0+b25lcnJvcigpKTsKKworICAgIHR5cGVkZWYgQWJzdHJhY3RXb3Jr
ZXI6OkV2ZW50TGlzdGVuZXJzTWFwIEV2ZW50TGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYgQWJz
dHJhY3RXb3JrZXI6Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOworICAgIEV2ZW50TGlz
dGVuZXJzTWFwJiBldmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKKyAg
ICBmb3IgKEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5l
cnMuYmVnaW4oKTsgbWFwSXRlciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7
CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVy
LT5zZWNvbmQuYmVnaW4oKTsgdmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVj
SXRlcikKKyAgICAgICAgICAgICgqdmVjSXRlciktPm1hcmtKU0Z1bmN0aW9uKCk7CisgICAgfQor
fQorCitKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnbG9iYWxP
YmplY3QtPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAo
IWxpc3RlbmVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPmFk
ZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVsZWFz
ZSgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUgSlNBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoaW1wbCgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU0V2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZ2xvYmFs
T2JqZWN0LT5maW5kSlNFdmVudExpc3RlbmVyKGFyZ3MuYXQoMSkpOworICAgIGlmICghbGlzdGVu
ZXIpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGltcGwoKS0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdCgy
KS50b0Jvb2xlYW4oZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIyMDEzZWIuLmMw
OTViZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKQEAgLTQ3Niw2ICs0
NzcsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcj4oZXhlYywgdGhp
cyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdp
bmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKaW5kZXggMjA1ODA5OC4uMzA3NjkxZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1
ZGUgIkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtlci5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEw
MSw2ICsxMDYsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQq
IHRhcmdldCkKICAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4
dCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoQWJzdHJh
Y3RXb3JrZXIqIGFic3RyYWN0V29ya2VyID0gdGFyZ2V0LT50b0Fic3RyYWN0V29ya2VyKCkpCisg
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGFic3RyYWN0V29ya2VyKTsKKyNlbmRpZgorCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTMyLDYg
KzE0MiwxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUp
CiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV29ya2VyQ29udGV4dCkKICNlbmRpZgogCisj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKEFi
c3RyYWN0V29ya2VyKQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0ZmMxOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKwor
I2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTRE9N
V2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBDbGFzc0luZm8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiU2hhcmVkV29ya2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CisKK0pTU2hhcmVkV29y
a2VyQ29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTU2hh
cmVkV29ya2VyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSkKK3sKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNTaGFyZWRXb3JrZXJQcm90b3R5cGU6OnNlbGYoZXhl
YywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgLy8gSG9zdCBmdW5jdGlvbnMgaGF2ZSBhIGxl
bmd0aCBwcm9wZXJ0eSBkZXNjcmliaW5nIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgYXJndW1lbnRz
LgorICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihl
eGVjLCAyKSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7Cit9CisKK3N0YXRpYyBKU09i
amVjdCogY29uc3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVu
dHMiKTsKKworICAgIFVTdHJpbmcgc2NyaXB0VVJMID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVj
KTsKKyAgICBVU3RyaW5nIG5hbWUgPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29y
a2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBlYyk7
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBhc09iamVjdCh0
b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkpKTsKK30KKworQ29uc3RydWN0VHlwZSBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RTaGFyZWRXb3JrZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU4YjJiNAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3JfaAorI2RlZmluZSBK
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
KworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7Cisg
ICAgcHVibGljOgorICAgICAgICBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBKU0M6OkNv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKKworICAg
ICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiAmc19pbmZvOyB9CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZWViNzAKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU1NoYXJlZFdvcmtlcjo6
bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0
ID0gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyKj4oaW1wbCgpKS0+cG9ydCgpKSB7CisgICAgICAg
IERPTU9iamVjdCogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKkhlYXA6Omhl
YXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7CisgICAgICAgIGlmICh3cmFwcGVyICYmICF3
cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAgICAgIHdyYXBwZXItPm1hcmsoKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09S
S0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCmluZGV4IDc3NzIwMTYuLmYyZjRlN2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEluZGV4LmNwcApAQCAtMzc2LDYgKzM3NiwxMSBAQAogI2luY2x1ZGUgIlY4V29y
a2VyTmF2aWdhdG9yLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNp
bmNsdWRlICJWOEFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5
IFY4Q2xhc3NJbmRleDo6R2V0RmFjdG9yeShWOFdyYXBwZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5oCmluZGV4IGIyMzhkNzAuLjUzZWVlYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCkBAIC02
NSw2ICs2NSwxNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9X
UkFQUEVSX1RZUEVTKFYpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNk
ZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBWKFNIQVJFRFdPUktFUiwgU2hhcmVkV29ya2VyKQorCisjZGVm
aW5lIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgVihBQlNUUkFDVFdPUktFUiwgQWJzdHJhY3RXb3JrZXIpCisjZWxz
ZQorI2RlZmluZSBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQor
I2RlZmluZSBTSEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisK
ICNkZWZpbmUgRE9NX05PREVfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEs
IENoYXJhY3RlckRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTI2Nyw3ICsyNzgsOCBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogI2RlZmluZSBBQ1RJVkVfRE9NX09C
SkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFYoTUVTU0FHRVBPUlQsIE1lc3NhZ2VQb3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFYoWE1MSFRUUFJFUVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNU
X1dSQVBQRVJfVFlQRVMoVikKKyAgICBXT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVT
KFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVT
IGlzIHNwbGl0IGludG8gdHdvIGhhbHZlcyBiZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlv
J3MgSW50ZWxsaW5vbnNlbnNlIGNyYXNoZXMgd2hlbiBtYWNyb3MgZ2V0CkBAIC0zNjUsNiArMzc3
LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5j
dGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICAgICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNz
b3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9N
X09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWSURFT19OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9U
WVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBXT1JLRVJfTk9OTk9E
RV9XUkFQUEVSX1RZUEVTKFYpCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4NjBkYjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApA
QCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUg
IlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRl
ICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0
RXZlbnRMaXN0ZW5lcihBYnN0cmFjdFdvcmtlciogd29ya2VyLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgYm9vbCBmaW5kT25seSkKK3sKKyAgICBpZiAod29ya2VyLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4dCgpKSB7CisgICAgICAgIFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eSogd29ya2VyQ29udGV4dFByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5OjpyZXRyaWV2ZSgpOworICAgICAgICBBU1NFUlQod29ya2VyQ29udGV4dFByb3h5KTsK
KyAgICAgICAgcmV0dXJuIHdvcmtlckNvbnRleHRQcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZl
bnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UsIGZpbmRPbmx5KTsKKyAgICB9CisKKyAgICBWOFByb3h5
KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICBpZiAocHJveHkpCisgICAgICAgIHJldHVybiBmaW5kT25seSA/IHByb3h5LT5m
aW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpIDogcHJveHktPmZpbmRPckNyZWF0
ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQor
CitBQ0NFU1NPUl9HRVRURVIoQWJzdHJhY3RXb3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFU
UyhMIkRPTS5BYnN0cmFjdFdvcmtlci5vbmVycm9yLl9nZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtl
ciogd29ya2VyID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2Vy
PihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09SS0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAo
d29ya2VyLT5vbmVycm9yKCkpIHsKKyAgICAgICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0RXZlbnRMaXN0ZW5lcio+KHdvcmtlci0+b25lcnJv
cigpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5l
ci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAg
fQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihBYnN0
cmFjdFdvcmtlck9uZXJyb3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2Vy
Lm9uZXJyb3IuX3NldCIpOworICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJB
Q1RXT1JLRVIsIGluZm8uSG9sZGVyKCkpOworICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogb2xk
TGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9iamVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9u
ZXJyb3IoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlz
dGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVy
ID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVI
aWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjpr
QWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBDbGVhciB0aGUgbGlzdGVuZXIuCisgICAgICAgIHdvcmtlci0+c2V0T25lcnJvcigwKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRF
dmVudExpc3RlbmVyKHdvcmtlciwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVy
KSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5l
ck9iamVjdCgpOworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5I
b2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RD
YWNoZUluZGV4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd29ya2VyLT5zZXRPbmVy
cm9yKGxpc3RlbmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5I
b2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRl
eCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdv
cmtlckFkZEV2ZW50TGlzdGVuZXIpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoKSIpOworICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBW
OFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRl
eDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRMaXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIGZhbHNl
KTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVT
dHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xl
YW5WYWx1ZSgpOworICAgICAgICB3b3JrZXItPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworCisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5I
b2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUlu
ZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tf
RlVOQ19ERUNMKEFic3RyYWN0V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNf
U1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CisgICAg
QWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxB
YnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIo
KSk7CisKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3Rl
bmVyKHdvcmtlciwgYXJnc1sxXSwgdHJ1ZSk7CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAg
IFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVz
ZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5yZW1v
dmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKworICAg
ICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3Vz
dG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCA2MDgzYWM1Li43NjA5NTI0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAtMTI2LDYgKzEyNiwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNv
bnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAxOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVs
dFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IGtBYnN0cmFjdFdvcmtlckludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCArIDE7CisjZW5kaWYKKwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtE
T01XaW5kb3dDb25zb2xlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dIaXN0b3J5SW5kZXggPSBr
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogICAgICAgICBzdGF0aWMgY29u
c3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJu
YWxGaWVsZENvdW50ICsgMjsKQEAgLTQ4Nyw2ICs0OTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3Rl
bmVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SKEFic3RyYWN0V29ya2VyT25lcnJvcik7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3JrZXJBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgor
CiAjdW5kZWYgREVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVDSwogI3VuZGVmIERFQ0xBUkVfTkFN
RURfQUNDRVNTX0NIRUNLCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
Li4zYWIyZjhlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNp
bmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNs
dWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitDQUxMQkFDS19GVU5DX0RFQ0woU2hhcmVkV29ya2VyQ29uc3RydWN0b3IpCit7CisgICAg
SU5DX1NUQVRTKEwiRE9NLlNoYXJlZFdvcmtlci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFh
cmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9i
amVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIHY4OjpUcnlD
YXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFy
Z3NbMF0tPlRvU3RyaW5nKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gYXJn
c1sxXS0+VG9TdHJpbmcoKTsKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpKTsKKworICAgIGlmIChzY3Jp
cHRVcmwuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAg
Ly8gR2V0IHRoZSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IDA7CisgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBw
cm94eSA9IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAo
cHJveHkpCisgICAgICAgIGNvbnRleHQgPSBwcm94eS0+d29ya2VyQ29udGV4dCgpOworICAgIGVs
c2UgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKCk7Cisg
ICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICBjb250ZXh0ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgfQorCisgICAgLy8gQ3Jl
YXRlIHRoZSB3b3JrZXIgb2JqZWN0LgorICAgIC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMg
UmVmUHRyIGdvIG91dCBvZiBzY29wZSBiZWNhdXNlIHdlIGFsc28gY2FsbCBTZXRET01XcmFwcGVy
KCksIHdoaWNoIGVmZmVjdGl2ZWx5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIG9iai4KKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyPiBvYmogPSBTaGFyZWRX
b3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJsKSwgdG9XZWJDb3JlU3RyaW5n
KG5hbWUpLCBjb250ZXh0LCBlYyk7CisKKyAgICAvLyBTZXR1cCB0aGUgc3RhbmRhcmQgd3JhcHBl
ciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlck9iamVjdCA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhQcm94eTo6c2V0RE9NV3JhcHBlcih3
cmFwcGVyT2JqZWN0LCBWOENsYXNzSW5kZXg6OlNIQVJFRFdPUktFUiwgb2JqLmdldCgpKTsKKwor
ICAgIG9iai0+cmVmKCk7CisgICAgVjhQcm94eTo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2Jq
ZWN0KG9iai5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2Jq
ZWN0KSk7CisKKyAgICByZXR1cm4gd3JhcHBlck9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CmluZGV4IDA2Y2VhMDcuLmY2OTJiNDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTk1LDYgKzk1LDEz
IEBAIFdvcmtlckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1dvcmtlckNvbnRleHQoKQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCitBYnN0cmFjdFdvcmtlciogRXZlbnRU
YXJnZXQ6OnRvQWJzdHJhY3RXb3JrZXIoKQoreworICAgIHJldHVybiAwOworfQorI2VuZGlmCisK
ICNpZm5kZWYgTkRFQlVHCiB2b2lkIGZvcmJpZEV2ZW50RGlzcGF0Y2goKQogewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
aW5kZXggNjYyOTAyZS4uZWM2ZWQ1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFic3RyYWN0V29ya2VyOwogICAgIGNs
YXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAgIGNs
YXNzIERPTVdpbmRvdzsKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNz
IFdvcmtlcjsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1
ZXN0OwpAQCAtNzAsNiArNzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHZpcnR1YWwgQWJzdHJhY3RXb3JrZXIqIHRvQWJz
dHJhY3RXb3JrZXIoKTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSA9IDA7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IGEyM2Q3MDguLmJmZGViZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00NjEsNiAr
NDYxLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdl
dHRlcl0gV29ya2VyQ29uc3RydWN0b3IgV29ya2VyOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9w
ZXJhdG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAmJiBF
TkFCTEVfU0hBUkVEX1dPUktFUlMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJd
IFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhl
IG5ldyBvcGVyYXRvcgorI2VuZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVj
dG9yIFBsdWdpbjsKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1
Z2luQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5j
cHAgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjdhYjRmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiQWJzdHJhY3RX
b3JrZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3Ry
YWN0V29ya2VyOjpBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisKK0Fic3RyYWN0
V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIoKQoreworfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCit7CisgICAgRXZlbnRMaXN0ZW5l
cnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsK
KyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKSB7CisgICAgICAgIExpc3Rl
bmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3Rl
bmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMp
OworICAgIH0gZWxzZSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVy
LT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGxpc3RlbmVy
SXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgp
OyArK2xpc3RlbmVySXRlcikgeworICAgICAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZl
bnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVu
ZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQorfQorCit2b2lkIEFic3RyYWN0
V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQoreworICAgIEV2ZW50TGlzdGVu
ZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICBm
b3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5l
cnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0
ZXIpIHsKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikgeworICAg
ICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0ZW5lcnMuYmVnaW4o
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQWJz
dHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZXZlbnQgfHwgZXZlbnQtPnR5cGUoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURfRVZFTlRfVFlQ
RV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExpc3RlbmVyVmVjdG9y
IGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzLmdldChldmVudC0+dHlwZSgpKTsKKyAg
ICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0
ZW5lcnNDb3B5LmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnNDb3B5LmVuZCgpOyAr
K2xpc3RlbmVySXRlcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAg
ICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbGlzdGVuZXJJdGVyLT5n
ZXQoKS0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1
cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7Cit9CisKK3ZvaWQgQWJzdHJhY3RXb3JrZXI6
OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKQoreworICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpOworICAgIGlm
IChtX29uRXJyb3JMaXN0ZW5lcikgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAg
ICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uRXJyb3JMaXN0
ZW5lci0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAg
ICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0Y2hTY3JpcHRF
cnJvckV2ZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludCkKK3sKKyAgICAvL0ZJ
WE1FOiBHZW5lcmF0ZSBhbiBFcnJvckV2ZW50IGluc3RlYWQgb2YgYSBzaW1wbGUgZXZlbnQKKyAg
ICBkaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1ODA1MwotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFic3RyYWN0V29ya2VyX2gKKyNkZWZpbmUgQWJzdHJhY3RXb3JrZXJfaAorCisj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5o
IgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFic3RyYWN0
V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSXMKKyAgICAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2aXJ0dWFsIEFic3RyYWN0V29ya2VyKiB0b0Fic3RyYWN0V29ya2VyKCkg
eyByZXR1cm4gdGhpczsgfQorCisgICAgICAgIC8vIFV0aWxpdHkgcm91dGluZXMgdG8gZ2VuZXJh
dGUgYXBwcm9wcmlhdGUgZXJyb3IgZXZlbnRzIGZvciBsb2FkaW5nIGFuZCBzY3JpcHQgZXhjZXB0
aW9ucy4KKyAgICAgICAgdm9pZCBkaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7CisgICAgICAgIHZv
aWQgZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50KTsKKworICAgICAgICB2b2lkIHNldE9uZXJyb3Io
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25FcnJvckxpc3Rl
bmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3Rl
bmVyc01hcDsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyBy
ZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQorCisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8QWJz
dHJhY3RXb3JrZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3Jr
ZXI+OjpkZXJlZjsKKworICAgICAgICBBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisgICAgICAgIHZpcnR1YWwgfkFic3RyYWN0V29ya2VyKCk7CisKKyAgICBwcml2YXRl
OgorCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKworICAg
ICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIEV2
ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisgICAgfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYg
Ly8gQWJzdHJhY3RXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmlkbCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlYjBmNwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0
aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbQ3VzdG9tTWFya0Z1bmN0aW9uLCBDb25kaXRpb25h
bD1TSEFSRURfV09SS0VSU10gQWJzdHJhY3RXb3JrZXIgeworCisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZXJyb3I7CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExp
c3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0
KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUx
ZDMwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNw
cApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorCisjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXI6OlNoYXJlZFdv
cmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKKyAgICA6IEFic3RyYWN0V29ya2VyKGNvbnRleHQp
Cit7CisgICAgLy8gUGxhY2Vob2xkZXIgLSB1bHRpbWF0ZWx5IHdlJ2xsIGxvb2sgdXAgdGhlIHdv
cmtlciBpbiB0aGUgU2hhcmVkV29ya2VyUmVwb3NpdG9yeS4KK30KKworU2hhcmVkV29ya2VyOjp+
U2hhcmVkV29ya2VyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
IC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFhNzQwCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJl
ZFdvcmtlcl9oCisjZGVmaW5lIFNoYXJlZFdvcmtlcl9oCisKKyNpbmNsdWRlICJBYnN0cmFjdFdv
cmtlci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2hhcmVkV29ya2Vy
IDogcHVibGljIEFic3RyYWN0V29ya2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJl
ZFdvcmtlcih1cmwsIG5hbWUsIGNvbnRleHQsIGVjKSk7CisgICAgICAgIH0KKyAgICAgICAgflNo
YXJlZFdvcmtlcigpOworICAgICAgICBNZXNzYWdlUG9ydCogcG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9ydC5nZXQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkV29ya2VyKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBtX3Bv
cnQ7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhcmVk
V29ya2VyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIGIv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTY5ZjgxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBp
bnRlcmZhY2UgW0N1c3RvbU1hcmtGdW5jdGlvbiwgQ29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlNd
IFNoYXJlZFdvcmtlciA6IEFic3RyYWN0V29ya2VyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIE1lc3NhZ2VQb3J0IHBvcnQ7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2YzM0Njk0Li5hMjc1YTIx
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdpbHNvbiAgPGF0d2lsc29u
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdv
cmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjkzMgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyAoZGlz
YWJsZWQgYnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzoKKwogMjAwOS0wNy0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHdhcm5pbmdzIGZyb20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGIvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwppbmRleCBlMTMyMmI3Li5kZGU3MzAzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM5LDYgKzM5LDcgQEAg
RU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09O
REFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBFTkFCTEVf
U1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklN
QVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsKQEAgLTUy
LDQgKzUzLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFU
SCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NU
T1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RB
VEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggOGRiNzIz
Ny4uOTY5MzI0YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAyICBEcmV3IFdpbHNv
biAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVm
aW5lIFNoYXJlZFdvcmtlciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNjkzMgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIC0tc2hhcmVk
LXdvcmtlcnMgKHR1cm5lZCBvZmYgYnkgZGVmYXVsdCkKKworICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtd2Via2l0OgorCiAyMDA5LTA3LTAyICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29tZXNA
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggYzI0MmZlNy4uMzFmODA2OSAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKQEAgLTQ2LDEwICs0NiwxMCBAQCBteSAkbWFrZUFyZ3M7CiAKIG15ICgk
dGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkZGF0YWJh
c2VTdXBwb3J0LCAkZG9tU3RvcmFnZVN1cHBvcnQsCiAgICAgJGZpbHRlcnNTdXBwb3J0LCAkZ2Vv
bG9jYXRpb25TdXBwb3J0LCAkZ25vbWVLZXlyaW5nU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBv
cnQsCi0gICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRp
b25TdXBwb3J0LCAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1cHBvcnQsCi0gICAgJHN2Z0Fz
SW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9y
dCwgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LAotICAgICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9T
dXBwb3J0LCAkd21sU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LCAkeHBhdGhTdXBwb3J0LCAkeHNs
dFN1cHBvcnQsCi0gICAgJGNvdmVyYWdlU3VwcG9ydCk7CisgICAgJGphdmFTY3JpcHREZWJ1Z2dl
clN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1
cHBvcnQsICRzdmdTdXBwb3J0LAorICAgICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFn
ZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAor
ICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBv
cnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCisgICAgJHhwYXRoU3VwcG9ydCwgJHhz
bHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsg
b3B0aW9uID0+ICIzZC1yZW5kZXJpbmciLCBkZXNjID0+ICJUb2dnbGUgM0QgcmVuZGVyaW5nIHN1
cHBvcnQiLApAQCAtODUsNiArODUsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24g
PT4gIm9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBPZmZsaW5lIFdl
YiBBcHBsaWNhdGlvbiBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRvZmZsaW5lV2ViQXBw
bGljYXRpb25TdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAic2hhcmVkLXdvcmtlcnMiLCBk
ZXNjID0+ICJUb2dnbGUgU2hhcmVkV29ya2VycyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX1NIQVJFRF9XT1JLRVJTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHNoYXJlZFdv
cmtlcnNTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAic3ZnIiwgZGVzYyA9PiAiVG9nZ2xl
IFNWRyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1NWRyIsIGRlZmF1bHQgPT4g
MSwgdmFsdWUgPT4gXCRzdmdTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBi
L2NvbmZpZ3VyZS5hYwppbmRleCBiNzIwYTQzLi42Y2Y0NzA3IDEwMDY0NAotLS0gYS9jb25maWd1
cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zOTgsNiArMzk4LDE0IEBAIEFDX0FSR19FTkFC
TEUod21sLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dtbD0ibm8iXSkKIEFDX01TR19SRVNV
TFQoWyRlbmFibGVfd21sXSkKIAorIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBTaGFyZWRXb3Jr
ZXJzIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgU2hhcmVkV29y
a2VycyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoc2hhcmVkX3dvcmtlcnMsCisgICAgICAgICAg
ICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWQtd29ya2Vyc10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgU2hhcmVkV29ya2VycyBbZGVm
YXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9zaGFyZWRfd29ya2Vycz0ibm8i
XSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkX3dvcmtlcnNdKQorCiAjIGNoZWNrIHdo
ZXRoZXIgdG8gZW5hYmxlIFdlYiBXb3JrZXJzIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhbd2hl
dGhlciB0byBlbmFibGUgV2ViIFdvcmtlcnMgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKHdvcmtl
cnMsCkBAIC02ODAsNiArNjg4LDcgQEAgQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9DT1ZFUkFHRV0s
W3Rlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJM
RV9GQVNUX01BTExPQ10sW3Rlc3QgIiRlbmFibGVfZmFzdF9tYWxsb2MiID0gInllcyJdKQogQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV9XTUxdLFt0ZXN0ICIkZW5hYmxlX3dtbCIgPSAieWVzIl0pCiBB
TV9DT05ESVRJT05BTChbRU5BQkxFX1dPUktFUlNdLFt0ZXN0ICIkZW5hYmxlX3dvcmtlcnMiID0g
InllcyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9TSEFSRURfV09SS0VSU10sW3Rlc3QgIiRl
bmFibGVfc2hhcmVkX3dvcmtlcnMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW1NWR19GTEFH
U10sW3Rlc3QgIiRzdmdfZmxhZ3MiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0hUTUxfRkxB
R1NdLFt0ZXN0ICIkaHRtbF9mbGFncyIgPSAieWVzIl0pCiAKQEAgLTcxOCw2ICs3MjcsNyBAQCBG
ZWF0dXJlczoKICBIVE1MNSBjbGllbnQtc2lkZSBkYXRhYmFzZSBzdG9yYWdlIHN1cHBvcnQgICAg
ICAgICAgICAgICA6ICRlbmFibGVfZGF0YWJhc2UKICBIVE1MNSB2aWRlbyBlbGVtZW50IHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfdmlkZW8KICBJY29uIGRh
dGFiYXNlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfaWNvbl9kYXRhYmFzZQorIFNoYXJlZFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zaGFyZWRfd29ya2VycwogIFNWRyBzdXBwb3J0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9z
dmcKICBTVkcgYW5pbWF0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICRlbmFibGVfc3ZnX2FuaW1hdGlvbgogIFNWRyBmb250cyBzdXBwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmdfZm9udHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32403</attachid>
            <date>2009-07-07 17:16:54 -0700</date>
            <delta_ts>2009-07-10 16:42:09 -0700</delta_ts>
            <desc>proposed patch with a fix to AbstractWorker::toJS()</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>88833</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNDQwMTIzLi42YThhNjFj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDcgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgKiBjb25maWd1cmUuYWM6
CisKIDIwMDktMDctMDMgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6IGFuZCBHdXN0YXZvIE5vcm9uaGEuCkBA
IC05LDcgKzIwLDYgQEAKICAgICAgICAgQWRkIG5ldyBXZWJTZXR0aW5ncyB1bml0IHRlc3QgZm9y
IHRoZSBVc2VyLUFnZW50IHN0cmluZyBBUEkuCiAKICAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
LSAgICAgICAgKiBjb25maWd1cmUuYWM6CiAKIDIwMDktMDYtMjAgIEd1c3Rhdm8gTm9yb25oYSBT
aWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1ZjNhMTc1Li42ZjRkOGMxIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDcgIERyZXcgV2lsc29uICA8YXR3
aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hh
cmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFn
IChvZmYgYnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzoKKwogMjAwOS0wNy0wNiAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgTWFyayBSb3dlLgpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCBlMmZiY2RkLi42Mjc0MjY2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzgsNiArMzgsNyBA
QCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lD
T05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJM
RV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FO
SU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAt
NTEsNCArNTIsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9G
SUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkg
JChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
RE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVf
WFNMVCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTFiYTZlYi4uMThmMzNkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMjEwLDYgKzIxMCwyMCBA
QAogCiAgICAgICAgICogcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CiAKKzIwMDktMDctMDIg
IERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBm
bGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3Ig
bmV3IFNoYXJlZFdvcmtlciBBUElzIChkaXNhYmxlZCBieSBkZWZhdWx0KS4KKworICAgICAgICAq
IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRt
bC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKwog
MjAwOS0wNy0wMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0YzFjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGNvbnN0cnVj
dG9yIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2Vz
LCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1BBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBwcm9wYWdh
dGVkIGNvcnJlY3RseS4KK1BBU1M6IHRyeWluZyB0byBjcmVhdGUgd29ya2VycyByZWN1cnNpdmVs
eSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFj
ayBzaXplIGV4Y2VlZGVkLikKK1BBU1M6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3Rv
ciB3aXRob3V0IGFyZ3VtZW50cyByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFN5bnRheEVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25z
dHJ1Y3RvciB3aXRob3V0IG5hbWUgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChTeW50YXhFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMpCitQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Ig
c3VjY2VlZGVkOiBbb2JqZWN0IFNoYXJlZFdvcmtlcl0KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNh
YmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9y
Lmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0N2U2
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8
cD5UZXN0IFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJp
bnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxk
aXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7
dG9TdHJpbmc6ZnVuY3Rpb24oKXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9n
KCJGQUlMOiB0b1N0cmluZyBleGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChl
eCkgeworICAgIGlmIChleCA9PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0
cmluZyBleGNlcHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAg
ICBsb2coIkZBSUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBp
bnN0ZWFkIG9mIG9uZSBwcm9wYWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7Cisg
ICAgdmFyIGZvbyA9IHt0b1N0cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAg
bmV3IFNoYXJlZFdvcmtlcihmb28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9u
IHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChl
eCkgeworICAgIGxvZygiUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5
IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAg
ICBuZXcgU2hhcmVkV29ya2VyKCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3Jr
ZXIgY29uc3RydWN0b3Igd2l0aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhj
ZXB0aW9uIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVk
V29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2Vw
dGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNo
YXJlZFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6
IENvbnN0cnVjdG9yIHN1Y2NlZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNo
IChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9y
IHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9
CisKK3RyeSB7CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93
b3JrZXItY29tbW9uLmpzIiwgIm5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIg
Y29uc3RydWN0b3Igc3VjY2VlZGVkOiAiICsgd29ya2VyKTsKK30gY2F0Y2ggKGV4KSB7CisgICAg
bG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4g
YW4gZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOworfQorCitsb2coIkRPTkUiKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODcwNGFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZl
bnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCBTaGFyZWRXb3Jr
ZXIgZXZlbnQgbGlzdGVuZXIuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2Vz
LCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQuCitT
VUNDRVNTOiBMaXN0ZW5lciB3YXMgbm90IGNhbGxlZCBhZnRlciByZW1vdmFsLgorU1VDQ0VTUzog
TGlzdGVuZXIgd2FzIGNhbGxlZCBhZnRlciBHQy4KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNh
YmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3Rl
bmVyLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEz
M2ZlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw3MyBAQAorPGJv
ZHk+Cis8cD5UZXN0IFNoYXJlZFdvcmtlciBldmVudCBsaXN0ZW5lci4gU2hvdWxkIHByaW50IGEg
c2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48L3A+Cis8ZGl2IGlk
PXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVz
b3VyY2VzL3dvcmtlci1jb21tb24uanMiLCAiZm9vYmFyIik7Cit2YXIgbnVtTGlzdGVuZXJDYWxs
cyA9IDA7CitmdW5jdGlvbiBjb3VudExpc3RlbmVyQ2FsbGJhY2tzKGV2ZW50KQoreworICAgIGlm
IChldmVudC50eXBlICE9ICJmb28iKQorICAgICAgICBsb2coIkZBSUw6IFJlY2VpdmVkIHVuZXhw
ZWN0ZWQgZXZlbnQ6ICIgKyBldmVudC50eXBlKTsKKyAgICBudW1MaXN0ZW5lckNhbGxzKys7Cit9
Cit3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgY291bnRMaXN0ZW5lckNhbGxiYWNrcywg
ZmFsc2UpOwordmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50cyIpOworZXZl
bnQuaW5pdEV2ZW50KCJmb28iLCBmYWxzZSwgZmFsc2UpOword29ya2VyLmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworaWYgKG51bUxpc3RlbmVyQ2FsbHMgPT0gMSkgeworICAgIGxvZygiU1VDQ0VTUzog
TGlzdGVuZXIgd2FzIGNhbGxlZC4iKTsKK30gZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0ZW5l
ciB3YXMgbm90IGNhbGxlZC4iKTsKK30KKword29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZv
byIsIGNvdW50TGlzdGVuZXJDYWxsYmFja3MsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKK2lmIChudW1MaXN0ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6
IExpc3RlbmVyIHdhcyBub3QgY2FsbGVkIGFmdGVyIHJlbW92YWwuIik7Cit9IGVsc2UgeworICAg
IGxvZygiRkFJTDogTGlzdGVuZXIgd2FzIGNhbGxlZCBhZnRlciByZW1vdmFsLiIpOworfQorCisv
LyBUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZW50IGxpc3RlbmVycyBzdXJ2aXZlIEdDLgord29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoImZvbyIsIGNyZWF0ZU5ld0xpc3RlbmVyKGNvdW50TGlzdGVu
ZXJDYWxsYmFja3MpLCBmYWxzZSk7CitnYygpOword29ya2VyLmRpc3BhdGNoRXZlbnQoZXZlbnQp
OworaWYgKG51bUxpc3RlbmVyQ2FsbHMgPT0gMikgeworICAgIGxvZygiU1VDQ0VTUzogTGlzdGVu
ZXIgd2FzIGNhbGxlZCBhZnRlciBHQy4iKTsKK30gZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0
ZW5lciB3YXMgbm90IGNhbGxlZCBhZnRlciBHQy4iKTsKK30KKworCitsb2coIkRPTkUiKTsKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworCitmdW5jdGlvbiBjcmVhdGVOZXdMaXN0ZW5lcihmdW5jKQoreworICBy
ZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHsgZnVuYyhldmVudCk7IH07Cit9CisKK2Z1bmN0aW9uIGdj
KCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxv
Y2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KS4KKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJh
YmMiKTsKKyAgICB9Cit9CisKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNiNTA1YjYuLjAxMGYzYjAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTAgQEAKKzIwMDktMDctMDcgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQ
SXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMy
CisKKyAgICAgICAgSW5pdGlhbCBJREwgZGVmaW5pdGlvbiBhbmQgYmluZGluZ3MgZm9yIFNoYXJl
ZFdvcmtlcnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzoKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMg
Zm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBz
dXBwb3J0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjptYXJrKToKKyAgICAgICAgQ3VzdG9tIG1hcmsg
aGFuZGxlciB0aGF0IG1hcmtzIHRoZSBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIChXZWJDb3Jl
OjpKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNBYnN0cmFjdFdvcmtlcjo6dG9KUyk6CisgICAgICAgIEN1c3RvbSB0b0pTIGhhbmRsZXIg
d2hpY2ggZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiB2YXJpb3VzIHN1YmNsYXNzZXMuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OnNoYXJlZFdvcmtlcik6CisgICAgICAgIFNoYXJlZFdvcmtlciBjb25zdHJ1
Y3RvciAob25seSBlbmFibGVkIHdoZW4gU0hBUkVEX1dPUktFUlMgaXMKKyAgICAgICAgZW5hYmxl
ZCkuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAg
ICBBZGRlZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRvL2Zyb20gU2hhcmVkV29ya2Vycy4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdvcmtl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
cjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmspOgor
ICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlvbiB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBNZXNz
YWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJz
dHJhY3RXb3JrZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAg
KFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19G
VU5DX0RFQ0wpOgorICAgICAgICBWOCBoYW5kbGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50TGlzdGVu
ZXIoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBDdXN0
b20gY29uc3RydWN0b3IgZm9yIFNoYXJlZFdvcmtlci4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyKToK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OkFic3RyYWN0V29ya2VyKToKKyAgICAgICAgQ29t
bW9uIGJhc2VjbGFzcyBmb3IgU2hhcmVkV29ya2VyIGFuZCAoc29vbikgV29ya2VyLiBUaGUgZnVu
Y3Rpb25zIGJlbG93IHdlcmUgY29waWVkIGZyb20gV29ya2VyLmNwcC4KKyAgICAgICAgVGhpcyBp
cyB0aGUgZmlyc3Qgc3RlcCBpbiByZWZhY3RvcmluZyBXb3JrZXIgdG8gZGVyaXZlIGZyb20gQWJz
dHJhY3RXb3JrZXIgdG8gZW5hYmxlIGNvZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RX
b3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RX
b3JrZXI6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6
OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3Jr
ZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudCk6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5oOiBBZGRlZC4KKyAgICAgICAgRGVmaW5pdGlvbnMgb2YgZnVuY3Rpb25hbGl0eSBz
aGFyZWQgYnkgV29ya2VyLmggYW5kIFNoYXJlZFdvcmtlci5oLiBJbiBhIGZ1dHVyZSBwYXRjaCwg
V29ya2VyIHdpbGwgZGVyaXZlIGZyb20gQWJzdHJhY3RXb3JrZXIuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpBYnN0cmFjdFdvcmtlcjo6c2V0T25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0
cmFjdFdvcmtlcjo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6
ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlZkV2
ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkZXJlZkV2ZW50
VGFyZ2V0KToKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDogQWRkZWQuCisg
ICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyOjp0b1NoYXJlZFdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3Jr
ZXIuaWRsOiBBZGRlZC4KKwogMjAwOS0wNy0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTMyMmI3
Li5kZGU3MzAzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCisrKyBiL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKQEAgLTM5LDYgKzM5LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxF
X0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVf
U0hBUkVEX1dPUktFUlMgPSA7CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdf
QU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0g
RU5BQkxFX1NWR19BU19JTUFHRTsKQEAgLTUyLDQgKzUzLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBF
TkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xU
ID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
U1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5B
QkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9T
VkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xU
KTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChF
TkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lN
QUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9W
SURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNmYxZjY1NC4uOWYzY2UwZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtNDUsNiArNDUsNyBAQCBWUEFUSCA9IFwKIAogRE9NX0NMQVNTRVMgPSBc
CiAgICAgQWJzdHJhY3RWaWV3IFwKKyAgICBBYnN0cmFjdFdvcmtlciBcCiAgICAgQXR0ciBcCiAg
ICAgQmFySW5mbyBcCiAgICAgQ0RBVEFTZWN0aW9uIFwKQEAgLTIwMCw2ICsyMDEsNyBAQCBET01f
Q0xBU1NFUyA9IFwKICAgICBSYW5nZSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAogICAgIFJlY3Qg
XAorICAgIFNoYXJlZFdvcmtlciBcCiAgICAgU1FMRXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBc
CiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA3ZTI4MWQ0Li4wNzcxOTdkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTI0OSw2ICsyNDksOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvcGx1
Z2lucy9NaW1lVHlwZUFycmF5LmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5pZGwgXAog
CVdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9BYnN0
cmFjdFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKIAlX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaWRsIFwKQEAgLTIzMjQs
NiArMjMyNiwyNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaAogZW5kaWYKIAorIyAtLS0KKyMgU2hhcmVkV29ya2VyIHN1cHBvcnQKKyMgLS0t
CitpZiBFTkFCTEVfU0hBUkVEX1dPUktFUlMKK0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9
IEVOQUJMRV9TSEFSRURfV09SS0VSUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5B
QkxFX1NIQVJFRF9XT1JLRVJTPTEKKword2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKwlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIFwKKwlXZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oCisKK2VuZGlmCisKICMgLS0tLQogIyBXTUwgU3VwcG9ydAogIyAtLS0tCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3Yzc3MDky
Li4xNzgyMTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTEyMiw2ICsxMjIsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U0lOR0xFX1RIUkVBREVEPTEpIHsKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFNMVD0uKTog
REVGSU5FUyArPSBFTkFCTEVfWFNMVD0wCiAjIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YQkw9
Lik6IERFRklORVMgKz0gRU5BQkxFX1hCTD0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dN
TD0uKTogREVGSU5FUyArPSBFTkFCTEVfV01MPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U0hBUkVEX1dPUktFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTAKICFj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0uKTogREVGSU5FUyArPSBFTkFCTEVfV09S
S0VSUz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1MTVA9Lik6IERFRklORVMgKz0g
RU5BQkxFX1hIVE1MTVA9MAogCkBAIC0xNDMyLDYgKzE0MzMsMjEgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1dPUktFUlM9MSkgewogICAgICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKIH0KIAorY29udGFpbnMoREVGSU5FUywgU0hBUkVEX1dPUktFUlM9MSkgeworICAgIEZF
QVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0xCisKKyAg
ICBJRExfQklORElOR1MgKz0gXAorICAgICAgICB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBc
CisgICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbAorCisgICAgU09VUkNFUyArPSBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIFwKKyAgICAgICAg
YmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgXAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgXAorICAgICAgICB3b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmNwcCBcCisgICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorfQorCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19K
QVZBU0NSSVBUICs9IEVOQUJMRV9WSURFTz0xCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjc5ZjMxMS4uNzZmYTJkOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MSwxMSArNjQxLDE3IEBACiAJCTQxMTA0
NjQyMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjQwMEZBMjIyQTYwMEJB
NDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJNDEyN0Q1MzcwRjhBQUIx
RDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0
ZS5jcHAgKi87IH07CiAJCTQxMkE2ODQ3MEY2QjAzREQwMDBFQTY2RSAvKiBTY3JpcHRPYmplY3RR
dWFyYW50aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMkE2ODQ2MEY2QjAzREQwMDBFQTY2RSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmNw
cCAqLzsgfTsKKwkJNDE1QjdDNTcwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJhY3RXb3JrZXJD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwICov
OyB9OworCQk0MTVCN0M1ODBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAg
Ki87IH07CisJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVC
N0M1NjBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovOyB9Owor
CQk0MTVCN0M2MzBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNjIw
RkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJ
NDE2RTc1QkUwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkMwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovOyB9OwogCQk0MTZFNzVCRjBFREY4RkQ3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3Rh
Y2suY3BwICovOyB9OwogCQk0MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZF
NzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3
NUNDMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFE
IC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVC
NiAvKiBTY3JpcHRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MThGODgwNDBG
Rjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyog
SlNBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CisJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAv
KiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5o
ICovOyB9OwogCQk0MTk1MzY1MTBGNjgyMjI0MDBEMEM2NzkgLyogU2NyaXB0T2JqZWN0UXVhcmFu
dGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCAqLzsgfTsK
IAkJNDFCRjcwMEIwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwOTBGRTg2
RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLzsgfTsKIAkJNDFCRjcwMEMw
RkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8q
IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyB9OwpAQCAtNjU0LDYgKzY2MCwxNCBAQAogCQk0MUM3
NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAw
NEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQxRDAxNUNCMEY0QjVDNzEwMDRBNjYy
RiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICov
OyB9OworCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDdBN0MwRkY5
MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0YwRkY5
MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFy
ZWRXb3JrZXIuaCAqLzsgfTsKKwkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CisJ
CTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAwNTc2
QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87IH07CisJCTQxRTFCMUQyMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtl
ci5pZGwgKi87IH07CisJCTQxRTFCMUQzMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIx
Q0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi87IH07CisJCTQxRTFCMUQ0
MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNFMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFy
ZWRXb3JrZXIuaCAqLzsgfTsKKwkJNDFFMUIxRDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsICovOyB9OwogCQk0
MUYwNjBDRDBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MENCMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQk0MUYwNjBD
RTBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQzBGNUVFQjJCMDBBMDdF
QUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IH07CiAJCTQxRjA2MTZBMEY1RUZCREQw
MEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxNjkwRjVFRkJERDAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlckN1c3RvbS5jcHAgKi87IH07CkBAIC01NTY5LDExICs1
NTgzLDE3IEBACiAJCTQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3Rl
bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTJBNjg0NjBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3RRdWFyYW50
aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTQwRkY1OThFNjAw
Njc3MEY3IC8qIEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTVCN0M1NjBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTVCN0M2MjBGRjVBNzY3MDA2
NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3Rh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAv
KiBTY3JpcHRDYWxsU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2NyaXB0Q2FsbFN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2
RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZGNDVFRjBFRDdCMzExMDA4MjE1
QjYgLyogU2NyaXB0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MThGODgwMjBGRjk1
N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTk1MzY1MDBGNjgyMjI0MDBEMEM2NzkgLyog
U2NyaXB0T2JqZWN0UXVhcmFudGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQkY3MDA5MEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8q
IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXNzYWdlUG9ydENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1ODIs
NiArNTYwMiwxNCBAQAogCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRl
bnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAv
KiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDA3QTdDMEZG
OTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYXJlZFdvcmtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWJzdHJh
Y3RXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFj
dFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdFdvcmtl
ci5oOyBwYXRoID0gd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmlkbDsgcGF0aCA9IHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUx
QjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlci5jcHA7IHBhdGggPSB3b3JrZXJzL1No
YXJlZFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUNFMEZG
NTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU2hhcmVkV29ya2VyLmg7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDRjBGRjU5ODY5MDA1NzZCM0IgLyog
U2hhcmVkV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTaGFyZWRXb3JrZXIuaWRs
OyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUYwNjBBQTBGNUVFOEJCMDBBMDdFQUMgLyogSW5zcGVjdG9yQ29udHJvbGxlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MENCMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luc3BlY3RvckNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4NDEsNiArOTg2OSwxMiBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxOEY4MzFCNzBGRDQ4Qzc4MDBEOEM1
NkIgLyogV29ya2VyTG9hZGVyUHJveHkuaCAqLywKKwkJCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAorCQkJCTQxRTFCMUNCMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAorCQkJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCisJCQkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5jcHAgKi8sCisJCQkJNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5oICovLAorCQkJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRX
b3JrZXIuaWRsICovLAogCQkJCTJFNDM0NjMyMEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29y
a2VyVGFzay5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3Bw
ICovLAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywKQEAgLTEz
Mzc2LDYgKzEzNDEwLDEwIEBACiAJCUJDMUEzNzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE1QjdDNjIwRkY1
QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAqLywKKwkJCQk0MTVC
N0M1NDBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgKi8sCisJ
CQkJNDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3Iu
Y3BwICovLAorCQkJCTQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1
c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLywK
IAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJ
CUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
ICovLApAQCAtMTM5MzIsNiArMTM5NzAsMTAgQEAKIAkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdE
IC8qIFRocmVhZHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLywK
KwkJCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovLAor
CQkJCTQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgKi8sCisJ
CQkJNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJ
RTFDOEJFNUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNwcCAqLywKIAkJCQlFMUNBQTVD
NTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJCQlFMTgyNTY4RDBFRjJCMDJE
MDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAgLTE2OTE5LDYgKzE2OTYxLDEx
IEBACiAJCQkJQkNCQ0FFM0QwRkYxOTM5OTAwMDc2MkFFIC8qIEpTRGF0YUdyaWREYXRhU291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3REFBRUYwRkY5NjE1RDAwQ0UwMTM4
IC8qIERPTURhdGFHcmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFFMUIxRDEw
RkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MUUxQjFENDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTVCN0M2MzBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFEMDdBN0YwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hh
cmVkV29ya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUg
LyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVBNjg0MjIwRkZBQkU5
ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTcwMjgsNiArMTcw
NzUsOCBAQAogCQkJCUJDNzdDREEzMEZFRkVCNTMwMDcwODg3QiAvKiBIVE1MRGF0YUdyaWRDZWxs
RWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUJDNzdDRjk5MEZGMTcyNDIwMDcwODg3
QiAvKiBEYXRhR3JpZENvbHVtbkxpc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQzc3Q0Y5
RjBGRjE3MkIzMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW4uaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsIGluIFJl
c291cmNlcyAqLywKKwkJCQk0MUUxQjFENTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODkzNCw2ICsxODk4MywxMyBAQAogCQkJCUJDNzdE
MjM5MEZGMjk4MDgwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzdEQUFFRTBGRjk2MTVEMDBDRTAxMzggLyogRE9NRGF0YUdyaWRE
YXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUUxQjFEMzBGRjU5
ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3
QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBG
NyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUQwN0E3
RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjVBNjg0MjQwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0
ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2Vy
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjk5MTBkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtlci5oIgorCisjaW5j
bHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpT
QWJzdHJhY3RXb3JrZXI6Om1hcmsoKQoreworICAgIERPTU9iamVjdDo6bWFyaygpOworCisgICAg
bWFya0lmTm90TnVsbChtX2ltcGwtPm9uZXJyb3IoKSk7CisKKyAgICB0eXBlZGVmIEFic3RyYWN0
V29ya2VyOjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKKyAgICB0eXBlZGVm
IEFic3RyYWN0V29ya2VyOjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5lclZlY3RvcjsKKyAgICBFdmVu
dExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2ltcGwtPmV2ZW50TGlzdGVuZXJzKCk7
CisgICAgZm9yIChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgbWFwSXRlciA9IGV2ZW50TGlz
dGVuZXJzLmJlZ2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0ZW5lcnMuZW5kKCk7ICsrbWFwSXRl
cikgeworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciB2ZWNJdGVyID0gbWFw
SXRlci0+c2Vjb25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFwSXRlci0+c2Vjb25kLmVuZCgpOyAr
K3ZlY0l0ZXIpCisgICAgICAgICAgICAoKnZlY0l0ZXIpLT5tYXJrSlNGdW5jdGlvbigpOworICAg
IH0KK30KKworSlNWYWx1ZSBKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChpbXBsKCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2xv
YmFsT2JqZWN0LT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoYXJncy5hdCgxKSk7CisgICAg
aWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaW1wbCgp
LT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJl
bGVhc2UoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCitKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVu
ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGds
b2JhbE9iamVjdC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPnJlbW92
ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIsIGFyZ3Mu
YXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwor
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgQWJzdHJhY3RXb3JrZXIqIGJhc2VPYmplY3Qp
Cit7CisgICAgLy8gSnVzdCBjYWxsIHRoZSBKU0V2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uIG9m
IHRvSlMoKSwgd2hpY2ggYWxyZWFkeSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHRoZSBkaWZmZXJl
bnQgaW1wbGVtZW50YXRpb25zLgorICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEV2
ZW50VGFyZ2V0Kj4oYmFzZU9iamVjdCkpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjIwMTNlYi4uYzA5NWJmMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQ
b3J0LmgiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIgpAQCAtNDc2LDYgKzQ3NywxMyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93Ojp3b3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCitKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFyZWRXb3Jr
ZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAv
LyBDdXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2lu
ZG93LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcApp
bmRleCAyMDU4MDk4Li4zY2U5ODJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAKQEAgLTU2LDYgKzU2LDExIEBACiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgi
CisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDEsNiArMTA2LDExIEBAIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAgICAgICAgIHJldHVy
biB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisgICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0g
dGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBzaGFy
ZWRXb3JrZXIpOworI2VuZGlmCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4ganNOdWxsKCk7CiB9CkBAIC0xMzIsNiArMTQyLDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50
VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChX
b3JrZXJDb250ZXh0KQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAg
Q09OVkVSVF9UT19FVkVOVF9UQVJHRVQoU2hhcmVkV29ya2VyKQorI2VuZGlmCisKICAgICByZXR1
cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0YTdlNgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IuaCIKKworI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNTaGFy
ZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBDbGFzc0luZm8gSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2hhcmVkV29ya2VyQ29uc3RydWN0b3IiLCAw
LCAwLCAwIH07CisKK0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorICAgIDogRE9NT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKK3sKKyAgICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNTaGFyZWRXb3JrZXJQcm90b3R5cGU6
OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgLy8gSG9zdCBmdW5jdGlvbnMg
aGF2ZSBhIGxlbmd0aCBwcm9wZXJ0eSBkZXNjcmliaW5nIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQg
YXJndW1lbnRzLgorICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihleGVjLCAyKSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7Cit9CisKK3N0
YXRpYyBKU09iamVjdCogY29uc3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDIp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiKTsKKworICAgIFVTdHJpbmcgc2NyaXB0VVJMID0gYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKTsKKyAgICBVU3RyaW5nIG5hbWUgPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdv
cmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCBjb250
ZXh0LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBh
c09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkpKTsKK30KKworQ29uc3RydWN0VHlw
ZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjb25zdHJ1Y3RTaGFyZWRXb3JrZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0Owor
fQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURf
V09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU4YjJiNAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3JfaAor
I2RlZmluZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yIDogcHVibGljIERPTU9i
amVjdCB7CisgICAgcHVibGljOgorICAgICAgICBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVh
bCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEm
KTsKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3Jr
ZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NTMyOTgK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU1NoYXJl
ZFdvcmtlcjo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAgaWYgKE1lc3NhZ2VQ
b3J0KiBwb3J0ID0gaW1wbCgpLT5wb3J0KCkpIHsKKyAgICAgICAgRE9NT2JqZWN0KiB3cmFwcGVy
ID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCBwb3J0KTsKKyAgICAgICAgaWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1hcmtlZCgpKQor
ICAgICAgICAgICAgd3JhcHBlci0+bWFyaygpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYmJiZTU0My4uYmFmMjJiYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNDQs
NyArMTQ0LDcgQEAgc3ViIFVzZXNNYW51YWxUb0pTSW1wbGVtZW50YXRpb24KIHsKICAgICBteSAk
dHlwZSA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIk5vZGUiIG9yICR0eXBl
IGVxICJEb2N1bWVudCIgb3IgJHR5cGUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkdHlwZSBlcSAi
U1ZHUGF0aFNlZyIgb3IgJHR5cGUgZXEgIlN0eWxlU2hlZXQiIG9yICR0eXBlIGVxICJDU1NSdWxl
IiBvciAkdHlwZSBlcSAiQ1NTVmFsdWUiIG9yICR0eXBlIGVxICJFdmVudCIgb3IgJHR5cGUgZXEg
IkltYWdlRGF0YSIgb3IgJHR5cGUgZXEgIkVsZW1lbnQiIG9yICR0eXBlIGVxICJUZXh0IiBvciAk
dHlwZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIjsKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAi
Tm9kZSIgb3IgJHR5cGUgZXEgIkRvY3VtZW50IiBvciAkdHlwZSBlcSAiSFRNTENvbGxlY3Rpb24i
IG9yICR0eXBlIGVxICJTVkdQYXRoU2VnIiBvciAkdHlwZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5
cGUgZXEgIkNTU1J1bGUiIG9yICR0eXBlIGVxICJDU1NWYWx1ZSIgb3IgJHR5cGUgZXEgIkV2ZW50
IiBvciAkdHlwZSBlcSAiSW1hZ2VEYXRhIiBvciAkdHlwZSBlcSAiRWxlbWVudCIgb3IgJHR5cGUg
ZXEgIlRleHQiIG9yICR0eXBlIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiIG9yICR0eXBlIGVxICJB
YnN0cmFjdFdvcmtlciI7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3Bw
CmluZGV4IDc3NzIwMTYuLmYyZjRlN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApAQCAtMzc2
LDYgKzM3NiwxMSBAQAogI2luY2x1ZGUgIlY4V29ya2VyTmF2aWdhdG9yLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRlICJWOEFic3RyYWN0V29ya2VyLmgi
CisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IFY4Q2xhc3NJbmRleDo6R2V0RmFjdG9yeShW
OFdyYXBwZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCmluZGV4IGIyMzhkNzAuLjUzZWVl
YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCkBAIC02NSw2ICs2NSwxNyBAQCB0eXBlZGVmIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5
KSgpOwogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVf
T0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKFNIQVJF
RFdPUktFUiwgU2hhcmVkV29ya2VyKQorCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9X
UkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihBQlNUUkFD
VFdPUktFUiwgQWJzdHJhY3RXb3JrZXIpCisjZWxzZQorI2RlZmluZSBTSEFSRURfV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorI2RlZmluZSBTSEFSRURfV09SS0VSX05PTk5P
REVfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisKICNkZWZpbmUgRE9NX05PREVfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEFU
VFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3RlckRhdGEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI2Nyw3ICsyNzgsOCBAQCB0eXBlZGVmIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0
b3J5KSgpOwogI2RlZmluZSBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoTUVTU0FHRVBPUlQsIE1lc3NhZ2VQb3J0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoWE1MSFRU
UFJFUVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyAgICBXT1JL
RVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhW
KQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0IGludG8gdHdvIGhhbHZlcyBi
ZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxsaW5vbnNlbnNlIGNyYXNoZXMg
d2hlbiBtYWNyb3MgZ2V0CkBAIC0zNjUsNiArMzc3LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICAg
ICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3IpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWSURFT19OT05OT0RFX1RZUEVT
KFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBT
SEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCiAKICNpZiBF
TkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjI4NjBkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3Ry
YWN0V29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihBYnN0cmFjdFdvcmtl
ciogd29ya2VyLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBmaW5kT25seSkKK3sK
KyAgICBpZiAod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4
dCgpKSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogd29ya2VyQ29udGV4
dFByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRyaWV2ZSgpOworICAgICAg
ICBBU1NFUlQod29ya2VyQ29udGV4dFByb3h5KTsKKyAgICAgICAgcmV0dXJuIHdvcmtlckNvbnRl
eHRQcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UsIGZp
bmRPbmx5KTsKKyAgICB9CisKKyAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZl
KHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAocHJveHkpCisgICAg
ICAgIHJldHVybiBmaW5kT25seSA/IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1
ZSwgZmFsc2UpIDogcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUs
IGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQorCitBQ0NFU1NPUl9HRVRURVIoQWJzdHJhY3RX
b3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5vbmVy
cm9yLl9nZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09S
S0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAod29ya2VyLT5vbmVycm9yKCkpIHsKKyAgICAg
ICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0
RXZlbnRMaXN0ZW5lcio+KHdvcmtlci0+b25lcnJvcigpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihBYnN0cmFjdFdvcmtlck9uZXJyb3IpCit7CisgICAg
SU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLm9uZXJyb3IuX3NldCIpOworICAgIEFic3Ry
YWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJh
Y3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGluZm8uSG9sZGVyKCkpOwor
ICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9i
amVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9uZXJyb3IoKSk7CisgICAgaWYgKHZhbHVlLT5J
c051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJ
bmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVhciB0aGUgbGlzdGVuZXIuCisgICAg
ICAgIHdvcmtlci0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgdmFsdWUs
IGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlz
dGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0
ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAg
IHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhD
dXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgd29ya2VyLT5zZXRPbmVycm9yKGxpc3RlbmVyKTsKKyAgICAgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjpr
QWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwor
ICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9s
ZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRM
aXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJv
b2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICB3b3JrZXIt
PmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206
OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEFic3RyYWN0V29ya2VyUmVt
b3ZlRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CisgICAgQWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4
UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4
OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7CisKKyAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtlciwgYXJnc1sxXSwgdHJ1ZSk7
CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3Rl
bmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0
Q2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCA2
MDgzYWM1Li43NjA5NTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBr
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29y
a2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtBYnN0cmFjdFdvcmtlckludGVybmFsRmll
bGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisjZW5kaWYK
KwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dDb25zb2xlSW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dIaXN0b3J5SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxk
Q291bnQgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJh
ckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKQEAgLTQ4Nyw2
ICs0OTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3RlbmVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEFic3Ry
YWN0V29ya2VyT25lcnJvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3Jr
ZXJBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdv
cmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgorCiAjdW5kZWYgREVDTEFSRV9JTkRFWEVEX0FD
Q0VTU19DSEVDSwogI3VuZGVmIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWIyZjhlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19GVU5DX0RFQ0woU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLlNoYXJlZFdvcmtl
ci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUg
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKKworICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gYXJnc1sxXS0+VG9TdHJpbmcoKTsKKyAgICBpZiAo
dHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNo
LkV4Y2VwdGlvbigpKTsKKworICAgIGlmIChzY3JpcHRVcmwuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgLy8gR2V0IHRoZSBzY3JpcHQgZXhlY3V0aW9u
IGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDA7CisgICAg
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAocHJveHkpCisgICAgICAgIGNvbnRleHQgPSBw
cm94eS0+d29ya2VyQ29udGV4dCgpOworICAgIGVsc2UgeworICAgICAgICBGcmFtZSogZnJhbWUg
PSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBjb250ZXh0ID0gZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSB3b3JrZXIgb2JqZWN0LgorICAg
IC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdvIG91dCBvZiBzY29wZSBiZWNh
dXNlIHdlIGFsc28gY2FsbCBTZXRET01XcmFwcGVyKCksIHdoaWNoIGVmZmVjdGl2ZWx5IGhvbGRz
IGEgcmVmZXJlbmNlIHRvIG9iai4KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8U2hhcmVkV29ya2VyPiBvYmogPSBTaGFyZWRXb3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJp
bmcoc2NyaXB0VXJsKSwgdG9XZWJDb3JlU3RyaW5nKG5hbWUpLCBjb250ZXh0LCBlYyk7CisKKyAg
ICAvLyBTZXR1cCB0aGUgc3RhbmRhcmQgd3JhcHBlciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlck9iamVjdCA9IGFyZ3MuSG9sZGVyKCk7
CisgICAgVjhQcm94eTo6c2V0RE9NV3JhcHBlcih3cmFwcGVyT2JqZWN0LCBWOENsYXNzSW5kZXg6
OlNIQVJFRFdPUktFUiwgb2JqLmdldCgpKTsKKworICAgIG9iai0+cmVmKCk7CisgICAgVjhQcm94
eTo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7CisKKyAgICByZXR1cm4gd3JhcHBl
ck9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDA2Y2VhMDcuLjQzN2Y1YmEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKQEAgLTk1LDYgKzk1LDEzIEBAIFdvcmtlckNvbnRleHQqIEV2ZW50VGFy
Z2V0Ojp0b1dvcmtlckNvbnRleHQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCitTaGFyZWRXb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlcigpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgZm9yYmlkRXZl
bnREaXNwYXRjaCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2NjI5MDJlLi43M2EzMmUzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xh
c3MgQWJzdHJhY3RXb3JrZXI7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93OwpAQCAtNDUsNiArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTVkdFbGVt
ZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFz
cyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFdvcmtlckNvbnRl
eHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CkBAIC03MCw2ICs3MiwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2VyQ29udGV4dCogdG9Xb3JrZXJDb250
ZXh0KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICAgICAgdmly
dHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CisjZW5kaWYKKwogICAgICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wg
dXNlQ2FwdHVyZSkgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBhMjNkNzA4Li5iZmRlYmQ0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtNDYxLDYgKzQ2MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAg
YXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFdvcmtlckNvbnN0cnVjdG9yIFdvcmtlcjsgLy8g
VXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJiYgRU5BQkxFX1NIQVJFRF9XT1JLRVJTCisgICAgICAgIGF0dHJp
YnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvciBTaGFyZWRXb3Jr
ZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0
dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVn
aW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWI0ZjhiCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcApAQCAtMCwwICsx
LDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
KworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBYnN0cmFjdFdvcmtlcjo6QWJzdHJhY3RXb3JrZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQoreworfQorCitBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0V29ya2VyKCkKK3sKK30KKwor
dm9pZCBBYnN0cmFjdFdvcmtlcjo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29s
KQoreworICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3Rl
bmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5l
bmQoKSkgeworICAgICAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3Rl
bmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRk
KGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZl
Y3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVj
dG9yOjppdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJ
dGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgICAgIGlm
ICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsK
KyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAg
IH0KK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9v
bCkKK3sKKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0
ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMg
PSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
bGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5l
cnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09
IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXJJ
dGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorfQorCitib29sIEFic3RyYWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWV2ZW50IHx8
IGV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246
OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5n
ZXQoZXZlbnQtPnR5cGUoKSk7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzQ29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0g
bGlzdGVuZXJzQ29weS5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCBmYWxz
ZSk7CisgICAgfQorCisgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworfQor
Cit2b2lkIEFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJvckV2ZW50KCkKK3sKKyAgICBS
ZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZ0
LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsK
KyAgICAgICAgbV9vbkVycm9yTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgdHJ1ZSk7
CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChl
dnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgQWJzdHJhY3RX
b3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBpbnQpCit7CisgICAgLy9GSVhNRTogR2VuZXJhdGUgYW4gRXJyb3JFdmVudCBpbnN0ZWFk
IG9mIGEgc2ltcGxlIGV2ZW50CisgICAgZGlzcGF0Y2hMb2FkRXJyb3JFdmVudCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBiL1dlYkNvcmUv
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmIyNmQ4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBYnN0cmFjdFdvcmtlcl9oCisjZGVmaW5l
IEFic3RyYWN0V29ya2VyX2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1
ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworCisgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBFdmVudFRhcmdldCB7CisgICAgcHVibGljOgorICAgICAgICAvLyBFdmVudFRhcmdldCBB
UElzCisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICAvLyBVdGlsaXR5IHJvdXRpbmVz
IHRvIGdlbmVyYXRlIGFwcHJvcHJpYXRlIGVycm9yIGV2ZW50cyBmb3IgbG9hZGluZyBhbmQgc2Ny
aXB0IGV4Y2VwdGlvbnMuCisgICAgICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXJyb3JFdmVudCgpOwor
ICAgICAgICB2b2lkIGRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCk7CisKKyAgICAgICAgdm9pZCBz
ZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29u
RXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciog
b25lcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9CisgICAg
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3RlbmVyVmVjdG9y
OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBMaXN0ZW5lclZlY3Rvcj4g
RXZlbnRMaXN0ZW5lcnNNYXA7CisgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3Rl
bmVycygpIHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KKworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPEFic3RyYWN0V29ya2VyPjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPEFi
c3RyYWN0V29ya2VyPjo6ZGVyZWY7CisKKyAgICAgICAgQWJzdHJhY3RXb3JrZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworICAgICAgICB2aXJ0dWFsIH5BYnN0cmFjdFdvcmtlcigpOworCisg
ICAgcHJpdmF0ZToKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigp
OyB9CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25FcnJvckxpc3RlbmVyOwor
ICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOworICAgIH07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykK
KworI2VuZGlmIC8vIEFic3RyYWN0V29ya2VyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMzRjMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1TSEFSRURfV09SS0VSUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgICAgICBD
dXN0b21Ub0pTLAorICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBBYnN0cmFjdFdv
cmtlciB7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRF
eGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkMzBkMwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVk
V29ya2VyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmKQor
ICAgIDogQWJzdHJhY3RXb3JrZXIoY29udGV4dCkKK3sKKyAgICAvLyBQbGFjZWhvbGRlciAtIHVs
dGltYXRlbHkgd2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRoZSBTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LgorfQorCitTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oIGIvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2
YzdkODUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyX2gKKyNkZWZpbmUgU2hhcmVkV29y
a2VyX2gKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXIgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyKHVybCwgbmFtZSwgY29udGV4dCwg
ZWMpKTsKKyAgICAgICAgfQorICAgICAgICB+U2hhcmVkV29ya2VyKCk7CisgICAgICAgIE1lc3Nh
Z2VQb3J0KiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAgICAgICAg
dmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CisgICAgfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk0NzVm
NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDb25kaXRpb25hbD1TSEFSRURfV09SS0VSUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9u
LAorICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKKyAgICAgICAgR2VuZXJhdGVUb0pT
CisgICAgXSBTaGFyZWRXb3JrZXIgOiBBYnN0cmFjdFdvcmtlciB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYzA0YWE0Ny4u
OTE5NTUwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0wNyAgRHJldyBXaWxzb24gIDxh
dHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hBUkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBT
aGFyZWRXb3JrZXIgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBBZGRlZCBFTkFCTEUoU0hBUkVEX1dPUktFUlMpIGZs
YWcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDctMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CmluZGV4IGUxMzIyYjcuLmRkZTczMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViS2l0L21hYy9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfR0VP
TE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsK
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7
CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJMRV9TVkcgPSBFTkFC
TEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKIEVO
QUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAtNTIsNCArNTMsNCBA
QCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxF
X1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA5OTMxMTNjLi5iNDBmMWFi
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDcgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVk
V29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgLS1zaGFyZWQtd29ya2VycyAo
dHVybmVkIG9mZiBieSBkZWZhdWx0KQorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6
CisKIDIwMDktMDctMDMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5k
ZXggYzI0MmZlNy4uMzFmODA2OSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTQ2LDEw
ICs0NiwxMCBAQCBteSAkbWFrZUFyZ3M7CiAKIG15ICgkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwg
JGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZG9tU3RvcmFnZVN1
cHBvcnQsCiAgICAgJGZpbHRlcnNTdXBwb3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkZ25vbWVL
ZXlyaW5nU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQsCi0gICAgJGphdmFTY3JpcHREZWJ1
Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkc3ZnU3VwcG9ydCwg
JHN2Z0FuaW1hdGlvblN1cHBvcnQsCi0gICAgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2Jq
Q0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwgJHN2Z0ZvcmVpZ25PYmplY3RTdXBw
b3J0LAotICAgICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdv
cmtlcnNTdXBwb3J0LCAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsCi0gICAgJGNvdmVyYWdl
U3VwcG9ydCk7CisgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBw
bGljYXRpb25TdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsICRzdmdTdXBwb3J0LAorICAg
ICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmlu
ZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAorICAgICRzdmdGb3JlaWduT2JqZWN0U3Vw
cG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vy
c1N1cHBvcnQsCisgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBw
b3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICIzZC1yZW5kZXJpbmci
LCBkZXNjID0+ICJUb2dnbGUgM0QgcmVuZGVyaW5nIHN1cHBvcnQiLApAQCAtODUsNiArODUsOSBA
QCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIm9mZmxpbmUtd2ViLWFwcGxpY2F0
aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbiBTdXBwb3J0IiwK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyIsIGRlZmF1
bHQgPT4gMSwgdmFsdWUgPT4gXCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0IH0sCiAKKyAg
ICB7IG9wdGlvbiA9PiAic2hhcmVkLXdvcmtlcnMiLCBkZXNjID0+ICJUb2dnbGUgU2hhcmVkV29y
a2VycyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1NIQVJFRF9XT1JLRVJTIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHNoYXJlZFdvcmtlcnNTdXBwb3J0IH0sCisKICAgICB7
IG9wdGlvbiA9PiAic3ZnIiwgZGVzYyA9PiAiVG9nZ2xlIFNWRyBzdXBwb3J0IiwKICAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX1NWRyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRzdmdTdXBwb3J0
IH0sCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzYjJl
ZDg3Li40OWVkNjRiIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFj
CkBAIC00MDksNiArNDA5LDE0IEBAIEFDX0FSR19FTkFCTEUod21sLAogICAgICAgICAgICAgICBb
XSxbZW5hYmxlX3dtbD0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd21sXSkKIAorIyBj
aGVjayB3aGV0aGVyIHRvIGVuYWJsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnQKK0FDX01TR19DSEVD
S0lORyhbd2hldGhlciB0byBlbmFibGUgU2hhcmVkV29ya2VycyBzdXBwb3J0XSkKK0FDX0FSR19F
TkFCTEUoc2hhcmVkX3dvcmtlcnMsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVu
YWJsZS1zaGFyZWQtd29ya2Vyc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFi
bGUgc3VwcG9ydCBmb3IgU2hhcmVkV29ya2VycyBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAg
ICAgW10sW2VuYWJsZV9zaGFyZWRfd29ya2Vycz0ibm8iXSkKK0FDX01TR19SRVNVTFQoWyRlbmFi
bGVfc2hhcmVkX3dvcmtlcnNdKQorCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBXb3Jr
ZXJzIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgV2ViIFdvcmtl
cnMgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKHdvcmtlcnMsCkBAIC02OTEsNiArNjk5LDcgQEAg
QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9DT1ZFUkFHRV0sW3Rlc3QgIiRlbmFibGVfY292ZXJhZ2Ui
ID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9GQVNUX01BTExPQ10sW3Rlc3QgIiRl
bmFibGVfZmFzdF9tYWxsb2MiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9XTUxd
LFt0ZXN0ICIkZW5hYmxlX3dtbCIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1dP
UktFUlNdLFt0ZXN0ICIkZW5hYmxlX3dvcmtlcnMiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwo
W0VOQUJMRV9TSEFSRURfV09SS0VSU10sW3Rlc3QgIiRlbmFibGVfc2hhcmVkX3dvcmtlcnMiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW1NWR19GTEFHU10sW3Rlc3QgIiRzdmdfZmxhZ3MiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW0hUTUxfRkxBR1NdLFt0ZXN0ICIkaHRtbF9mbGFncyIg
PSAieWVzIl0pCiAKQEAgLTcyOSw2ICs3MzgsNyBAQCBGZWF0dXJlczoKICBIVE1MNSBjbGllbnQt
c2lkZSBkYXRhYmFzZSBzdG9yYWdlIHN1cHBvcnQgICAgICAgICAgICAgICA6ICRlbmFibGVfZGF0
YWJhc2UKICBIVE1MNSB2aWRlbyBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfdmlkZW8KICBJY29uIGRhdGFiYXNlIHN1cHBvcnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfaWNvbl9kYXRhYmFzZQorIFNoYXJl
ZFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV9zaGFyZWRfd29ya2VycwogIFNWRyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmcKICBTVkcgYW5pbWF0aW9uIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnX2FuaW1h
dGlvbgogIFNWRyBmb250cyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV9zdmdfZm9udHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32592</attachid>
            <date>2009-07-10 16:42:09 -0700</date>
            <delta_ts>2009-07-10 16:53:26 -0700</delta_ts>
            <desc>Patch including changes to newly-upstreamed gypi files, and a couple of layout test &quot;expected.txt&quot; files I missed.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>92326</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OGVjMWU0Li4yM2JjMzVk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDggIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgKiBjb25maWd1cmUuYWM6
CisKIDIwMDktMDctMDcgIE5vcmJlcnQgTGVzZXIgIDxub3JiZXJ0Lmxlc2VyQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KQEAgLTI4LDcgKzM5LDYgQEAK
ICAgICAgICAgQWRkIG5ldyBXZWJTZXR0aW5ncyB1bml0IHRlc3QgZm9yIHRoZSBVc2VyLUFnZW50
IHN0cmluZyBBUEkuCiAKICAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKLSAgICAgICAgKiBjb25m
aWd1cmUuYWM6CiAKIDIwMDktMDYtMjAgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9t
ZS5vcmc+CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWUxNTc5Li43N2MyZGRmIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisK
KyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIChvZmYgYnkgZGVmYXVs
dCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoK
KwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3RzCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDAzYzYxZWQuLjNmODFk
ZmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCisrKyBiL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC0zOCw2ICszOCw3IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsK
IEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFT
Q1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUjsKIEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOwor
RU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFC
TEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwogRU5BQkxFX1NWR19BU19J
TUFHRSA9IEVOQUJMRV9TVkdfQVNfSU1BR0U7CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JL
RVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFC
TEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIp
ICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJM
RV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQo
RU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklM
VEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5J
TUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5E
SU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQo
RU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ODdlNDRhLi44
NDM4MWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8
YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUg
U2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3IgbmV3IFNoYXJlZFdvcmtl
ciBBUElzIChkaXNhYmxlZCBieSBkZWZhdWx0KS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFz
dC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAg
KiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisK
IDIwMDktMDctMTAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBObyBSZXZpZXcsIGp1c3Qgc2tpcHBpbmcgYSBuZXcgdGVzdCBmb3IgUXQgRFJULgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQKaW5kZXggZjg5MWU0MC4uODEyNDk4NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CkBAIC0xNDM0LDYgKzE0MzQsMTEgQEAgd2luZG93LlNWR1VuaXRUeXBlcy5wcm90b3R5cGUg
W29iamVjdCBTVkdVbml0VHlwZXNQcm90b3R5cGVdCiB3aW5kb3cuU1ZHVW5pdFR5cGVzLnByb3Rv
dHlwZS5TVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIFtudW1iZXJdCiB3aW5kb3cuU1ZH
VW5pdFR5cGVzLnByb3RvdHlwZS5TVkdfVU5JVF9UWVBFX1VOS05PV04gW251bWJlcl0KIHdpbmRv
dy5TVkdVbml0VHlwZXMucHJvdG90eXBlLlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UgW251
bWJlcl0KK3dpbmRvdy5TaGFyZWRXb3JrZXIgW29iamVjdCBTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
cl0KK3dpbmRvdy5TaGFyZWRXb3JrZXIucHJvdG90eXBlIFtvYmplY3QgU2hhcmVkV29ya2VyUHJv
dG90eXBlXQord2luZG93LlNoYXJlZFdvcmtlci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciBb
ZnVuY3Rpb25dCit3aW5kb3cuU2hhcmVkV29ya2VyLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50IFtm
dW5jdGlvbl0KK3dpbmRvdy5TaGFyZWRXb3JrZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIgW2Z1bmN0aW9uXQogd2luZG93LlN0b3JhZ2UgW29iamVjdCBTdG9yYWdlQ29uc3RydWN0b3Jd
CiB3aW5kb3cuU3RvcmFnZS5wcm90b3R5cGUgW29iamVjdCBTdG9yYWdlUHJvdG90eXBlXQogd2lu
ZG93LlN0b3JhZ2VFdmVudCBbb2JqZWN0IFN0b3JhZ2VFdmVudENvbnN0cnVjdG9yXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQK
aW5kZXggMzU3ZjA3MC4uYWJiYWIyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9n
bG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pz
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0xNDUsNiArMTQ1LDcgQEAgUEFT
UyBTVkdUZXh0Q29udGVudEVsZW1lbnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBTVkdUZXh0Q29u
dGVudEVsZW1lbnRDb25zdHJ1Y3QKIFBBU1MgU1ZHVGV4dFBhdGhFbGVtZW50LnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QgU1ZHVGV4dFBhdGhFbGVtZW50Q29uc3RydWN0b3JdJwogUEFTUyBTVkdUcmFu
c2Zvcm0udG9TdHJpbmcoKSBpcyAnW29iamVjdCBTVkdUcmFuc2Zvcm1Db25zdHJ1Y3Rvcl0nCiBQ
QVNTIFNWR1VuaXRUeXBlcy50b1N0cmluZygpIGlzICdbb2JqZWN0IFNWR1VuaXRUeXBlc0NvbnN0
cnVjdG9yXScKK1BBU1MgU2hhcmVkV29ya2VyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU2hhcmVk
V29ya2VyQ29uc3RydWN0b3JdJwogUEFTUyBTdG9yYWdlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qg
U3RvcmFnZUNvbnN0cnVjdG9yXScKIFBBU1MgU3RvcmFnZUV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tv
YmplY3QgU3RvcmFnZUV2ZW50Q29uc3RydWN0b3JdJwogUEFTUyBTdHlsZVNoZWV0LnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgU3R5bGVTaGVldENvbnN0cnVjdG9yXScKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjRjMWMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRXb3Jr
ZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBB
U1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhjZXB0
aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5LgorUEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJz
IHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4aW11
bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2Vy
IGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAo
U3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hhcmVk
V29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24g
KFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtlciBj
b25zdHJ1Y3RvciBzdWNjZWVkZWQ6IFtvYmplY3QgU2hhcmVkV29ya2VyXQorRE9ORQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rv
ci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
Y29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41NTQ3ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDU5IEBA
Cis8Ym9keT4KKzxwPlRlc3QgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uYWxpdHku
IFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERP
TkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hh
cmVkV29ya2VyKHt0b1N0cmluZzpmdW5jdGlvbigpe3Rocm93ICJleGNlcHRpb24ifX0sICJuYW1l
IikKKyAgICBsb2coIkZBSUw6IHRvU3RyaW5nIGV4Y2VwdGlvbiBub3QgcHJvcGFnYXRlZC4iKTsK
K30gY2F0Y2ggKGV4KSB7CisgICAgaWYgKGV4ID09ICJleGNlcHRpb24iKQorICAgICAgICBsb2co
IlBBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBwcm9wYWdhdGVkIGNvcnJlY3RseS4iKTsKKyAgICBl
bHNlCisgICAgICAgIGxvZygiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gKCIgKyBleCArICIp
IHJlY2VpdmVkIGluc3RlYWQgb2Ygb25lIHByb3BhZ2F0ZWQgZnJvbSB0b1N0cmluZy4iKTsKK30K
KwordHJ5IHsKKyAgICB2YXIgZm9vID0ge3RvU3RyaW5nOmZ1bmN0aW9uKCl7bmV3IFdvcmtlcihm
b28pfX0KKyAgICBuZXcgU2hhcmVkV29ya2VyKGZvbywgbmFtZSk7CisgICAgbG9nKCJGQUlMOiBu
byBleGNlcHRpb24gd2hlbiB0cnlpbmcgdG8gY3JlYXRlIHdvcmtlcnMgcmVjdXJzaXZlbHkiKTsK
K30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJQQVNTOiB0cnlpbmcgdG8gY3JlYXRlIHdvcmtlcnMg
cmVjdXJzaXZlbHkgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOworfQor
Cit0cnkgeworICAgIG5ldyBTaGFyZWRXb3JrZXIoKTsKKyAgICBsb2coIkZBSUw6IGludm9raW5n
IFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciB3aXRob3V0IGFyZ3VtZW50cyBkaWQgbm90IHJlc3Vs
dCBpbiBhbiBleGNlcHRpb24iKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJQQVNTOiBpbnZv
a2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Igd2l0aG91dCBhcmd1bWVudHMgcmVzdWx0ZWQg
aW4gYW4gZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOworfQorCit0cnkgeworICAgIHZhciB3b3Jr
ZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOworICAg
IGxvZygiRkFJTDogQ29uc3RydWN0b3Igc3VjY2VlZGVkIHdoZW4gbm8gbmFtZSBpcyBwYXNzZWQi
KTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJQQVNTOiBpbnZva2luZyBTaGFyZWRXb3JrZXIg
Y29uc3RydWN0b3Igd2l0aG91dCBuYW1lIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigi
cmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMiLCAibmFtZSIpOworICAgIGxvZyAoIlBBU1M6IFNo
YXJlZFdvcmtlciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQ6ICIgKyB3b3JrZXIpOworfSBjYXRjaCAo
ZXgpIHsKKyAgICBsb2coIkZBSUw6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciBy
ZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK2xvZygiRE9ORSIp
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlz
dGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4
NzA0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0
IFNoYXJlZFdvcmtlciBldmVudCBsaXN0ZW5lci4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBB
U1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKworU1VDQ0VTUzogTGlzdGVuZXIgd2Fz
IGNhbGxlZC4KK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBub3QgY2FsbGVkIGFmdGVyIHJlbW92YWwu
CitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkIGFmdGVyIEdDLgorRE9ORQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5l
ci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
ZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYTMzZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsx
LDczIEBACis8Ym9keT4KKzxwPlRlc3QgU2hhcmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBTaG91
bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwv
cD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgU2hhcmVk
V29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIsICJmb29iYXIiKTsKK3ZhciBudW1M
aXN0ZW5lckNhbGxzID0gMDsKK2Z1bmN0aW9uIGNvdW50TGlzdGVuZXJDYWxsYmFja3MoZXZlbnQp
Cit7CisgICAgaWYgKGV2ZW50LnR5cGUgIT0gImZvbyIpCisgICAgICAgIGxvZygiRkFJTDogUmVj
ZWl2ZWQgdW5leHBlY3RlZCBldmVudDogIiArIGV2ZW50LnR5cGUpOworICAgIG51bUxpc3RlbmVy
Q2FsbHMrKzsKK30KK3dvcmtlci5hZGRFdmVudExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVy
Q2FsbGJhY2tzLCBmYWxzZSk7Cit2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiRXZl
bnRzIik7CitldmVudC5pbml0RXZlbnQoImZvbyIsIGZhbHNlLCBmYWxzZSk7Cit3b3JrZXIuZGlz
cGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlzdGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9n
KCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZB
SUw6IExpc3RlbmVyIHdhcyBub3QgY2FsbGVkLiIpOworfQorCit3b3JrZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiZm9vIiwgY291bnRMaXN0ZW5lckNhbGxiYWNrcywgZmFsc2UpOword29ya2VyLmRp
c3BhdGNoRXZlbnQoZXZlbnQpOworaWYgKG51bUxpc3RlbmVyQ2FsbHMgPT0gMSkgeworICAgIGxv
ZygiU1VDQ0VTUzogTGlzdGVuZXIgd2FzIG5vdCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30g
ZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0ZW5lciB3YXMgY2FsbGVkIGFmdGVyIHJlbW92YWwu
Iik7Cit9CisKKy8vIFRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgZXZlbnQgbGlzdGVuZXJzIHN1cnZp
dmUgR0MuCit3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgY3JlYXRlTmV3TGlzdGVuZXIo
Y291bnRMaXN0ZW5lckNhbGxiYWNrcyksIGZhbHNlKTsKK2djKCk7Cit3b3JrZXIuZGlzcGF0Y2hF
dmVudChldmVudCk7CitpZiAobnVtTGlzdGVuZXJDYWxscyA9PSAyKSB7CisgICAgbG9nKCJTVUND
RVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkIGFmdGVyIEdDLiIpOworfSBlbHNlIHsKKyAgICBsb2co
IkZBSUw6IExpc3RlbmVyIHdhcyBub3QgY2FsbGVkIGFmdGVyIEdDLiIpOworfQorCisKK2xvZygi
RE9ORSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisKK2Z1bmN0aW9uIGNyZWF0ZU5ld0xpc3RlbmVyKGZ1
bmMpCit7CisgIHJldHVybiBmdW5jdGlvbihldmVudCkgeyBmdW5jKGV2ZW50KTsgfTsKK30KKwor
ZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFi
b3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpLgorICAgICAgICB2YXIgcyA9IG5l
dyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ4OTA2
Yi4uNDcyOWUwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAwOS0wNy0xMSAgRHJldyBXaWxzb24gIDxhdHdp
bHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBFTkFCTEUoU0hBUkVEX1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFy
ZWRXb3JrZXIgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY5MzIKKworICAgICAgICBJbml0aWFsIElETCBkZWZpbml0aW9uIGFuZCBiaW5kaW5n
cyBmb3IgU2hhcmVkV29ya2Vycy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtl
ciBzdXBwb3J0LgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgIEFkZGVkIG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQu
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNo
YXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICBBZGRl
ZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBT
aGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2Vy
OjptYXJrKToKKyAgICAgICAgQ3VzdG9tIG1hcmsgaGFuZGxlciB0aGF0IG1hcmtzIHRoZSBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6dG9KUyk6
CisgICAgICAgIEN1c3RvbSB0b0pTIGhhbmRsZXIgd2hpY2ggZGlmZmVyZW50aWF0ZXMgYmV0d2Vl
biB2YXJpb3VzIHN1YmNsYXNzZXMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNoYXJlZFdvcmtlcik6
CisgICAgICAgIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciAob25seSBlbmFibGVkIHdoZW4gU0hB
UkVEX1dPUktFUlMgaXMKKyAgICAgICAgZW5hYmxlZCkuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb252ZXJ0
aW5nIHRvL2Zyb20gU2hhcmVkV29ya2Vycy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmspOgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlv
biB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBNZXNzYWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9ET01PYmplY3RzSW5jbHVkZS5oOgorICAgICAgICBVcGRhdGVkIHRvIGluY2x1ZGUgbmV3
IGhlYWRlciBmaWxlcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omdl
dEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpDQUxM
QkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBWOCBoYW5kbGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50
TGlzdGVuZXIoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAg
ICBDdXN0b20gY29uc3RydWN0b3IgZm9yIFNoYXJlZFdvcmtlci4KKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29y
a2VyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5pZGw6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OkFic3RyYWN0V29ya2VyKToKKyAgICAg
ICAgQ29tbW9uIGJhc2VjbGFzcyBmb3IgU2hhcmVkV29ya2VyIGFuZCAoc29vbikgV29ya2VyLiBU
aGUgZnVuY3Rpb25zIGJlbG93IHdlcmUgY29waWVkIGZyb20gV29ya2VyLmNwcC4KKyAgICAgICAg
VGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiByZWZhY3RvcmluZyBXb3JrZXIgdG8gZGVyaXZlIGZy
b20gQWJzdHJhY3RXb3JrZXIgdG8gZW5hYmxlIGNvZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNv
cmU6OkFic3RyYWN0V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RX
b3JrZXI6OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudCk6CisgICAgICAgICogd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5oOiBBZGRlZC4KKyAgICAgICAgRGVmaW5pdGlvbnMgb2YgZnVuY3Rpb25h
bGl0eSBzaGFyZWQgYnkgV29ya2VyLmggYW5kIFNoYXJlZFdvcmtlci5oLiBJbiBhIGZ1dHVyZSBw
YXRjaCwgV29ya2VyIHdpbGwgZGVyaXZlIGZyb20gQWJzdHJhY3RXb3JrZXIuCisgICAgICAgIChX
ZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6c2V0T25lcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdFdvcmtlcjo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdv
cmtlcjo6ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6
OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRX
b3JrZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OnBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyOjp0b1NoYXJlZFdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXIuaWRsOiBBZGRlZC4KKwogMjAwOS0wNy0xMCAgU3RldmUgRmFsa2VuYnVyZyAgPHNm
YWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDQ4NzQxPiBSRUdS
RVNTSU9OOiBFcnJvciBhYm91dCBtaXNzaW5nIFN3TWVudVguZGxsIG9wZW5pbmcgcGFnZXMgd2l0
aCBTaG9ja3dhdmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IGJlOTZkMjUuLjFhZGY2NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfR0VP
TE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsK
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7
CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJMRV9TVkcgPSBFTkFC
TEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKIEVO
QUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAtNTIsNCArNTMsNCBA
QCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxF
X1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2ZjFm
NjU0Li45ZjNjZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00NSw2ICs0NSw3IEBAIFZQQVRIID0g
XAogCiBET01fQ0xBU1NFUyA9IFwKICAgICBBYnN0cmFjdFZpZXcgXAorICAgIEFic3RyYWN0V29y
a2VyIFwKICAgICBBdHRyIFwKICAgICBCYXJJbmZvIFwKICAgICBDREFUQVNlY3Rpb24gXApAQCAt
MjAwLDYgKzIwMSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFJhbmdlIFwKICAgICBSYW5nZUV4
Y2VwdGlvbiBcCiAgICAgUmVjdCBcCisgICAgU2hhcmVkV29ya2VyIFwKICAgICBTUUxFcnJvciBc
CiAgICAgU1FMUmVzdWx0U2V0IFwKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0IFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGJhYTU5Y2IuLjUzYTdiMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ5LDYgKzI0OSw4IEBAIElETF9CSU5ESU5H
UyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwKIAlXZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luLmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmlkbCBcCisJ
V2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsIFwKIAlXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2Nh
dGlvbi5pZGwgXApAQCAtMjMzOSw2ICsyMzQxLDI3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCiBlbmRpZgogCisjIC0tLQorIyBTaGFyZWRX
b3JrZXIgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9TSEFSRURfV09SS0VSUworRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEKKword2ViY29yZV9j
cHBmbGFncyArPSBcCisJLURFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCit3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3Rv
bS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIFwK
KwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBcCisJV2ViQ29y
ZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIFwKKwlXZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKKworZW5kaWYKKwogIyAtLS0tCiAjIFdNTCBTdXBwb3J0
CiAjIC0tLS0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNDIwMGM5My4uMTdiMDVmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzMCw2ICszMzAsOCBAQAog
ICAgICAgICAgICAgJ3N2Zy9TVkdWaWV3U3BlYy5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9TVkda
b29tQW5kUGFuLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21FdmVudC5pZGwnLAorICAg
ICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsJywKKyAgICAgICAgICAgICd3b3Jr
ZXJzL1NoYXJlZFdvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmlkbCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwnLApAQCAtNTc1LDYgKzU3Nyw3IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAn
LApAQCAtNjM4LDYgKzY0MSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHTWF0cml4Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhUcmVlV2Fsa2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwJywKQEAgLTMy
NDcsNyArMzI1MSwxMSBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdzdmcvU1ZHWm9vbUV2ZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TeW5jaHJv
bml6YWJsZVR5cGVXcmFwcGVyLmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3Jr
ZXIuY3BwJywKKyAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgnLAogICAgICAg
ICAgICAgJ3dvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaCcsCisgICAgICAgICAgICAnd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwJywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5o
JywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlci5jcHAnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggYTI2NjQzOS4uZTIwZjA4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjMsNiArMTIzLDcgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NJTkdMRV9USFJFQURFRD0xKSB7CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1hTTFQ9Lik6IERFRklORVMgKz0gRU5BQkxFX1hTTFQ9MAogIyFjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0gRU5BQkxFX1dNTD0wCishY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NIQVJFRF9XT1JLRVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TSEFSRURfV09S
S0VSUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dPUktFUlM9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YSFRNTE1QPS4pOiBE
RUZJTkVTICs9IEVOQUJMRV9YSFRNTE1QPTAKIApAQCAtMTQ0MSw2ICsxNDQyLDIxIEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPTEpIHsKICAgICAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIFNIQVJFRF9XT1JLRVJTPTEp
IHsKKyAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfU0hBUkVEX1dPUktF
UlM9MQorCisgICAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAgICAgd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5pZGwgXAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKKworICAgIFNPVVJD
RVMgKz0gXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIFwKKyAgICAgICAgd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgXAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5j
cHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICBGRUFUVVJF
X0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfVklERU89MQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdmM2E3NWMuLjQ2MTliZGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDEsMTEgKzY0MSwxNyBA
QAogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBG
QTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdE
NTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyog
U2NyaXB0U3RhdGUuY3BwICovOyB9OwogCQk0MTJBNjg0NzBGNkIwM0REMDAwRUE2NkUgLyogU2Ny
aXB0T2JqZWN0UXVhcmFudGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTJBNjg0NjBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5jcHAgKi87IH07CisJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3Vz
dG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTgwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29y
a2VyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3Ry
dWN0b3IuY3BwICovOyB9OworCQk0MTVCN0M1OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRX
b3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNw
cCAqLzsgfTsKKwkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgg
Ki87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVE
RjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLzsgfTsKIAkJNDE2RTc1QkYwRURG
OEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJNDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNj
cmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9
OwogCQk0MTZFNzVDQzBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkw
QzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQk0MTZGNDVGMDBFRDdC
MzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNDVFRjBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAw
ODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OworCQk0MThGODgwNTBGRjk1N0FG
MDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuaCAqLzsgfTsKIAkJNDE5NTM2NTEwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9i
amVjdFF1YXJhbnRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxOTUzNjUwMEY2ODIyMjQwMEQwQzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5l
LmggKi87IH07CiAJCTQxQkY3MDBCMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFC
RjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJ
CTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkw
MDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLzsgfTsKQEAgLTY1NCw2ICs2NjAsMTQg
QEAKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBD
MTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4
MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1
QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRU
eXBlLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29y
a2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgKi87IH07CisJCTQx
RDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENF
IC8qIEpTU2hhcmVkV29ya2VyLmggKi87IH07CisJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3Bw
ICovOyB9OworCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZG
NTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovOyB9OworCQk0MUUxQjFEMjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuaWRsICovOyB9OworCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hh
cmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3BwICovOyB9Owor
CQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRTBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07CisJCTQxRTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAv
KiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUUxQjFDRjBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAq
LzsgfTsKIAkJNDFGMDYwQ0QwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYw
NjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsK
IAkJNDFGMDYwQ0UwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0MwRjVF
RUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyB9OwogCQk0MUYwNjE2
QTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MTY5MEY1RUZC
REQwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXJDdXN0b20uY3BwICovOyB9OwpAQCAt
NTU3MywxMSArNTU4NywxNyBAQAogCQk0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEy
N0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEyQTY4NDYwRjZCMDNERDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJh
bnRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU0
MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyog
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVk
V29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNjIw
RkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENh
bGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3
MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRD
YWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3
QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4
Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3Ry
YWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RX
b3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NTM2NTAwRjY4MjIyNDAw
RDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkw
MDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NTg2LDYgKzU2MDYsMTQgQEAKIAkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNj
cmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYy
RiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1Qzcx
MDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRX
b3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJz
dHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5pZGw7IHBh
dGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0g
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRX
b3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0YwRkY1OTg2OTAw
NTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVk
V29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwQUEwRjVFRThCQjAwQTA3RUFDIC8qIEluc3BlY3RvckNv
bnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjBDQjBGNUVFQjJCMDBBMDdF
QUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRjA2MENDMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnNwZWN0b3JDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODUyLDcgKzk4ODAsMTMg
QEAKIAkJMkU0MzQ2MzEwRjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi8sCisJCQkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmggKi8sCisJCQkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmlkbCAqLywKIAkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyog
R2VuZXJpY1dvcmtlclRhc2suaCAqLywKKwkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyog
U2hhcmVkV29ya2VyLmNwcCAqLywKKwkJCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hh
cmVkV29ya2VyLmggKi8sCisJCQkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5pZGwgKi8sCiAJCQkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAg
Ki8sCiAJCQkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovLAogCQkJCTJF
NDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaWRsICovLApAQCAtMTMzODgsNiArMTM0
MjIsMTAgQEAKIAkJQkMxQTM3OTMwOTdDNkZCMTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTVCN0M2MjBGRjVBNzY3MDA2Nzcw
RjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oICovLAorCQkJCTQxNUI3QzU0MEZGNTk4
RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTVCN0M1
NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAq
LywKIAkJCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZC
MzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNENTMzNjMw
RUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCkBAIC0x
Mzk0NCw2ICsxMzk4MiwxMCBAQAogCQlFMUM4QkU0QjBFOEJEMEQxMDA2NENCN0QgLyogVGhyZWFk
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE4Rjg4
MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovLAorCQkJCTQxOEY4
ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8sCisJCQkJNDFEMDdB
N0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLywKKwkJCQk0MUQwN0E3
RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLywKIAkJCQlFMUM4QkU1QzBF
OEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIuY3BwICovLAogCQkJCUUxQ0FBNUM1MEU4QkQyMzYw
MEE3M0VDQSAvKiBKU1dvcmtlci5oICovLAogCQkJCUUxODI1NjhEMEVGMkIwMkQwMDkzMzI0MiAv
KiBKU1dvcmtlckNvbnRleHQuY3BwICovLApAQCAtMTY5MzQsNiArMTY5NzYsMTEgQEAKIAkJCQk5
M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3MEY3
IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDA3
QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTcwNDIsNiArMTcwODksOCBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5
MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFF
N0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDFFMUIxRDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg5NTEsNiArMTkwMDAsMTMgQEAK
IAkJCQk5M0YxOUIwNDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUUxQjFEMzBGRjU5ODY5
MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU3
MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUQwN0E3RTBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJD
dXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjk5MTBkCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApA
QCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorCisjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSAiQWJz
dHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTQWJzdHJhY3RX
b3JrZXI6Om1hcmsoKQoreworICAgIERPTU9iamVjdDo6bWFyaygpOworCisgICAgbWFya0lmTm90
TnVsbChtX2ltcGwtPm9uZXJyb3IoKSk7CisKKyAgICB0eXBlZGVmIEFic3RyYWN0V29ya2VyOjpF
dmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKKyAgICB0eXBlZGVmIEFic3RyYWN0
V29ya2VyOjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5lclZlY3RvcjsKKyAgICBFdmVudExpc3RlbmVy
c01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2ltcGwtPmV2ZW50TGlzdGVuZXJzKCk7CisgICAgZm9y
IChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgbWFwSXRlciA9IGV2ZW50TGlzdGVuZXJzLmJl
Z2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0ZW5lcnMuZW5kKCk7ICsrbWFwSXRlcikgeworICAg
ICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciB2ZWNJdGVyID0gbWFwSXRlci0+c2Vj
b25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFwSXRlci0+c2Vjb25kLmVuZCgpOyArK3ZlY0l0ZXIp
CisgICAgICAgICAgICAoKnZlY0l0ZXIpLT5tYXJrSlNGdW5jdGlvbigpOworICAgIH0KK30KKwor
SlNWYWx1ZSBKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZ2xvYmFsT2JqZWN0
LT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoYXJncy5hdCgxKSk7CisgICAgaWYgKCFsaXN0
ZW5lcikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaW1wbCgpLT5hZGRFdmVu
dExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2UoKSwg
YXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
fQorCitKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdsb2JhbE9iamVj
dC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKTsKKyAgICBpZiAoIWxpc3RlbmVyKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlz
dGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIsIGFyZ3MuYXQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgQWJzdHJhY3RXb3JrZXIqIGJhc2VPYmplY3QpCit7CisgICAg
Ly8gSnVzdCBjYWxsIHRoZSBKU0V2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uIG9mIHRvSlMoKSwg
d2hpY2ggYWxyZWFkeSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgaW1wbGVt
ZW50YXRpb25zLgorICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEV2ZW50VGFyZ2V0
Kj4oYmFzZU9iamVjdCkpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggMjIwMTNlYi4uYzA5NWJmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAj
aW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5oIgpAQCAtNDc2LDYgKzQ3NywxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93
Ojp3b3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCitKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20g
ZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dN
b2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyMDU4
MDk4Li4zY2U5ODJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTU2
LDYgKzU2LDExIEBACiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjaW5jbHVk
ZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDEsNiArMTA2LDExIEBAIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAgICAgICAgIHJldHVybiB0b0pTRE9N
R2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCisgICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0gdGFyZ2V0LT50
b1NoYXJlZFdvcmtlcigpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBzaGFyZWRXb3JrZXIp
OworI2VuZGlmCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxs
KCk7CiB9CkBAIC0xMzIsNiArMTQyLDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChXb3JrZXJDb250
ZXh0KQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgQ09OVkVSVF9U
T19FVkVOVF9UQVJHRVQoU2hhcmVkV29ya2VyKQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkMTdkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCIKKwor
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBDbGFzc0luZm8gSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiU2hhcmVkV29ya2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07
CisKK0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDog
RE9NT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKK3sKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNTaGFyZWRXb3JrZXJQcm90b3R5cGU6OnNlbGYoZXhl
YywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgLy8gSG9zdCBmdW5jdGlvbnMgaGF2ZSBhIGxl
bmd0aCBwcm9wZXJ0eSBkZXNjcmliaW5nIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgYXJndW1lbnRz
LgorICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihl
eGVjLCAyKSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7Cit9CisKK3N0YXRpYyBKU09i
amVjdCogY29uc3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVu
dHMiKTsKKworICAgIFVTdHJpbmcgc2NyaXB0VVJMID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVj
KTsKKyAgICBVU3RyaW5nIG5hbWUgPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29y
a2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBlYyk7
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIC8vIEZJWE1FOiB0b0pTKCkg
Y3JlYXRlcyBhbiBvYmplY3Qgd2hvc2UgcHJvdG90eXBlIGlzIGRlcml2ZWQgZnJvbSBsZXhpY2Fs
R2xvYmFsU2NvcGUsIHdoaWNoIGlzIGluY29ycmVjdCAoQnVnIDI3MDg4KQorICAgIHJldHVybiBh
c09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkpKTsKK30KKworQ29uc3RydWN0VHlw
ZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjb25zdHJ1Y3RTaGFyZWRXb3JrZXI7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0Owor
fQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURf
V09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU4YjJiNAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3JfaAor
I2RlZmluZSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yIDogcHVibGljIERPTU9i
amVjdCB7CisgICAgcHVibGljOgorICAgICAgICBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVh
bCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEm
KTsKKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3Jr
ZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NTMyOTgK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKworI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU1NoYXJl
ZFdvcmtlcjo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAgaWYgKE1lc3NhZ2VQ
b3J0KiBwb3J0ID0gaW1wbCgpLT5wb3J0KCkpIHsKKyAgICAgICAgRE9NT2JqZWN0KiB3cmFwcGVy
ID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCBwb3J0KTsKKyAgICAgICAgaWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1hcmtlZCgpKQor
ICAgICAgICAgICAgd3JhcHBlci0+bWFyaygpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01PYmplY3RzSW5jbHVkZS5oCmluZGV4IDkwZGVlYWIuLmU3ZDI3NDAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKQEAgLTE5OCw2ICsxOTgsMTEgQEAKICNp
bmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNlbmRpZiAvLyBXT1JLRVJTCiAKKyNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZiAvLyBTSEFSRURfV09SS0VSUworCiAjaWYgRU5BQkxF
KFhQQVRIKQogI2luY2x1ZGUgIlhQYXRoRXZhbHVhdG9yLmgiCiAjZW5kaWYgLy8gWFBBVEgKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SW5kZXguY3BwCmluZGV4IDc3NzIwMTYuLmYyZjRlN2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluZGV4LmNwcApAQCAtMzc2LDYgKzM3NiwxMSBAQAogI2luY2x1ZGUgIlY4V29ya2VyTmF2aWdh
dG9yLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRlICJW
OEFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IFY4Q2xhc3NJ
bmRleDo6R2V0RmFjdG9yeShWOFdyYXBwZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5kZXguaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCmlu
ZGV4IGIyMzhkNzAuLjUzZWVlYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCkBAIC02NSw2ICs2NSwx
NyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0
aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZ
UEVTKFYpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNkZWZpbmUgU0hB
UkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBWKFNIQVJFRFdPUktFUiwgU2hhcmVkV29ya2VyKQorCisjZGVmaW5lIFNIQVJF
RF9XT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgVihBQlNUUkFDVFdPUktFUiwgQWJzdHJhY3RXb3JrZXIpCisjZWxzZQorI2RlZmlu
ZSBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorI2RlZmluZSBT
SEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisKICNkZWZpbmUg
RE9NX05PREVfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3Rl
ckRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI2Nyw3ICsy
NzgsOCBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1
bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogI2RlZmluZSBBQ1RJVkVfRE9NX09CSkVDVF9UWVBF
UyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoTUVTU0FH
RVBPUlQsIE1lc3NhZ2VQb3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIFYoWE1MSFRUUFJFUVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJf
VFlQRVMoVikKKyAgICBXT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpF
Q1RfV1JBUFBFUl9UWVBFUyhWKQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0
IGludG8gdHdvIGhhbHZlcyBiZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxs
aW5vbnNlbnNlIGNyYXNoZXMgd2hlbiBtYWNyb3MgZ2V0CkBAIC0zNjUsNiArMzc3LDcgQEAgdHlw
ZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBs
YXRlRmFjdG9yeSkoKTsKICAgICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3IpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09CSkVDVF9U
WVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBW
SURFT19OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBTSEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBXT1JLRVJfTk9OTk9ERV9XUkFQUEVS
X1RZUEVTKFYpCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4NjBkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
KworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0
RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxp
dGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0
ZW5lcihBYnN0cmFjdFdvcmtlciogd29ya2VyLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Ym9vbCBmaW5kT25seSkKK3sKKyAgICBpZiAod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzV29ya2VyQ29udGV4dCgpKSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eSogd29ya2VyQ29udGV4dFByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojpy
ZXRyaWV2ZSgpOworICAgICAgICBBU1NFUlQod29ya2VyQ29udGV4dFByb3h5KTsKKyAgICAgICAg
cmV0dXJuIHdvcmtlckNvbnRleHRQcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5l
cih2YWx1ZSwgZmFsc2UsIGZpbmRPbmx5KTsKKyAgICB9CisKKyAgICBWOFByb3h5KiBwcm94eSA9
IFY4UHJveHk6OnJldHJpZXZlKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAg
ICBpZiAocHJveHkpCisgICAgICAgIHJldHVybiBmaW5kT25seSA/IHByb3h5LT5maW5kT2JqZWN0
RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpIDogcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2
ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQorCitBQ0NFU1NP
Ul9HRVRURVIoQWJzdHJhY3RXb3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5B
YnN0cmFjdFdvcmtlci5vbmVycm9yLl9nZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2Vy
ID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNz
SW5kZXg6OkFCU1RSQUNUV09SS0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAod29ya2VyLT5v
bmVycm9yKCkpIHsKKyAgICAgICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0
YXRpY19jYXN0PFY4T2JqZWN0RXZlbnRMaXN0ZW5lcio+KHdvcmtlci0+b25lcnJvcigpKTsKKyAg
ICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlz
dGVuZXJPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihBYnN0cmFjdFdvcmtl
ck9uZXJyb3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLm9uZXJyb3Iu
X3NldCIpOworICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9O
YXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIs
IGluZm8uSG9sZGVyKCkpOworICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxWOE9iamVjdEV2ZW50TGlzdGVuZXIqPih3b3JrZXItPm9uZXJyb3IoKSk7
CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsK
KyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBl
bmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJzdHJhY3RX
b3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVhciB0
aGUgbGlzdGVuZXIuCisgICAgICAgIHdvcmtlci0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3Rl
bmVyKHdvcmtlciwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAg
ICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgp
OworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwg
b2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd29ya2VyLT5zZXRPbmVycm9yKGxpc3Rl
bmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwg
dmFsdWUsIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlckFkZEV2
ZW50TGlzdGVuZXIpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLmFkZEV2
ZW50TGlzdGVuZXIoKSIpOworICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJB
Q1RXT1JLRVIsIGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gZ2V0RXZlbnRMaXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBp
ZiAobGlzdGVuZXIpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSk7CisgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgp
OworICAgICAgICB3b3JrZXItPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOworCisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwg
YXJnc1sxXSwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAg
ICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNM
KEFic3RyYWN0V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNfU1RBVFMoTCJE
T00uQWJzdHJhY3RXb3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CisgICAgQWJzdHJhY3RX
b3JrZXIqIHdvcmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdv
cmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7CisKKyAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtl
ciwgYXJnc1sxXSwgdHJ1ZSk7CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0
eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUg
PSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5yZW1vdmVFdmVudExp
c3RlbmVyKHR5cGUsIGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKworICAgICAgICByZW1v
dmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJz
dHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAppbmRleCA2MDgzYWM1Li43NjA5NTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRJbnRl
cm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQga0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtBYnN0cmFj
dFdvcmtlckludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCArIDE7CisjZW5kaWYKKwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dD
b25zb2xlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dIaXN0b3J5SW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtE
T01XaW5kb3dMb2NhdGlvbmJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgMjsKQEAgLTQ4Nyw2ICs0OTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3RlbmVyKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKEFic3RyYWN0V29ya2VyT25lcnJvcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soQWJzdHJhY3RXb3JrZXJBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhBYnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yKTsKKyNlbmRpZgorCiAjdW5kZWYg
REVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVDSwogI3VuZGVmIERFQ0xBUkVfTkFNRURfQUNDRVNT
X0NIRUNLCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVk
V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29y
a2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWIyZjhl
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRX
b3JrZXJDdXN0b20uY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4
T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJW
OFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQUxM
QkFDS19GVU5DX0RFQ0woU2hhcmVkV29ya2VyQ29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRT
KEwiRE9NLlNoYXJlZFdvcmtlci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIHY4OjpUcnlDYXRjaCB0cnlD
YXRjaDsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRv
U3RyaW5nKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gYXJnc1sxXS0+VG9T
dHJpbmcoKTsKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpKTsKKworICAgIGlmIChzY3JpcHRVcmwuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgLy8gR2V0IHRo
ZSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IDA7CisgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IFdv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAocHJveHkpCisg
ICAgICAgIGNvbnRleHQgPSBwcm94eS0+d29ya2VyQ29udGV4dCgpOworICAgIGVsc2UgeworICAg
ICAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKCk7CisgICAgICAgIGlm
ICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBj
b250ZXh0ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSB3
b3JrZXIgb2JqZWN0LgorICAgIC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdv
IG91dCBvZiBzY29wZSBiZWNhdXNlIHdlIGFsc28gY2FsbCBTZXRET01XcmFwcGVyKCksIHdoaWNo
IGVmZmVjdGl2ZWx5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIG9iai4KKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyPiBvYmogPSBTaGFyZWRXb3JrZXI6OmNy
ZWF0ZSh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJsKSwgdG9XZWJDb3JlU3RyaW5nKG5hbWUpLCBj
b250ZXh0LCBlYyk7CisKKyAgICAvLyBTZXR1cCB0aGUgc3RhbmRhcmQgd3JhcHBlciBvYmplY3Qg
aW50ZXJuYWwgZmllbGRzLgorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlck9iamVj
dCA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhQcm94eTo6c2V0RE9NV3JhcHBlcih3cmFwcGVyT2Jq
ZWN0LCBWOENsYXNzSW5kZXg6OlNIQVJFRFdPUktFUiwgb2JqLmdldCgpKTsKKworICAgIG9iai0+
cmVmKCk7CisgICAgVjhQcm94eTo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5n
ZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7CisK
KyAgICByZXR1cm4gd3JhcHBlck9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDA2
Y2VhMDcuLjQzN2Y1YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTk1LDYgKzk1LDEzIEBAIFdvcmtl
ckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1dvcmtlckNvbnRleHQoKQogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCitTaGFyZWRXb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1No
YXJlZFdvcmtlcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBOREVC
VUcKIHZvaWQgZm9yYmlkRXZlbnREaXNwYXRjaCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2NjI5MDJl
Li43M2EzMmUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXI7CiAgICAgY2xhc3MgQXRvbWljU3Ry
aW5nOwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsK
ICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgV29ya2VyOwogICAg
IGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CkBAIC03MCw2
ICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2VyQ29u
dGV4dCogdG9Xb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKKyAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7Cisj
ZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBhMjNk
NzA4Li5iZmRlYmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDYxLDYgKzQ2MSwxMCBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFdvcmtlckNvbnN0
cnVjdG9yIFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAK
KyNpZiBkZWZpbmVkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJiYgRU5BQkxFX1NIQVJFRF9XT1JL
RVJTCisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25z
dHJ1Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNl
bmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAg
ICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43YWI0ZjhiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFjdFdvcmtlcjo6QWJzdHJh
Y3RXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQoreworfQorCitBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0
V29ya2VyKCkKK3sKK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBl
dmVudExpc3RlbmVyLCBib29sKQoreworICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBp
dGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0g
bV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5l
cnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1f
ZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgICAg
ICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMu
YmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIp
IHsKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVu
ZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBl
LCBsaXN0ZW5lcnMpOworICAgIH0KK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciog
ZXZlbnRMaXN0ZW5lciwgYm9vbCkKK3sKKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09
IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVy
VmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rv
cjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3Rl
bmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGlm
ICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGxpc3RlbmVy
cy5yZW1vdmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEFic3RyYWN0V29ya2VyOjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVj
ID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0g
bV9ldmVudExpc3RlbmVycy5nZXQoZXZlbnQtPnR5cGUoKSk7CisgICAgZm9yIChMaXN0ZW5lclZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzQ29weS5iZWdpbigp
OyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzQ29weS5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsK
KyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJl
bnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50
KGV2ZW50LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuICFldmVudC0+ZGVmYXVs
dFByZXZlbnRlZCgpOworfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJv
ckV2ZW50KCkKK3sKKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkVycm9yTGlzdGVu
ZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3Vy
cmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkVycm9yTGlzdGVuZXItPmhhbmRsZUV2ZW50
KGV2dC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9
CisKK3ZvaWQgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQpCit7CisgICAgLy9GSVhNRTogR2VuZXJhdGUgYW4g
RXJyb3JFdmVudCBpbnN0ZWFkIG9mIGEgc2ltcGxlIGV2ZW50CisgICAgZGlzcGF0Y2hMb2FkRXJy
b3JFdmVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNmQ4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBYnN0cmFj
dFdvcmtlcl9oCisjZGVmaW5lIEFic3RyYWN0V29ya2VyX2gKKworI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisgICAgY2xhc3MgQWJz
dHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgcHVibGljOgorICAgICAg
ICAvLyBFdmVudFRhcmdldCBBUElzCisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICAv
LyBVdGlsaXR5IHJvdXRpbmVzIHRvIGdlbmVyYXRlIGFwcHJvcHJpYXRlIGVycm9yIGV2ZW50cyBm
b3IgbG9hZGluZyBhbmQgc2NyaXB0IGV4Y2VwdGlvbnMuCisgICAgICAgIHZvaWQgZGlzcGF0Y2hM
b2FkRXJyb3JFdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoU2NyaXB0RXJyb3JFdmVudChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCk7
CisKKyAgICAgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAg
ICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3Rl
bmVyLmdldCgpOyB9CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVy
PiA+IExpc3RlbmVyVmVjdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5lcnNNYXA7CisgICAgICAgIEV2ZW50TGlzdGVu
ZXJzTWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KKwor
ICAgICAgICB1c2luZyBSZWZDb3VudGVkPEFic3RyYWN0V29ya2VyPjo6cmVmOworICAgICAgICB1
c2luZyBSZWZDb3VudGVkPEFic3RyYWN0V29ya2VyPjo6ZGVyZWY7CisKKyAgICAgICAgQWJzdHJh
Y3RXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAgICB2aXJ0dWFsIH5BYnN0
cmFjdFdvcmtlcigpOworCisgICAgcHJpdmF0ZToKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1f
b25FcnJvckxpc3RlbmVyOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVu
ZXJzOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTSEFSRURfV09SS0VSUykKKworI2VuZGlmIC8vIEFic3RyYWN0V29ya2VyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgYi9XZWJDb3JlL3dvcmtlcnMv
QWJzdHJhY3RXb3JrZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEy
MzRjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
aWRsCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBDb25kaXRpb25hbD1TSEFSRURfV09SS0VSUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBBYnN0cmFjdFdvcmtlciB7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25lcnJvcjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAg
ICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkMzBkMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQor
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmKQorICAgIDogQWJzdHJhY3RXb3JrZXIoY29udGV4dCkKK3sKKyAgICAv
LyBQbGFjZWhvbGRlciAtIHVsdGltYXRlbHkgd2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRo
ZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LgorfQorCitTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3Jr
ZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjM2YzdkODUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyX2gK
KyNkZWZpbmUgU2hhcmVkV29ya2VyX2gKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXIgOiBwdWJsaWMg
QWJzdHJhY3RXb3JrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkV29ya2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyKHVy
bCwgbmFtZSwgY29udGV4dCwgZWMpKTsKKyAgICAgICAgfQorICAgICAgICB+U2hhcmVkV29ya2Vy
KCk7CisgICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0Lmdl
dCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCkg
eyByZXR1cm4gdGhpczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkV29ya2VyKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBtX3Bv
cnQ7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhcmVk
V29ya2VyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIGIv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDk0NzVmNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuaWRsCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBp
bnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1TSEFSRURfV09SS0VSUywKKyAgICAgICAg
Q3VzdG9tTWFya0Z1bmN0aW9uLAorICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKKyAg
ICAgICAgR2VuZXJhdGVUb0pTCisgICAgXSBTaGFyZWRXb3JrZXIgOiBBYnN0cmFjdFdvcmtlciB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworICAgIH07CisK
K30KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggOTExNTUyOC4uOWNmMTI0YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0x
MSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hBUkVEX1dPUktFUlMp
IGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBBZGRlZCBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpIGZsYWcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDctMDkgIEJy
aWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggYmU5NmQyNS4uMWFkZjY3MCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zOSw2ICsz
OSw3IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFC
TEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUjsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOworRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwog
RU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9T
VkdfQU5JTUFUSU9OOwogRU5BQkxFX1NWR19BU19JTUFHRSA9IEVOQUJMRV9TVkdfQVNfSU1BR0U7
CkBAIC01Miw0ICs1Myw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxF
X0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FO
SU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAk
KEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5B
QkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RP
TV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdO
X09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDRjZGNiYzcuLjQ1MzkwNWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0xMSAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hBUkVEX1dPUktFUlMpIGZsYWcg
YW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAt
LXNoYXJlZC13b3JrZXJzICh0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQpCisKKyAgICAgICAgKiBTY3Jp
cHRzL2J1aWxkLXdlYmtpdDoKKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3RzCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CmluZGV4IGY0OWY3OTkuLmQ0MWE4NmQgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0CkBAIC00NiwxMCArNDYsMTAgQEAgbXkgJG1ha2VBcmdzOwogCiBteSAoJHRocmVlRFJl
bmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGRhdGFiYXNlU3VwcG9y
dCwgJGRvbVN0b3JhZ2VTdXBwb3J0LAogICAgICRmaWx0ZXJzU3VwcG9ydCwgJGdlb2xvY2F0aW9u
U3VwcG9ydCwgJGdub21lS2V5cmluZ1N1cHBvcnQsICRpY29uRGF0YWJhc2VTdXBwb3J0LAotICAg
ICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9y
dCwgJHN2Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LAotICAgICRzdmdBc0ltYWdlU3Vw
cG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdGb250c1N1cHBvcnQsICRzdmdG
b3JlaWduT2JqZWN0U3VwcG9ydCwKLSAgICAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwg
JHdtbFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0
LAotICAgICRjb3ZlcmFnZVN1cHBvcnQpOworICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0
LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LCAk
c3ZnU3VwcG9ydCwKKyAgICAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0
LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKKyAgICAkc3Zn
Rm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd21s
U3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LAorICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9y
dCwgJGNvdmVyYWdlU3VwcG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9
PiAiM2QtcmVuZGVyaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIDNEIHJlbmRlcmluZyBzdXBwb3J0IiwK
QEAgLTg1LDYgKzg1LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJvZmZs
aW5lLXdlYi1hcHBsaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgT2ZmbGluZSBXZWIgQXBwbGlj
YXRpb24gU3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkb2ZmbGluZVdlYkFwcGxpY2F0aW9u
U3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gInNoYXJlZC13b3JrZXJzIiwgZGVzYyA9PiAi
VG9nZ2xlIFNoYXJlZFdvcmtlcnMgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9T
SEFSRURfV09SS0VSUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRzaGFyZWRXb3JrZXJzU3Vw
cG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInN2ZyIsIGRlc2MgPT4gIlRvZ2dsZSBTVkcgc3Vw
cG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9TVkciLCBkZWZhdWx0ID0+IDEsIHZhbHVl
ID0+IFwkc3ZnU3VwcG9ydCB9LAogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1
cmUuYWMKaW5kZXggYjNmNGE3Mi4uY2EzZWJmNSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisr
KyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDA5LDYgKzQwOSwxNCBAQCBBQ19BUkdfRU5BQkxFKHdtbCwK
ICAgICAgICAgICAgICAgW10sW2VuYWJsZV93bWw9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5h
YmxlX3dtbF0pCiAKKyMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgU2hhcmVkV29ya2VycyBzdXBw
b3J0CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFNoYXJlZFdvcmtlcnMgc3Vw
cG9ydF0pCitBQ19BUkdfRU5BQkxFKHNoYXJlZF93b3JrZXJzLAorICAgICAgICAgICAgICBBQ19I
RUxQX1NUUklORyhbLS1lbmFibGUtc2hhcmVkLXdvcmtlcnNdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbZW5hYmxlIHN1cHBvcnQgZm9yIFNoYXJlZFdvcmtlcnMgW2RlZmF1bHQ9bm9d
XSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfc2hhcmVkX3dvcmtlcnM9Im5vIl0pCitBQ19N
U0dfUkVTVUxUKFskZW5hYmxlX3NoYXJlZF93b3JrZXJzXSkKKwogIyBjaGVjayB3aGV0aGVyIHRv
IGVuYWJsZSBXZWIgV29ya2VycyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8g
ZW5hYmxlIFdlYiBXb3JrZXJzIHN1cHBvcnRdKQogQUNfQVJHX0VOQUJMRSh3b3JrZXJzLApAQCAt
NjkxLDYgKzY5OSw3IEBAIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfQ09WRVJBR0VdLFt0ZXN0ICIk
ZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfRkFTVF9N
QUxMT0NdLFt0ZXN0ICIkZW5hYmxlX2Zhc3RfbWFsbG9jIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElP
TkFMKFtFTkFCTEVfV01MXSxbdGVzdCAiJGVuYWJsZV93bWwiID0gInllcyJdKQogQU1fQ09ORElU
SU9OQUwoW0VOQUJMRV9XT1JLRVJTXSxbdGVzdCAiJGVuYWJsZV93b3JrZXJzIiA9ICJ5ZXMiXSkK
K0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfU0hBUkVEX1dPUktFUlNdLFt0ZXN0ICIkZW5hYmxlX3No
YXJlZF93b3JrZXJzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtTVkdfRkxBR1NdLFt0ZXN0
ICIkc3ZnX2ZsYWdzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtIVE1MX0ZMQUdTXSxbdGVz
dCAiJGh0bWxfZmxhZ3MiID0gInllcyJdKQogCkBAIC03MjksNiArNzM4LDcgQEAgRmVhdHVyZXM6
CiAgSFRNTDUgY2xpZW50LXNpZGUgZGF0YWJhc2Ugc3RvcmFnZSBzdXBwb3J0ICAgICAgICAgICAg
ICAgOiAkZW5hYmxlX2RhdGFiYXNlCiAgSFRNTDUgdmlkZW8gZWxlbWVudCBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3ZpZGVvCiAgSWNvbiBkYXRhYmFzZSBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2ljb25f
ZGF0YWJhc2UKKyBTaGFyZWRXb3JrZXJzIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICRlbmFibGVfc2hhcmVkX3dvcmtlcnMKICBTVkcgc3VwcG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnCiAgU1ZH
IGFuaW1hdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAk
ZW5hYmxlX3N2Z19hbmltYXRpb24KICBTVkcgZm9udHMgc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnX2ZvbnRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32593</attachid>
            <date>2009-07-10 16:53:26 -0700</date>
            <delta_ts>2009-07-11 10:36:44 -0700</delta_ts>
            <desc>More style fixups per levin&apos;s review.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>92126</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OGVjMWU0Li43YzM1NDI4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDggIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgKiBjb25maWd1cmUuYWM6
CisKIDIwMDktMDctMDcgIE5vcmJlcnQgTGVzZXIgIDxub3JiZXJ0Lmxlc2VyQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWUx
NTc5Li43N2MyZGRmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMTEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFn
IGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIChvZmYgYnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3Rz
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBiL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDAzYzYxZWQuLjNmODFkZmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zOCw2ICsz
OCw3IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFC
TEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUjsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOworRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwog
RU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9T
VkdfQU5JTUFUSU9OOwogRU5BQkxFX1NWR19BU19JTUFHRSA9IEVOQUJMRV9TVkdfQVNfSU1BR0U7
CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykg
JChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1B
R0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3ODdlNDRhLi44NDM4MWY1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAg
VW5pdCB0ZXN0cyBmb3IgbmV3IFNoYXJlZFdvcmtlciBBUElzIChkaXNhYmxlZCBieSBkZWZhdWx0
KS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4
cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlz
dGVuZXIuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisKIDIwMDktMDctMTAgIFNpbW9uIEhhdXNtYW5u
ICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBObyBSZXZpZXcsIGp1c3Qgc2tpcHBp
bmcgYSBuZXcgdGVzdCBmb3IgUXQgRFJULgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggZjg5MWU0
MC4uODEyNDk4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNDM0LDYgKzE0MzQsMTEgQEAg
d2luZG93LlNWR1VuaXRUeXBlcy5wcm90b3R5cGUgW29iamVjdCBTVkdVbml0VHlwZXNQcm90b3R5
cGVdCiB3aW5kb3cuU1ZHVW5pdFR5cGVzLnByb3RvdHlwZS5TVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YIFtudW1iZXJdCiB3aW5kb3cuU1ZHVW5pdFR5cGVzLnByb3RvdHlwZS5TVkdfVU5J
VF9UWVBFX1VOS05PV04gW251bWJlcl0KIHdpbmRvdy5TVkdVbml0VHlwZXMucHJvdG90eXBlLlNW
R19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UgW251bWJlcl0KK3dpbmRvdy5TaGFyZWRXb3JrZXIg
W29iamVjdCBTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5TaGFyZWRXb3JrZXIucHJv
dG90eXBlIFtvYmplY3QgU2hhcmVkV29ya2VyUHJvdG90eXBlXQord2luZG93LlNoYXJlZFdvcmtl
ci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCit3aW5kb3cuU2hhcmVkV29y
a2VyLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50IFtmdW5jdGlvbl0KK3dpbmRvdy5TaGFyZWRXb3Jr
ZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgW2Z1bmN0aW9uXQogd2luZG93LlN0b3Jh
Z2UgW29iamVjdCBTdG9yYWdlQ29uc3RydWN0b3JdCiB3aW5kb3cuU3RvcmFnZS5wcm90b3R5cGUg
W29iamVjdCBTdG9yYWdlUHJvdG90eXBlXQogd2luZG93LlN0b3JhZ2VFdmVudCBbb2JqZWN0IFN0
b3JhZ2VFdmVudENvbnN0cnVjdG9yXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9n
bG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKaW5kZXggMzU3ZjA3MC4uYWJiYWIyMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0CkBAIC0xNDUsNiArMTQ1LDcgQEAgUEFTUyBTVkdUZXh0Q29udGVudEVsZW1lbnQudG9T
dHJpbmcoKSBpcyAnW29iamVjdCBTVkdUZXh0Q29udGVudEVsZW1lbnRDb25zdHJ1Y3QKIFBBU1Mg
U1ZHVGV4dFBhdGhFbGVtZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU1ZHVGV4dFBhdGhFbGVt
ZW50Q29uc3RydWN0b3JdJwogUEFTUyBTVkdUcmFuc2Zvcm0udG9TdHJpbmcoKSBpcyAnW29iamVj
dCBTVkdUcmFuc2Zvcm1Db25zdHJ1Y3Rvcl0nCiBQQVNTIFNWR1VuaXRUeXBlcy50b1N0cmluZygp
IGlzICdbb2JqZWN0IFNWR1VuaXRUeXBlc0NvbnN0cnVjdG9yXScKK1BBU1MgU2hhcmVkV29ya2Vy
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU2hhcmVkV29ya2VyQ29uc3RydWN0b3JdJwogUEFTUyBT
dG9yYWdlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU3RvcmFnZUNvbnN0cnVjdG9yXScKIFBBU1Mg
U3RvcmFnZUV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU3RvcmFnZUV2ZW50Q29uc3RydWN0
b3JdJwogUEFTUyBTdHlsZVNoZWV0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgU3R5bGVTaGVldENv
bnN0cnVjdG9yXScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yMjRjMWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOSBAQAorVGVzdCBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0
eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGgg
RE9ORS4KKworUEFTUzogdG9TdHJpbmcgZXhjZXB0aW9uIHByb3BhZ2F0ZWQgY29ycmVjdGx5Lgor
UEFTUzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFu
IGV4Y2VwdGlvbiAoUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQu
KQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1l
bnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzKQorUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQg
bmFtZSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cykKK1BBU1M6IFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciBzdWNjZWVkZWQ6IFtvYmpl
Y3QgU2hhcmVkV29ya2VyXQorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTQ3ZTZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3Iu
aHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDU5IEBACis8Ym9keT4KKzxwPlRlc3QgU2hhcmVkV29y
a2VyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQ
QVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9k
aXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hhcmVkV29ya2VyKHt0b1N0cmluZzpmdW5jdGlv
bigpe3Rocm93ICJleGNlcHRpb24ifX0sICJuYW1lIikKKyAgICBsb2coIkZBSUw6IHRvU3RyaW5n
IGV4Y2VwdGlvbiBub3QgcHJvcGFnYXRlZC4iKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgaWYgKGV4
ID09ICJleGNlcHRpb24iKQorICAgICAgICBsb2coIlBBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBw
cm9wYWdhdGVkIGNvcnJlY3RseS4iKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDogdW5l
eHBlY3RlZCBleGNlcHRpb24gKCIgKyBleCArICIpIHJlY2VpdmVkIGluc3RlYWQgb2Ygb25lIHBy
b3BhZ2F0ZWQgZnJvbSB0b1N0cmluZy4iKTsKK30KKwordHJ5IHsKKyAgICB2YXIgZm9vID0ge3Rv
U3RyaW5nOmZ1bmN0aW9uKCl7bmV3IFdvcmtlcihmb28pfX0KKyAgICBuZXcgU2hhcmVkV29ya2Vy
KGZvbywgbmFtZSk7CisgICAgbG9nKCJGQUlMOiBubyBleGNlcHRpb24gd2hlbiB0cnlpbmcgdG8g
Y3JlYXRlIHdvcmtlcnMgcmVjdXJzaXZlbHkiKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJQ
QVNTOiB0cnlpbmcgdG8gY3JlYXRlIHdvcmtlcnMgcmVjdXJzaXZlbHkgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOworfQorCit0cnkgeworICAgIG5ldyBTaGFyZWRXb3Jr
ZXIoKTsKKyAgICBsb2coIkZBSUw6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciB3
aXRob3V0IGFyZ3VtZW50cyBkaWQgbm90IHJlc3VsdCBpbiBhbiBleGNlcHRpb24iKTsKK30gY2F0
Y2ggKGV4KSB7CisgICAgbG9nKCJQQVNTOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0
b3Igd2l0aG91dCBhcmd1bWVudHMgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uICgiICsgZXggKyAi
KSIpOworfQorCit0cnkgeworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNv
dXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOworICAgIGxvZygiRkFJTDogQ29uc3RydWN0b3Igc3Vj
Y2VlZGVkIHdoZW4gbm8gbmFtZSBpcyBwYXNzZWQiKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9n
KCJQQVNTOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Igd2l0aG91dCBuYW1lIHJl
c3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICB2
YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMi
LCAibmFtZSIpOworICAgIGxvZyAoIlBBU1M6IFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciBzdWNj
ZWVkZWQ6ICIgKyB3b3JrZXIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBsb2coIkZBSUw6IGludm9r
aW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKCIg
KyBleCArICIpIik7Cit9CisKK2xvZygiRE9ORSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NzA0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0IFNoYXJlZFdvcmtlciBldmVudCBsaXN0ZW5l
ci4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGgg
RE9ORS4KKworU1VDQ0VTUzogTGlzdGVuZXIgd2FzIGNhbGxlZC4KK1NVQ0NFU1M6IExpc3RlbmVy
IHdhcyBub3QgY2FsbGVkIGFmdGVyIHJlbW92YWwuCitTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2Fs
bGVkIGFmdGVyIEdDLgorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNhYmxl
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTMzZmU3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlz
dGVuZXIuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDczIEBACis8Ym9keT4KKzxwPlRlc3QgU2hh
cmVkV29ya2VyIGV2ZW50IGxpc3RlbmVyLiBTaG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBt
ZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNv
bW1vbi5qcyIsICJmb29iYXIiKTsKK3ZhciBudW1MaXN0ZW5lckNhbGxzID0gMDsKK2Z1bmN0aW9u
IGNvdW50TGlzdGVuZXJDYWxsYmFja3MoZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUgIT0g
ImZvbyIpCisgICAgICAgIGxvZygiRkFJTDogUmVjZWl2ZWQgdW5leHBlY3RlZCBldmVudDogIiAr
IGV2ZW50LnR5cGUpOworICAgIG51bUxpc3RlbmVyQ2FsbHMrKzsKK30KK3dvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCJmb28iLCBjb3VudExpc3RlbmVyQ2FsbGJhY2tzLCBmYWxzZSk7Cit2YXIgZXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnRzIik7CitldmVudC5pbml0RXZlbnQoImZv
byIsIGZhbHNlLCBmYWxzZSk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVt
TGlzdGVuZXJDYWxscyA9PSAxKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2Fs
bGVkLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVyIHdhcyBub3QgY2FsbGVk
LiIpOworfQorCit3b3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9vIiwgY291bnRMaXN0ZW5l
ckNhbGxiYWNrcywgZmFsc2UpOword29ya2VyLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworaWYgKG51
bUxpc3RlbmVyQ2FsbHMgPT0gMSkgeworICAgIGxvZygiU1VDQ0VTUzogTGlzdGVuZXIgd2FzIG5v
dCBjYWxsZWQgYWZ0ZXIgcmVtb3ZhbC4iKTsKK30gZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0
ZW5lciB3YXMgY2FsbGVkIGFmdGVyIHJlbW92YWwuIik7Cit9CisKKy8vIFRlc3QgdG8gbWFrZSBz
dXJlIHRoYXQgZXZlbnQgbGlzdGVuZXJzIHN1cnZpdmUgR0MuCit3b3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigiZm9vIiwgY3JlYXRlTmV3TGlzdGVuZXIoY291bnRMaXN0ZW5lckNhbGxiYWNrcyksIGZh
bHNlKTsKK2djKCk7Cit3b3JrZXIuZGlzcGF0Y2hFdmVudChldmVudCk7CitpZiAobnVtTGlzdGVu
ZXJDYWxscyA9PSAyKSB7CisgICAgbG9nKCJTVUNDRVNTOiBMaXN0ZW5lciB3YXMgY2FsbGVkIGFm
dGVyIEdDLiIpOworfSBlbHNlIHsKKyAgICBsb2coIkZBSUw6IExpc3RlbmVyIHdhcyBub3QgY2Fs
bGVkIGFmdGVyIEdDLiIpOworfQorCisKK2xvZygiRE9ORSIpOworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisK
K2Z1bmN0aW9uIGNyZWF0ZU5ld0xpc3RlbmVyKGZ1bmMpCit7CisgIHJldHVybiBmdW5jdGlvbihl
dmVudCkgeyBmdW5jKGV2ZW50KTsgfTsKK30KKworZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3
aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3Qo
KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJi
YWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBh
IGNvbGxlY3QpLgorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30K
KworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ4OTA2Yi4uNDcyOWUwZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAor
MjAwOS0wNy0xMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpIGZsYWcgYW5kIGRlZmluZSBTaGFyZWRXb3JrZXIgQVBJcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIKKworICAgICAgICBJbml0
aWFsIElETCBkZWZpbml0aW9uIGFuZCBiaW5kaW5ncyBmb3IgU2hhcmVkV29ya2Vycy4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICBB
ZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEFkZGVkIG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2Vy
IHN1cHBvcnQuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIG5ldyBm
aWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtl
ciBzdXBwb3J0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjptYXJrKToKKyAgICAgICAgQ3VzdG9tIG1h
cmsgaGFuZGxlciB0aGF0IG1hcmtzIHRoZSBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIChXZWJD
b3JlOjpKU0Fic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6dG9KUyk6CisgICAgICAgIEN1c3RvbSB0b0pTIGhhbmRs
ZXIgd2hpY2ggZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiB2YXJpb3VzIHN1YmNsYXNzZXMuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnNoYXJlZFdvcmtlcik6CisgICAgICAgIFNoYXJlZFdvcmtlciBjb25z
dHJ1Y3RvciAob25seSBlbmFibGVkIHdoZW4gU0hBUkVEX1dPUktFUlMgaXMKKyAgICAgICAgZW5h
YmxlZCkuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAg
ICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRvL2Zyb20gU2hhcmVkV29ya2Vycy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFNoYXJlZFdv
cmtlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6Om1hcmsp
OgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlvbiB0aGF0IG1hcmtzIHRoZSBpbnRlcm5hbCBN
ZXNzYWdlUG9ydC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oOgor
ICAgICAgICBVcGRhdGVkIHRvIGluY2x1ZGUgbmV3IGhlYWRlciBmaWxlcy4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NF
VFRFUik6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBW
OCBoYW5kbGVycyBmb3IgYWRkL3JlbW92ZUV2ZW50TGlzdGVuZXIoKS4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAgICBDdXN0b20gY29uc3RydWN0b3IgZm9yIFNo
YXJlZFdvcmtlci4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBkb20vRXZlbnRU
YXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RX
b3JrZXI6OkFic3RyYWN0V29ya2VyKToKKyAgICAgICAgQ29tbW9uIGJhc2VjbGFzcyBmb3IgU2hh
cmVkV29ya2VyIGFuZCAoc29vbikgV29ya2VyLiBUaGUgZnVuY3Rpb25zIGJlbG93IHdlcmUgY29w
aWVkIGZyb20gV29ya2VyLmNwcC4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBy
ZWZhY3RvcmluZyBXb3JrZXIgdG8gZGVyaXZlIGZyb20gQWJzdHJhY3RXb3JrZXIgdG8gZW5hYmxl
IGNvZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjp+QWJzdHJh
Y3RXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoTG9hZEVycm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0RXJy
b3JFdmVudCk6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOiBBZGRlZC4KKyAg
ICAgICAgRGVmaW5pdGlvbnMgb2YgZnVuY3Rpb25hbGl0eSBzaGFyZWQgYnkgV29ya2VyLmggYW5k
IFNoYXJlZFdvcmtlci5oLiBJbiBhIGZ1dHVyZSBwYXRjaCwgV29ya2VyIHdpbGwgZGVyaXZlIGZy
b20gQWJzdHJhY3RXb3JrZXIuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6
c2V0T25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6b25lcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6ZXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiB3
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hh
cmVkV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtl
cik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXI6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjp0b1NoYXJlZFdv
cmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsOiBBZGRlZC4KKwogMjAw
OS0wNy0xMCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MDQ4NzQxPiBSRUdSRVNTSU9OOiBFcnJvciBhYm91dCBtaXNzaW5n
IFN3TWVudVguZGxsIG9wZW5pbmcgcGFnZXMgd2l0aCBTaG9ja3dhdmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGJlOTZkMjUuLjFhZGY2
NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
ID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKK0VOQUJMRV9TSEFSRURf
V09SS0VSUyA9IDsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJ
T04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKIEVOQUJMRV9TVkdfQVNfSU1BR0UgPSBFTkFCTEVf
U1ZHX0FTX0lNQUdFOwpAQCAtNTIsNCArNTMsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9X
T1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFH
UklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dN
TCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
T01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2ZjFmNjU0Li45ZjNjZTBmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC00NSw2ICs0NSw3IEBAIFZQQVRIID0gXAogCiBET01fQ0xBU1NFUyA9IFwKICAgICBB
YnN0cmFjdFZpZXcgXAorICAgIEFic3RyYWN0V29ya2VyIFwKICAgICBBdHRyIFwKICAgICBCYXJJ
bmZvIFwKICAgICBDREFUQVNlY3Rpb24gXApAQCAtMjAwLDYgKzIwMSw3IEBAIERPTV9DTEFTU0VT
ID0gXAogICAgIFJhbmdlIFwKICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBcCisgICAg
U2hhcmVkV29ya2VyIFwKICAgICBTUUxFcnJvciBcCiAgICAgU1FMUmVzdWx0U2V0IFwKICAgICBT
UUxSZXN1bHRTZXRSb3dMaXN0IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJhYTU5Y2IuLjUzYTdiMjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMjQ5LDYgKzI0OSw4IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL01p
bWVUeXBlQXJyYXkuaWRsIFwKIAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmlkbCBcCiAJV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkFycmF5LmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmlkbCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwg
XAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwgXApAQCAtMjMzOSw2ICsyMzQx
LDI3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCiBlbmRpZgogCisjIC0tLQorIyBTaGFyZWRXb3JrZXIgc3VwcG9ydAorIyAtLS0KK2lmIEVO
QUJMRV9TSEFSRURfV09SS0VSUworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxF
X1NIQVJFRF9XT1JLRVJTPTEKKword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfU0hB
UkVEX1dPUktFUlM9MQorCit3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hh
cmVkV29ya2VyQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNw
cCBcCisJV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggXAorCVdlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKKwor
ZW5kaWYKKwogIyAtLS0tCiAjIFdNTCBTdXBwb3J0CiAjIC0tLS0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDIwMGM5My4uMTdi
MDVmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzMCw2ICszMzAsOCBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdWaWV3U3Bl
Yy5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tQW5kUGFuLmlkbCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR1pvb21FdmVudC5pZGwnLAorICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuaWRsJywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwnLAogICAg
ICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwn
LApAQCAtNTc1LDYgKzU3Nyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU3RyaW5nU291
cmNlUHJvdmlkZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3Jr
ZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUGl4ZWxB
cnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAnLApAQCAtNjM4LDYgKzY0MSw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTWF0cml4Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhUcmVlV2Fsa2Vy
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwJywKQEAgLTMyNDcsNyArMzI1MSwxMSBAQAogICAgICAgICAg
ICAgJ3N2Zy9TVkdab29tRXZlbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHWm9vbUV2ZW50
LmgnLAogICAgICAgICAgICAgJ3N2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgnLAorICAg
ICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwJywKKyAgICAgICAgICAgICd3b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvR2VuZXJpY1dvcmtl
clRhc2suaCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwJywKKyAgICAg
ICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dv
cmtlci5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmgnLAogICAgICAgICAgICAg
J3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTI2NjQzOS4uZTIwZjA4NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0x
MjMsNiArMTIzLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJTkdMRV9USFJFQURFRD0x
KSB7CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hTTFQ9Lik6IERFRklORVMgKz0gRU5BQkxF
X1hTTFQ9MAogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVO
QUJMRV9YQkw9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9Lik6IERFRklORVMgKz0g
RU5BQkxFX1dNTD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NIQVJFRF9XT1JLRVJTPS4p
OiBERUZJTkVTICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0wCiAhY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1dPUktFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX1dPUktFUlM9MQogIWNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9YSFRNTE1QPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YSFRNTE1QPTAK
IApAQCAtMTQ0MSw2ICsxNDQyLDIxIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJT
PTEpIHsKICAgICAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCiB9CiAKK2NvbnRh
aW5zKERFRklORVMsIFNIQVJFRF9XT1JLRVJTPTEpIHsKKyAgICBGRUFUVVJFX0RFRklORVNfSkFW
QVNDUklQVCArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MQorCisgICAgSURMX0JJTkRJTkdTICs9
IFwKKyAgICAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAorICAgICAgICB3b3JrZXJz
L1NoYXJlZFdvcmtlci5pZGwKKworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBiaW5kaW5ncy9q
cy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTaGFyZWRX
b3JrZXJDdXN0b20uY3BwIFwKKyAgICAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgXAor
ICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1ZJREVPPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfVklERU89MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDdmM2E3NWMuLjQ2MTliZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NDEsMTEgKzY0MSwxNyBAQAogCQk0MTEwNDY0MjBGQTIyMkE2MDBCQTQz
NkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwNDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwogCQk0
MTJBNjg0NzBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTJBNjg0NjBGNkIw
M0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAgKi87IH07CisJCTQxNUI3
QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU0MEZGNTk4RTYw
MDY3NzBGNyAvKiBKU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTgw
RkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTUwRkY1OThFNjAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk0MTVCN0M1
OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNTYwRkY1OThFNjAwNjc3
MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE1QjdDNjMwRkY1QTc2
NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
U3RhY2suaCAqLzsgfTsKIAkJNDE2RTc1QkYwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxT
dGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJ
NDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQk0MTZFNzVDQzBFREY5MEM3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwogCQk0MTZGNDVGMDBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNDVF
RjBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
Y3BwICovOyB9OworCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4
MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDE5NTM2
NTEwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTUzNjUwMEY2ODIyMjQwMEQw
QzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggKi87IH07CiAJCTQxQkY3MDBCMEZFODZG
NDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAv
KiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLzsgfTsKQEAgLTY1NCw2ICs2NjAsMTQgQEAKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2
NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQwMTVDQTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1
QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKKwkJNDFEMDdBN0Uw
RkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5jcHAgKi87IH07CisJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBK
U1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFEMTBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5oICovOyB9OworCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovOyB9OworCQk0
MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIz
QiAvKiBTaGFyZWRXb3JrZXIuY3BwICovOyB9OworCQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07
CisJCTQxRTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRjBGRjU5ODY5
MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCAqLzsgfTsKIAkJNDFGMDYwQ0QwRjVFRUIyQjAw
QTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNDFGMDYwQ0UwRjVFRUIyQjAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9y
Q29udHJvbGxlci5oICovOyB9OwogCQk0MUYwNjE2QTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNw
ZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2MTY5MEY1RUZCREQwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNv
bnRyb2xsZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTU3MywxMSArNTU4NywxNyBAQAogCQk0MTEw
NDY0MDBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNj
cmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyQTY4NDYwRjZCMDNE
RDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNTYwRkY1
OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3
NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4
ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE5NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJh
bnRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAwOTBGRTg2RjQ5
MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTg2LDYgKzU2MDYsMTQgQEAKIAkJ
NDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyog
SlNTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQwN0E3
RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0
aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIx
Q0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2
QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyog
U2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdv
cmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMv
U2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwQUEw
RjVFRThCQjAwQTA3RUFDIC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUYwNjBDQjBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MENDMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05ODUyLDcgKzk4ODAsMTMgQEAKIAkJMkU0MzQ2MzEwRjU0NkE2ODAwQjBG
MUJBIC8qIHdvcmtlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi8s
CisJCQkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8sCisJ
CQkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLywKIAkJ
CQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLywKKwkJ
CQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywKKwkJCQk0
MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8sCisJCQkJNDFFMUIx
Q0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCiAJCQkJMkU0MzQ2MzMw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8sCiAJCQkJMkU0MzQ2MzQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlci5oICovLAogCQkJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuaWRsICovLApAQCAtMTMzODgsNiArMTM0MjIsMTAgQEAKIAkJQkMxQTM3OTMwOTdDNkZC
MTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvci5oICovLAorCQkJCTQxNUI3QzU0MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcCAqLywKKwkJCQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3
IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVGNzBDMDhGNDE0MDA3
RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCkBAIC0xMzk0NCw2ICsxMzk4MiwxMCBAQAogCQlFMUM4
QkU0QjBFOEJEMEQxMDA2NENCN0QgLyogVGhyZWFkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJz
dHJhY3RXb3JrZXIuY3BwICovLAorCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fi
c3RyYWN0V29ya2VyLmggKi8sCisJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hh
cmVkV29ya2VyLmNwcCAqLywKKwkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFy
ZWRXb3JrZXIuaCAqLywKIAkJCQlFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIu
Y3BwICovLAogCQkJCUUxQ0FBNUM1MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dvcmtlci5oICovLAog
CQkJCUUxODI1NjhEMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuY3BwICovLApA
QCAtMTY5MzQsNiArMTY5NzYsMTEgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyog
WFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTFCMUQx
MEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDE1QjdDNjMwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1
IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTcwNDIsNiArMTcwODks
OCBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21J
bkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDFFMUIxRDIwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
NDFFMUIxRDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTg5NTEsNiArMTkwMDAsMTMgQEAKIAkJCQk5M0YxOUIwNDA4MjQ1RTU5MDAxRTlB
QkMgLyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3Ry
YWN0V29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNUI3QzU4MEZGNTk4RTYw
MDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRX
b3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MmUwNmUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNBYnN0
cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJK
U0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEpTQWJzdHJhY3RXb3JrZXI6Om1hcmsoKQoreworICAgIERPTU9i
amVjdDo6bWFyaygpOworCisgICAgbWFya0lmTm90TnVsbChtX2ltcGwtPm9uZXJyb3IoKSk7CisK
KyAgICB0eXBlZGVmIEFic3RyYWN0V29ya2VyOjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3Rl
bmVyc01hcDsKKyAgICB0eXBlZGVmIEFic3RyYWN0V29ya2VyOjpMaXN0ZW5lclZlY3RvciBMaXN0
ZW5lclZlY3RvcjsKKyAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2lt
cGwtPmV2ZW50TGlzdGVuZXJzKCk7CisgICAgZm9yIChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0
b3IgbWFwSXRlciA9IGV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0
ZW5lcnMuZW5kKCk7ICsrbWFwSXRlcikgeworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpp
dGVyYXRvciB2ZWNJdGVyID0gbWFwSXRlci0+c2Vjb25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFw
SXRlci0+c2Vjb25kLmVuZCgpOyArK3ZlY0l0ZXIpCisgICAgICAgICAgICAoKnZlY0l0ZXIpLT5t
YXJrSlNGdW5jdGlvbigpOworICAgIH0KK30KKworSlNWYWx1ZSBKU0Fic3RyYWN0V29ya2VyOjph
ZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVj
dChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFJlZlB0cjxKU0V2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gZ2xvYmFsT2JqZWN0LT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVu
ZXIoYXJncy5hdCgxKSk7CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJp
bmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2UoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTQWJzdHJhY3RXb3Jr
ZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWds
b2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IGdsb2JhbE9iamVjdC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdz
LmF0KDEpKTsKKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhl
eGVjKSwgbGlzdGVuZXIsIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgQWJzdHJh
Y3RXb3JrZXIqIGJhc2VPYmplY3QpCit7CisgICAgLy8gSnVzdCBjYWxsIHRoZSBKU0V2ZW50VGFy
Z2V0IGltcGxlbWVudGF0aW9uIG9mIHRvSlMoKSwgd2hpY2ggYWxyZWFkeSBkaWZmZXJlbnRpYXRl
cyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zLgorICAgIHJldHVybiB0b0pT
KGV4ZWMsIHN0YXRpY19jYXN0PEV2ZW50VGFyZ2V0Kj4oYmFzZU9iamVjdCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIyMDEzZWIuLmMw
OTViZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKQEAgLTQ3Niw2ICs0
NzcsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcj4oZXhlYywgdGhp
cyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdp
bmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKaW5kZXggMjA1ODA5OC4uODc1ZTkwNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1
ZGUgIkpTU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAxLDYg
KzEwNiwxMSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBFdmVudFRhcmdldCogdGFy
Z2V0KQogICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh3b3JrZXJDb250ZXh0KTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgIGlmIChTaGFyZWRXb3Jr
ZXIqIHNoYXJlZFdvcmtlciA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXIoKSkKKyAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgc2hhcmVkV29ya2VyKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTMyLDYgKzE0MiwxMCBAQCBF
dmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVS
VF9UT19FVkVOVF9UQVJHRVQoV29ya2VyQ29udGV4dCkKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFNoYXJlZFdvcmtlcikK
KyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVhZDE3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5o
IgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNoYXJlZFdv
cmtlckNvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OworCitKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9y
OjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTU9iamVjdChKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
Cit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTU2hh
cmVkV29ya2VyUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworICAg
IC8vIEhvc3QgZnVuY3Rpb25zIGhhdmUgYSBsZW5ndGggcHJvcGVydHkgZGVzY3JpYmluZyB0aGUg
bnVtYmVyIG9mIGV4cGVjdGVkIGFyZ3VtZW50cy4KKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8
RG9udEVudW0pOworfQorCitzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNoYXJlZFdvcmtlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBp
ZiAoYXJncy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50
YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CisKKyAgICBVU3RyaW5nIHNjcmlwdFVS
TCA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgVVN0cmluZyBuYW1lID0gYXJncy5h
dCgxKS50b1N0cmluZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHNj
cmlwdFVSTCwgbmFtZSwgY29udGV4dCwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisKKyAgICAvLyBGSVhNRTogdG9KUygpIGNyZWF0ZXMgYW4gb2JqZWN0IHdob3NlIHByb3Rv
dHlwZSBpcyBkZXJpdmVkIGZyb20gbGV4aWNhbEdsb2JhbFNjb3BlLCB3aGljaCBpcyBpbmNvcnJl
Y3QgKEJ1ZyAyNzA4OCkKKyAgICByZXR1cm4gYXNPYmplY3QodG9KUyhleGVjLCB3b3JrZXIucmVs
ZWFzZSgpKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0U2hhcmVkV29ya2VyOworICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJlOGIyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvcl9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSlNTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAg
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CisKKyAgICAgICAgdmlydHVhbCBjb25zdCBK
U0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAg
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURf
V09SS0VSUykKKworI2VuZGlmIC8vIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3JfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44NTUzMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUg
IkpTU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXI6Om1hcmsoKQoreworICAgIEJhc2U6
Om1hcmsoKTsKKworICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IGltcGwoKS0+cG9ydCgpKSB7
CisgICAgICAgIERPTU9iamVjdCogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIo
KkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7CisgICAgICAgIGlmICh3cmFw
cGVyICYmICF3cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAgICAgIHdyYXBwZXItPm1hcmsoKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
SEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0
c0luY2x1ZGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAppbmRl
eCA5MGRlZWFiLi5lN2QyNzQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9i
amVjdHNJbmNsdWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVk
ZS5oCkBAIC0xOTgsNiArMTk4LDExIEBACiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAj
ZW5kaWYgLy8gV09SS0VSUwogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1ZGUg
IkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisjZW5kaWYgLy8g
U0hBUkVEX1dPUktFUlMKKwogI2lmIEVOQUJMRShYUEFUSCkKICNpbmNsdWRlICJYUGF0aEV2YWx1
YXRvci5oIgogI2VuZGlmIC8vIFhQQVRICmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5kZXguY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAppbmRleCA3Nzcy
MDE2Li5mMmY0ZTdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKQEAgLTM3Niw2ICszNzYsMTEg
QEAKICNpbmNsdWRlICJWOFdvcmtlck5hdmlnYXRvci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCisjaW5jbHVkZSAiVjhBYnN0cmFjdFdvcmtlci5oIgorI2luY2x1ZGUg
IlY4U2hhcmVkV29ya2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGdW5j
dGlvblRlbXBsYXRlRmFjdG9yeSBWOENsYXNzSW5kZXg6OkdldEZhY3RvcnkoVjhXcmFwcGVyVHlw
ZSB0eXBlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmggYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAppbmRleCBiMjM4ZDcwLi41M2VlZWE5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaApAQCAtNjUsNiArNjUsMTcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICNkZWZp
bmUgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQ
UEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICBcCisgICAgVihTSEFSRURXT1JLRVIsIFNo
YXJlZFdvcmtlcikKKworI2RlZmluZSBTSEFSRURfV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBF
UyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoQUJTVFJBQ1RXT1JLRVIsIEFi
c3RyYWN0V29ya2VyKQorI2Vsc2UKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNU
X1dSQVBQRVJfVFlQRVMoVikKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJf
VFlQRVMoVikKKyNlbmRpZgorCiAjZGVmaW5lIERPTV9OT0RFX1RZUEVTKFYpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihBVFRSLCBBdHRyKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihDSEFSQUNURVJEQVRBLCBDaGFyYWN0ZXJEYXRhKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCkBAIC0yNjcsNyArMjc4LDggQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICNk
ZWZpbmUgQUNUSVZFX0RPTV9PQkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBWKE1FU1NBR0VQT1JULCBNZXNzYWdlUG9ydCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFhNTEhUVFBSRVFVRVNULCBY
TUxIdHRwUmVxdWVzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBX
T1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpCisgICAgV09SS0VSX0FDVElWRV9P
QkpFQ1RfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKIAogLy8gTk9U
RTogRE9NX09CSkVDVF9UWVBFUyBpcyBzcGxpdCBpbnRvIHR3byBoYWx2ZXMgYmVjYXVzZQogLy8g
ICAgICAgVmlzdWFsIFN0dWRpbydzIEludGVsbGlub25zZW5zZSBjcmFzaGVzIHdoZW4gbWFjcm9z
IGdldApAQCAtMzY1LDYgKzM3Nyw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAgICAgVihYU0xUUFJP
Q0VTU09SLCBYU0xUUHJvY2Vzc29yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgQUNUSVZFX0RPTV9PQkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVklERU9fTk9OTk9ERV9UWVBFUyhWKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU0hBUkVEX1dPUktF
Ul9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQogCiAjaWYgRU5BQkxFKERBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdv
cmtlckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yODYwZGI5
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5o
IgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJW
OFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoQWJzdHJhY3RXb3JrZXIqIHdvcmtlciwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgZmluZE9ubHkpCit7CisgICAgaWYgKHdv
cmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckNvbnRleHQoKSkgeworICAg
ICAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHdvcmtlckNvbnRleHRQcm94eSA9IFdv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICAgICAgQVNTRVJUKHdv
cmtlckNvbnRleHRQcm94eSk7CisgICAgICAgIHJldHVybiB3b3JrZXJDb250ZXh0UHJveHktPmZp
bmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlLCBmaW5kT25seSk7Cisg
ICAgfQorCisgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZSh3b3JrZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKHByb3h5KQorICAgICAgICByZXR1cm4g
ZmluZE9ubHkgPyBwcm94eS0+ZmluZE9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKSA6
IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSk7CisK
KyAgICByZXR1cm4gMDsKK30KKworQUNDRVNTT1JfR0VUVEVSKEFic3RyYWN0V29ya2VyT25lcnJv
cikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIub25lcnJvci5fZ2V0Iik7
CisgICAgQWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxBYnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgaW5mby5I
b2xkZXIoKSk7CisgICAgaWYgKHdvcmtlci0+b25lcnJvcigpKSB7CisgICAgICAgIFY4T2JqZWN0
RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9iamVjdEV2ZW50TGlzdGVu
ZXIqPih3b3JrZXItPm9uZXJyb3IoKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2
OExpc3RlbmVyID0gbGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVy
biB2OExpc3RlbmVyOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitB
Q0NFU1NPUl9TRVRURVIoQWJzdHJhY3RXb3JrZXJPbmVycm9yKQoreworICAgIElOQ19TVEFUUyhM
IkRPTS5BYnN0cmFjdFdvcmtlci5vbmVycm9yLl9zZXQiKTsKKyAgICBBYnN0cmFjdFdvcmtlciog
d29ya2VyID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihW
OENsYXNzSW5kZXg6OkFCU1RSQUNUV09SS0VSLCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOE9iamVj
dEV2ZW50TGlzdGVuZXIqIG9sZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RFdmVudExp
c3RlbmVyKj4od29ya2VyLT5vbmVycm9yKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsK
KyAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwor
ICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExp
c3RlbmVyLCBWOEN1c3RvbTo6a0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyLgorICAgICAgICB3b3JrZXIt
PnNldE9uZXJyb3IoMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRMaXN0ZW5lcih3b3JrZXIsIHZhbHVlLCBmYWxzZSk7Cisg
ICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7Cisg
ICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRM
aXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgICAgICAgICByZW1vdmVIaWRk
ZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprQWJz
dHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHdvcmtlci0+c2V0T25lcnJvcihsaXN0ZW5lcik7CisgICAgICAgICAgICBjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a0Fic3RyYWN0V29y
a2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woQWJzdHJhY3RXb3JrZXJBZGRFdmVudExpc3RlbmVyKQoreworICAgIElOQ19TVEFU
UyhMIkRPTS5BYnN0cmFjdFdvcmtlci5hZGRFdmVudExpc3RlbmVyKCkiKTsKKyAgICBBYnN0cmFj
dFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0
V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09SS0VSLCBhcmdzLkhvbGRlcigpKTsKKwor
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGdldEV2ZW50TGlzdGVuZXIod29y
a2VyLCBhcmdzWzFdLCBmYWxzZSk7CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmlu
ZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1
cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKKyAgICAgICAgd29ya2VyLT5hZGRFdmVudExp
c3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKworICAgICAgICBjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RX
b3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlz
dGVuZXIpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoKSIpOworICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RX
T1JLRVIsIGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gZ2V0RXZlbnRMaXN0ZW5lcih3b3JrZXIsIGFyZ3NbMV0sIHRydWUpOworICAgIGlmIChs
aXN0ZW5lcikgeworICAgICAgICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBd
KTsKKyAgICAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7Cisg
ICAgICAgIHdvcmtlci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lci5nZXQoKSwg
dXNlQ2FwdHVyZSk7CisKKyAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRl
cigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgp
OworICAgIH0KKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5kZXggNjA4M2FjNS4uNzYw
OTUyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5k
aW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgK
QEAgLTEyNiw2ICsxMjYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFw
cGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtBYnN0cmFjdFdvcmtlclJlcXVlc3RD
YWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBrQWJzdHJhY3RXb3JrZXJJbnRlcm5hbEZpZWxkQ291bnQgPSBr
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOworI2VuZGlmCisKICAgICAgICAg
c3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93Q29uc29sZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2lu
ZG93SGlzdG9yeUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93TG9jYXRpb25iYXJJbmRleCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDI7CkBAIC00ODcsNiArNDkyLDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250
ZXh0UmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihBYnN0cmFjdFdvcmtlck9u
ZXJyb3IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyQWRkRXZlbnRM
aXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3JrZXJSZW1vdmVF
dmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvcik7CisjZW5kaWYKKwogI3VuZGVmIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0sK
ICN1bmRlZiBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMC4uM2FiMmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFNoYXJlZFdvcmtlckNv
bnN0cnVjdG9yKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5TaGFyZWRXb3JrZXIuQ29uc3RydWN0
b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLiIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJv
cik7CisKKyAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisgICAgdjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiBzY3JpcHRVcmwgPSBhcmdzWzBdLT5Ub1N0cmluZygpOworICAgIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gbmFtZSA9IGFyZ3NbMV0tPlRvU3RyaW5nKCk7CisgICAgaWYgKHRyeUNhdGNoLkhh
c0NhdWdodCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24o
KSk7CisKKyAgICBpZiAoc2NyaXB0VXJsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKKworICAgIC8vIEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0Lgor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOworICAgIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eSogcHJveHkgPSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJl
dHJpZXZlKCk7CisgICAgaWYgKHByb3h5KQorICAgICAgICBjb250ZXh0ID0gcHJveHktPndvcmtl
ckNvbnRleHQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6
cmV0cmlldmVGcmFtZSgpOworICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgY29udGV4dCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIH0KKworICAgIC8vIENyZWF0ZSB0aGUgd29ya2VyIG9iamVjdC4KKyAgICAvLyBOb3RlOiBp
dCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBhbHNv
IGNhbGwgU2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVyZW5j
ZSB0byBvYmouCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFNoYXJlZFdv
cmtlcj4gb2JqID0gU2hhcmVkV29ya2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVy
bCksIHRvV2ViQ29yZVN0cmluZyhuYW1lKSwgY29udGV4dCwgZWMpOworCisgICAgLy8gU2V0dXAg
dGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4KKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXJPYmplY3QgPSBhcmdzLkhvbGRlcigpOworICAgIFY4UHJv
eHk6OnNldERPTVdyYXBwZXIod3JhcHBlck9iamVjdCwgVjhDbGFzc0luZGV4OjpTSEFSRURXT1JL
RVIsIG9iai5nZXQoKSk7CisKKyAgICBvYmotPnJlZigpOworICAgIFY4UHJveHk6OnNldEpTV3Jh
cHBlckZvckFjdGl2ZURPTU9iamVjdChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcod3JhcHBlck9iamVjdCkpOworCisgICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09S
S0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAwNmNlYTA3Li40MzdmNWJhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCkBAIC05NSw2ICs5NSwxMyBAQCBXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9Xb3Jr
ZXJDb250ZXh0KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorU2hh
cmVkV29ya2VyKiBFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXIoKQoreworICAgIHJldHVybiAw
OworfQorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIGZvcmJpZEV2ZW50RGlzcGF0Y2go
KQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmgKaW5kZXggNjYyOTAyZS4uNzNhMzJlMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0z
Niw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFic3RyYWN0
V29ya2VyOwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNl
OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU2hhcmVkV29y
a2VyOwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNs
YXNzIFhNTEh0dHBSZXF1ZXN0OwpAQCAtNzAsNiArNzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgICAgIHZpcnR1YWwgU2hhcmVk
V29ya2VyKiB0b1NoYXJlZFdvcmtlcigpOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggYTIzZDcwOC4uYmZkZWJkNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
QEAgLTQ2MSw2ICs0NjEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
SlNDQ3VzdG9tR2V0dGVyXSBXb3JrZXJDb25zdHJ1Y3RvciBXb3JrZXI7IC8vIFVzYWJsZSB3aXRo
IHRoZSBuZXcgb3BlcmF0b3IKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfU0hBUkVEX1dP
UktFUlMpICYmIEVOQUJMRV9TSEFSRURfV09SS0VSUworICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1
c3RvbUdldHRlcl0gU2hhcmVkV29ya2VyQ29uc3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2Fi
bGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwogICAgICAgICBhdHRyaWJ1dGUgUGx1
Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRyaWJ1dGUgUGx1Z2luQXJyYXlDb25z
dHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FiNGY4YgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRl
ICJBYnN0cmFjdFdvcmtlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQWJzdHJhY3RXb3JrZXI6OkFic3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKK3sKK30K
KworQWJzdHJhY3RXb3JrZXI6On5BYnN0cmFjdFdvcmtlcigpCit7Cit9CisKK3ZvaWQgQWJzdHJh
Y3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwgYm9vbCkKK3sKKyAgICBF
dmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChl
dmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpIHsKKyAg
ICAgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5k
KGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUs
IGxpc3RlbmVycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3Rl
bmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRlcmF0
b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0
ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgICAgICBpZiAoKmxpc3RlbmVy
SXRlciA9PSBldmVudExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1f
ZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9Cit9CisKK3Zv
aWQgQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIsIGJvb2wpCit7CisgICAg
RXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQo
ZXZlbnRUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vj
b25kOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRl
ciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyAr
K2xpc3RlbmVySXRlcikgeworICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVudExpc3Rl
bmVyKSB7CisgICAgICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySXRlciAtIGxpc3Rl
bmVycy5iZWdpbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30K
KworYm9vbCBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFldmVudCB8fCBldmVudC0+dHlw
ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IEV2ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklF
RF9FVkVOVF9UWVBFX0VSUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTGlz
dGVuZXJWZWN0b3IgbGlzdGVuZXJzQ29weSA9IG1fZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50LT50
eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVy
SXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVyc0Nv
cHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7CisgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBsaXN0
ZW5lckl0ZXItPmdldCgpLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgZmFsc2UpOworICAgIH0K
KworICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKK30KKwordm9pZCBBYnN0
cmFjdFdvcmtlcjo6ZGlzcGF0Y2hMb2FkRXJyb3JFdmVudCgpCit7CisgICAgUmVmUHRyPEV2ZW50
PiBldnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1
ZSk7CisgICAgaWYgKG1fb25FcnJvckxpc3RlbmVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1f
b25FcnJvckxpc3RlbmVyLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIHRydWUpOworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2Uo
KSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIEFic3RyYWN0V29ya2VyOjpkaXNw
YXRjaFNjcmlwdEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50KQor
eworICAgIC8vRklYTUU6IEdlbmVyYXRlIGFuIEVycm9yRXZlbnQgaW5zdGVhZCBvZiBhIHNpbXBs
ZSBldmVudAorICAgIGRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjZkOGM4
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQWJzdHJhY3RXb3JrZXJfaAorI2RlZmluZSBBYnN0cmFjdFdv
cmtlcl9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJBdG9taWNT
dHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZl
bnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKworICAgIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50
ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRU
YXJnZXQgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJcworICAgICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBF
eGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgLy8gVXRpbGl0eSByb3V0aW5lcyB0byBnZW5lcmF0
ZSBhcHByb3ByaWF0ZSBlcnJvciBldmVudHMgZm9yIGxvYWRpbmcgYW5kIHNjcmlwdCBleGNlcHRp
b25zLgorICAgICAgICB2b2lkIGRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKKyAgICAgICAgdm9p
ZCBkaXNwYXRjaFNjcmlwdEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQpOworCisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVu
ZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBj
b25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVu
ZXJzTWFwOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CisKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0
cmFjdFdvcmtlcj46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtl
cj46OmRlcmVmOworCisgICAgICAgIEFic3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKyAgICAgICAgdmlydHVhbCB+QWJzdHJhY3RXb3JrZXIoKTsKKworICAgIHByaXZhdGU6
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorCisgICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgRXZl
bnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAv
LyBBYnN0cmFjdFdvcmtlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuaWRsIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjM0YzBkCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRo
cmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMsCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgQ3VzdG9tVG9KUywK
KyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gQWJzdHJhY3RXb3JrZXIgeworCisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNo
RXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsK
KyAgICB9OworCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNw
cCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmUxZDMwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgor
CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFy
ZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKKyAgICA6IEFic3Ry
YWN0V29ya2VyKGNvbnRleHQpCit7CisgICAgLy8gUGxhY2Vob2xkZXIgLSB1bHRpbWF0ZWx5IHdl
J2xsIGxvb2sgdXAgdGhlIHdvcmtlciBpbiB0aGUgU2hhcmVkV29ya2VyUmVwb3NpdG9yeS4KK30K
KworU2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmM3ZDg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNoYXJlZFdvcmtlcl9oCisjZGVmaW5lIFNoYXJlZFdvcmtlcl9oCisKKyNp
bmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU2hhcmVkV29ya2VyIDogcHVibGljIEFic3RyYWN0V29ya2VyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlcih1cmwsIG5hbWUsIGNvbnRleHQsIGVjKSk7CisgICAg
ICAgIH0KKyAgICAgICAgflNoYXJlZFdvcmtlcigpOworICAgICAgICBNZXNzYWdlUG9ydCogcG9y
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgU2hh
cmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIFNoYXJlZFdvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAg
ICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gbV9wb3J0OworICAgIH07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDc1ZjcKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMsCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAg
R2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCisgICAgICAgIEdlbmVyYXRlVG9KUworICAgIF0gU2hh
cmVkV29ya2VyIDogQWJzdHJhY3RXb3JrZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVzc2FnZVBvcnQgcG9ydDsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDkxMTU1MjguLjljZjEyNGEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2Vy
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
OTMyCisKKyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIChkaXNhYmxl
ZCBieSBkZWZhdWx0KS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorCiAyMDA5LTA3LTA5ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGJlOTZk
MjUuLjFhZGY2NzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFCTEVfR0VPTE9DQVRJT04gPSA7
CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsK
K0VOQUJMRV9TSEFSRURfV09SS0VSUyA9IDsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5B
QkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKIEVOQUJMRV9TVkdfQVNf
SU1BR0UgPSBFTkFCTEVfU1ZHX0FTX0lNQUdFOwpAQCAtNTIsNCArNTMsNCBAQCBFTkFCTEVfV09S
S0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5B
QkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0Rf
UkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0Up
ICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVS
UykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFH
UklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA0Y2RjYmM3Li40NTM5MDVmIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisK
KyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgLS1zaGFyZWQtd29ya2VycyAodHVybmVkIG9mZiBi
eSBkZWZhdWx0KQorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDct
MTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNvcnQgYWxsIG91
ciBYY29kZSBwcm9qZWN0cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXQgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBmNDlmNzk5Li5k
NDFhODZkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtNDYsMTAgKzQ2LDEwIEBAIG15
ICRtYWtlQXJnczsKIAogbXkgKCR0aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hhbm5lbE1lc3Nh
Z2luZ1N1cHBvcnQsICRkYXRhYmFzZVN1cHBvcnQsICRkb21TdG9yYWdlU3VwcG9ydCwKICAgICAk
ZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQsICRnbm9tZUtleXJpbmdTdXBwb3J0
LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwKLSAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwg
JG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9u
U3VwcG9ydCwKLSAgICAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBw
b3J0LCAkc3ZnRm9udHNTdXBwb3J0LCAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsCi0gICAgJHN2
Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQs
ICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwKLSAgICAkY292ZXJhZ2VTdXBwb3J0KTsKKyAg
ICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBv
cnQsICRzaGFyZWRXb3JrZXJzU3VwcG9ydCwgJHN2Z1N1cHBvcnQsCisgICAgJHN2Z0FuaW1hdGlv
blN1cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQs
ICRzdmdGb250c1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNl
U3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAg
ICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQpOwogCiBteSBA
ZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIjNkLXJlbmRlcmluZyIsIGRlc2MgPT4gIlRv
Z2dsZSAzRCByZW5kZXJpbmcgc3VwcG9ydCIsCkBAIC04NSw2ICs4NSw5IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICB7IG9wdGlvbiA9PiAib2ZmbGluZS13ZWItYXBwbGljYXRpb25zIiwgZGVzYyA9
PiAiVG9nZ2xlIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9uIFN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIiwgZGVmYXVsdCA9PiAxLCB2YWx1
ZSA9PiBcJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+
ICJzaGFyZWQtd29ya2VycyIsIGRlc2MgPT4gIlRvZ2dsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnQi
LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfU0hBUkVEX1dPUktFUlMiLCBkZWZhdWx0ID0+IDAs
IHZhbHVlID0+IFwkc2hhcmVkV29ya2Vyc1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJz
dmciLCBkZXNjID0+ICJUb2dnbGUgU1ZHIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfU1ZHIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJHN2Z1N1cHBvcnQgfSwKIApkaWZmIC0t
Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGIzZjRhNzIuLmNhM2ViZjUg
MTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTQwOSw2ICs0
MDksMTQgQEAgQUNfQVJHX0VOQUJMRSh3bWwsCiAgICAgICAgICAgICAgIFtdLFtlbmFibGVfd21s
PSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV93bWxdKQogCisjIGNoZWNrIHdoZXRoZXIg
dG8gZW5hYmxlIFNoYXJlZFdvcmtlcnMgc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVy
IHRvIGVuYWJsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShzaGFyZWRf
d29ya2VycywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXNoYXJlZC13
b3JrZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZv
ciBTaGFyZWRXb3JrZXJzIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxl
X3NoYXJlZF93b3JrZXJzPSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRfd29y
a2Vyc10pCisKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgV2ViIFdvcmtlcnMgc3VwcG9ydAog
QUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgV29ya2VycyBzdXBwb3J0XSkK
IEFDX0FSR19FTkFCTEUod29ya2VycywKQEAgLTY5MSw2ICs2OTksNyBAQCBBTV9DT05ESVRJT05B
TChbRU5BQkxFX0NPVkVSQUdFXSxbdGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAieWVzIl0pCiBB
TV9DT05ESVRJT05BTChbRU5BQkxFX0ZBU1RfTUFMTE9DXSxbdGVzdCAiJGVuYWJsZV9mYXN0X21h
bGxvYyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1dNTF0sW3Rlc3QgIiRlbmFi
bGVfd21sIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfV09SS0VSU10sW3Rlc3Qg
IiRlbmFibGVfd29ya2VycyIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbRU5BQkxFX1NIQVJF
RF9XT1JLRVJTXSxbdGVzdCAiJGVuYWJsZV9zaGFyZWRfd29ya2VycyIgPSAieWVzIl0pCiBBTV9D
T05ESVRJT05BTChbU1ZHX0ZMQUdTXSxbdGVzdCAiJHN2Z19mbGFncyIgPSAieWVzIl0pCiBBTV9D
T05ESVRJT05BTChbSFRNTF9GTEFHU10sW3Rlc3QgIiRodG1sX2ZsYWdzIiA9ICJ5ZXMiXSkKIApA
QCAtNzI5LDYgKzczOCw3IEBAIEZlYXR1cmVzOgogIEhUTUw1IGNsaWVudC1zaWRlIGRhdGFiYXNl
IHN0b3JhZ2Ugc3VwcG9ydCAgICAgICAgICAgICAgIDogJGVuYWJsZV9kYXRhYmFzZQogIEhUTUw1
IHZpZGVvIGVsZW1lbnQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV92aWRlbwogIEljb24gZGF0YWJhc2Ugc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogJGVuYWJsZV9pY29uX2RhdGFiYXNlCisgU2hhcmVkV29ya2VycyBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3NoYXJlZF93
b3JrZXJzCiAgU1ZHIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3N2ZwogIFNWRyBhbmltYXRpb24gc3VwcG9ydCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmdfYW5pbWF0aW9uCiAgU1ZHIGZv
bnRzIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5h
YmxlX3N2Z19mb250cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32614</attachid>
            <date>2009-07-11 10:36:44 -0700</date>
            <delta_ts>2009-07-13 00:33:23 -0700</delta_ts>
            <desc>Removed test expectations that were incorrectly generated with non-default flags.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>90129</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OGVjMWU0Li43YzM1NDI4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDggIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRk
ZWQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFnLgorCisgICAgICAgKiBjb25maWd1cmUuYWM6
CisKIDIwMDktMDctMDcgIE5vcmJlcnQgTGVzZXIgIDxub3JiZXJ0Lmxlc2VyQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWUx
NTc5Li43N2MyZGRmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMTEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKSBmbGFn
IGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgQWRkZWQgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKSBmbGFnIChvZmYgYnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3Rz
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBiL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDAzYzYxZWQuLjNmODFkZmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zOCw2ICsz
OCw3IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFC
TEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUjsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOworRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwog
RU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9T
VkdfQU5JTUFUSU9OOwogRU5BQkxFX1NWR19BU19JTUFHRSA9IEVOQUJMRV9TVkdfQVNfSU1BR0U7
CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykg
JChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1B
R0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3ODdlNDRhLi43MTMxMTc5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAg
VW5pdCB0ZXN0cyBmb3IgbmV3IFNoYXJlZFdvcmtlciBBUElzIChkaXNhYmxlZCBieSBkZWZhdWx0
KS4KKworICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
Y29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1ldmVudC1saXN0ZW5lci5odG1sLWRpc2Fi
bGVkOiBBZGRlZC4KKwogMjAwOS0wNy0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE5vIFJldmlldywganVzdCBza2lwcGluZyBhIG5ldyB0ZXN0IGZv
ciBRdCBEUlQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjI0YzFjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3QgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uYWxpdHku
IFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERP
TkUuCisKK1BBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBwcm9wYWdhdGVkIGNvcnJlY3RseS4KK1BB
U1M6IHRyeWluZyB0byBjcmVhdGUgd29ya2VycyByZWN1cnNpdmVseSByZXN1bHRlZCBpbiBhbiBl
eGNlcHRpb24gKFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLikK
K1BBU1M6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciB3aXRob3V0IGFyZ3VtZW50
cyByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cykKK1BBU1M6IGludm9raW5nIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciB3aXRob3V0IG5h
bWUgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChTeW50YXhFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMpCitQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Igc3VjY2VlZGVkOiBbb2JqZWN0
IFNoYXJlZFdvcmtlcl0KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0N2U2ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw1OSBAQAorPGJvZHk+Cis8cD5UZXN0IFNoYXJlZFdvcmtl
ciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFT
UyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK3RyeSB7CisgICAgbmV3IFNoYXJlZFdvcmtlcih7dG9TdHJpbmc6ZnVuY3Rpb24o
KXt0aHJvdyAiZXhjZXB0aW9uIn19LCAibmFtZSIpCisgICAgbG9nKCJGQUlMOiB0b1N0cmluZyBl
eGNlcHRpb24gbm90IHByb3BhZ2F0ZWQuIik7Cit9IGNhdGNoIChleCkgeworICAgIGlmIChleCA9
PSAiZXhjZXB0aW9uIikKKyAgICAgICAgbG9nKCJQQVNTOiB0b1N0cmluZyBleGNlcHRpb24gcHJv
cGFnYXRlZCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IHVuZXhw
ZWN0ZWQgZXhjZXB0aW9uICgiICsgZXggKyAiKSByZWNlaXZlZCBpbnN0ZWFkIG9mIG9uZSBwcm9w
YWdhdGVkIGZyb20gdG9TdHJpbmcuIik7Cit9CisKK3RyeSB7CisgICAgdmFyIGZvbyA9IHt0b1N0
cmluZzpmdW5jdGlvbigpe25ldyBXb3JrZXIoZm9vKX19CisgICAgbmV3IFNoYXJlZFdvcmtlcihm
b28sIG5hbWUpOworICAgIGxvZygiRkFJTDogbm8gZXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIGNy
ZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5Iik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygiUEFT
UzogdHJ5aW5nIHRvIGNyZWF0ZSB3b3JrZXJzIHJlY3Vyc2l2ZWx5IHJlc3VsdGVkIGluIGFuIGV4
Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKK30KKwordHJ5IHsKKyAgICBuZXcgU2hhcmVkV29ya2Vy
KCk7CisgICAgbG9nKCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Igd2l0
aG91dCBhcmd1bWVudHMgZGlkIG5vdCByZXN1bHQgaW4gYW4gZXhjZXB0aW9uIik7Cit9IGNhdGNo
IChleCkgeworICAgIGxvZygiUEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9y
IHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIiki
KTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3Vy
Y2VzL3dvcmtlci1jb21tb24uanMiKTsKKyAgICBsb2coIkZBSUw6IENvbnN0cnVjdG9yIHN1Y2Nl
ZWRlZCB3aGVuIG5vIG5hbWUgaXMgcGFzc2VkIik7Cit9IGNhdGNoIChleCkgeworICAgIGxvZygi
UEFTUzogaW52b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1
bHRlZCBpbiBhbiBleGNlcHRpb24gKCIgKyBleCArICIpIik7Cit9CisKK3RyeSB7CisgICAgdmFy
IHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9uLmpzIiwg
Im5hbWUiKTsKKyAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3Igc3VjY2Vl
ZGVkOiAiICsgd29ya2VyKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJGQUlMOiBpbnZva2lu
ZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uICgiICsg
ZXggKyAiKSIpOworfQorCitsb2coIkRPTkUiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODcwNGFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCBTaGFyZWRXb3JrZXIgZXZlbnQgbGlzdGVuZXIu
IFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERP
TkUuCisKK1NVQ0NFU1M6IExpc3RlbmVyIHdhcyBjYWxsZWQuCitTVUNDRVNTOiBMaXN0ZW5lciB3
YXMgbm90IGNhbGxlZCBhZnRlciByZW1vdmFsLgorU1VDQ0VTUzogTGlzdGVuZXIgd2FzIGNhbGxl
ZCBhZnRlciBHQy4KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItZXZlbnQtbGlzdGVuZXIuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwtZGlzYWJsZWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEzM2ZlNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3Rl
bmVyLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw3MyBAQAorPGJvZHk+Cis8cD5UZXN0IFNoYXJl
ZFdvcmtlciBldmVudCBsaXN0ZW5lci4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVz
c2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jb21t
b24uanMiLCAiZm9vYmFyIik7Cit2YXIgbnVtTGlzdGVuZXJDYWxscyA9IDA7CitmdW5jdGlvbiBj
b3VudExpc3RlbmVyQ2FsbGJhY2tzKGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlICE9ICJm
b28iKQorICAgICAgICBsb2coIkZBSUw6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZXZlbnQ6ICIgKyBl
dmVudC50eXBlKTsKKyAgICBudW1MaXN0ZW5lckNhbGxzKys7Cit9Cit3b3JrZXIuYWRkRXZlbnRM
aXN0ZW5lcigiZm9vIiwgY291bnRMaXN0ZW5lckNhbGxiYWNrcywgZmFsc2UpOwordmFyIGV2ZW50
ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50cyIpOworZXZlbnQuaW5pdEV2ZW50KCJmb28i
LCBmYWxzZSwgZmFsc2UpOword29ya2VyLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworaWYgKG51bUxp
c3RlbmVyQ2FsbHMgPT0gMSkgeworICAgIGxvZygiU1VDQ0VTUzogTGlzdGVuZXIgd2FzIGNhbGxl
ZC4iKTsKK30gZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0ZW5lciB3YXMgbm90IGNhbGxlZC4i
KTsKK30KKword29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvbyIsIGNvdW50TGlzdGVuZXJD
YWxsYmFja3MsIGZhbHNlKTsKK3dvcmtlci5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK2lmIChudW1M
aXN0ZW5lckNhbGxzID09IDEpIHsKKyAgICBsb2coIlNVQ0NFU1M6IExpc3RlbmVyIHdhcyBub3Qg
Y2FsbGVkIGFmdGVyIHJlbW92YWwuIik7Cit9IGVsc2UgeworICAgIGxvZygiRkFJTDogTGlzdGVu
ZXIgd2FzIGNhbGxlZCBhZnRlciByZW1vdmFsLiIpOworfQorCisvLyBUZXN0IHRvIG1ha2Ugc3Vy
ZSB0aGF0IGV2ZW50IGxpc3RlbmVycyBzdXJ2aXZlIEdDLgord29ya2VyLmFkZEV2ZW50TGlzdGVu
ZXIoImZvbyIsIGNyZWF0ZU5ld0xpc3RlbmVyKGNvdW50TGlzdGVuZXJDYWxsYmFja3MpLCBmYWxz
ZSk7CitnYygpOword29ya2VyLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworaWYgKG51bUxpc3RlbmVy
Q2FsbHMgPT0gMikgeworICAgIGxvZygiU1VDQ0VTUzogTGlzdGVuZXIgd2FzIGNhbGxlZCBhZnRl
ciBHQy4iKTsKK30gZWxzZSB7CisgICAgbG9nKCJGQUlMOiBMaXN0ZW5lciB3YXMgbm90IGNhbGxl
ZCBhZnRlciBHQy4iKTsKK30KKworCitsb2coIkRPTkUiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCitm
dW5jdGlvbiBjcmVhdGVOZXdMaXN0ZW5lcihmdW5jKQoreworICByZXR1cm4gZnVuY3Rpb24oZXZl
bnQpIHsgZnVuYyhldmVudCk7IH07Cit9CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2lu
ZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFn
ZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBj
b2xsZWN0KS4KKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisK
KworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRkODkwNmIuLjQ3MjllMGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIw
MDktMDctMTEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKSBmbGFnIGFuZCBkZWZpbmUgU2hhcmVkV29ya2VyIEFQSXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMyCisKKyAgICAgICAgSW5pdGlh
bCBJREwgZGVmaW5pdGlvbiBhbmQgYmluZGluZ3MgZm9yIFNoYXJlZFdvcmtlcnMuCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgQWRk
ZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMgZm9yIFNoYXJlZFdvcmtlciBz
dXBwb3J0LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGRlZCBuZXcgZmls
ZXMgZm9yIFNoYXJlZFdvcmtlciBzdXBwb3J0LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIgc3VwcG9ydC4KKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIGZvciBTaGFyZWRXb3JrZXIg
c3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgIEFkZGVkIG5ldyBmaWxlcyBmb3IgU2hhcmVkV29ya2VyIHN1cHBvcnQuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJr
IGhhbmRsZXIgdGhhdCBtYXJrcyB0aGUgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6SlNBYnN0cmFjdFdvcmtlcjo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0Fic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQWJzdHJhY3RXb3JrZXI6OnRvSlMpOgorICAgICAgICBDdXN0b20gdG9KUyBoYW5kbGVy
IHdoaWNoIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdmFyaW91cyBzdWJjbGFzc2VzLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpzaGFyZWRXb3JrZXIpOgorICAgICAgICBTaGFyZWRXb3JrZXIgY29uc3Ry
dWN0b3IgKG9ubHkgZW5hYmxlZCB3aGVuIFNIQVJFRF9XT1JLRVJTIGlzCisgICAgICAgIGVuYWJs
ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50VGFyZ2V0KToKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3IgY29udmVydGluZyB0by9mcm9tIFNoYXJlZFdvcmtlcnMuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6SlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RTaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3I6OmNsYXNzSW5mbyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyOjptYXJrKToK
KyAgICAgICAgQ3VzdG9tIG1hcmsgZnVuY3Rpb24gdGhhdCBtYXJrcyB0aGUgaW50ZXJuYWwgTWVz
c2FnZVBvcnQuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDoKKyAg
ICAgICAgVXBkYXRlZCB0byBpbmNsdWRlIG5ldyBoZWFkZXIgZmlsZXMuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhJbmRleC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRleC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkFDQ0VTU09SX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRU
RVIpOgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgVjgg
aGFuZGxlcnMgZm9yIGFkZC9yZW1vdmVFdmVudExpc3RlbmVyKCkuCisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgQ3VzdG9tIGNvbnN0cnVjdG9yIGZvciBTaGFy
ZWRXb3JrZXIuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlcik6CisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
QWJzdHJhY3RXb3JrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29y
a2VyOjpBYnN0cmFjdFdvcmtlcik6CisgICAgICAgIENvbW1vbiBiYXNlY2xhc3MgZm9yIFNoYXJl
ZFdvcmtlciBhbmQgKHNvb24pIFdvcmtlci4gVGhlIGZ1bmN0aW9ucyBiZWxvdyB3ZXJlIGNvcGll
ZCBmcm9tIFdvcmtlci5jcHAuCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVm
YWN0b3JpbmcgV29ya2VyIHRvIGRlcml2ZSBmcm9tIEFic3RyYWN0V29ya2VyIHRvIGVuYWJsZSBj
b2RlIHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6fkFic3RyYWN0
V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaExvYWRFcnJvckV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpkaXNwYXRjaFNjcmlwdEVycm9y
RXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDogQWRkZWQuCisgICAg
ICAgIERlZmluaXRpb25zIG9mIGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJ5IFdvcmtlci5oIGFuZCBT
aGFyZWRXb3JrZXIuaC4gSW4gYSBmdXR1cmUgcGF0Y2gsIFdvcmtlciB3aWxsIGRlcml2ZSBmcm9t
IEFic3RyYWN0V29ya2VyLgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnNl
dE9uZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6Om9uZXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OmV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpBYnN0cmFjdFdvcmtlcjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OlNoYXJl
ZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIp
OgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6dG9TaGFyZWRXb3Jr
ZXIpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDogQWRkZWQuCisKIDIwMDkt
MDctMTAgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzA0ODc0MT4gUkVHUkVTU0lPTjogRXJyb3IgYWJvdXQgbWlzc2luZyBT
d01lbnVYLmRsbCBvcGVuaW5nIHBhZ2VzIHdpdGggU2hvY2t3YXZlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBiZTk2ZDI1Li4xYWRmNjcw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTM5LDYgKzM5LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRB
QkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfU0hBUkVEX1dP
UktFUlMgPSA7CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9O
ID0gRU5BQkxFX1NWR19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lNQUdFID0gRU5BQkxFX1NW
R19BU19JTUFHRTsKQEAgLTUyLDQgKzUzLDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09S
S0VSUzsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxF
X1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJ
RCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVO
QUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlH
Tl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNmYxZjY1NC4uOWYzY2UwZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNDUsNiArNDUsNyBAQCBWUEFUSCA9IFwKIAogRE9NX0NMQVNTRVMgPSBcCiAgICAgQWJz
dHJhY3RWaWV3IFwKKyAgICBBYnN0cmFjdFdvcmtlciBcCiAgICAgQXR0ciBcCiAgICAgQmFySW5m
byBcCiAgICAgQ0RBVEFTZWN0aW9uIFwKQEAgLTIwMCw2ICsyMDEsNyBAQCBET01fQ0xBU1NFUyA9
IFwKICAgICBSYW5nZSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAogICAgIFJlY3QgXAorICAgIFNo
YXJlZFdvcmtlciBcCiAgICAgU1FMRXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBcCiAgICAgU1FM
UmVzdWx0U2V0Um93TGlzdCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBiYWE1OWNiLi41M2E3YjI0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTI0OSw2ICsyNDksOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvcGx1Z2lucy9NaW1l
VHlwZUFycmF5LmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5pZGwgXAogCVdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKIAlXZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsIFwK
IAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaWRsIFwKQEAgLTIzMzksNiArMjM0MSwy
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aAogZW5kaWYKIAorIyAtLS0KKyMgU2hhcmVkV29ya2VyIHN1cHBvcnQKKyMgLS0tCitpZiBFTkFC
TEVfU0hBUkVEX1dPUktFUlMKK0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9T
SEFSRURfV09SS0VSUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5BQkxFX1NIQVJF
RF9XT1JLRVJTPTEKKword2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKKwlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJl
ZFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAg
XAorCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyLmNwcCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCisKK2Vu
ZGlmCisKICMgLS0tLQogIyBXTUwgU3VwcG9ydAogIyAtLS0tCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQyMDBjOTMuLjE3YjA1
ZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0zMzAsNiArMzMwLDggQEAKICAgICAgICAgICAgICdzdmcvU1ZHVmlld1NwZWMu
aWRsJywKICAgICAgICAgICAgICdzdmcvU1ZHWm9vbUFuZFBhbi5pZGwnLAogICAgICAgICAgICAg
J3N2Zy9TVkdab29tRXZlbnQuaWRsJywKKyAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmlkbCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsJywKICAgICAg
ICAgICAgICd3b3JrZXJzL1dvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaWRsJywK
QEAgLTU3NSw2ICs1NzcsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJj
ZVByb3ZpZGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2Vy
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1BpeGVsQXJy
YXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwJywKQEAgLTYzOCw2ICs2NDEsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR01hdHJpeEN1c3RvbS5jcHAn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdhbGtlckN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcCcsCkBAIC0zMjQ3LDcgKzMyNTEsMTEgQEAKICAgICAgICAgICAg
ICdzdmcvU1ZHWm9vbUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21FdmVudC5o
JywKICAgICAgICAgICAgICdzdmcvU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oJywKKyAgICAg
ICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCcsCisgICAgICAgICAgICAnd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0dlbmVyaWNXb3JrZXJU
YXNrLmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCcsCisgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3Jr
ZXIuY3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlci5oJywKICAgICAgICAgICAgICd3
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGEyNjY0MzkuLmUyMGYwODUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTIz
LDYgKzEyMyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQ9MSkg
ewogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9Y
U0xUPTAKICMhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hCTD0uKTogREVGSU5FUyArPSBFTkFC
TEVfWEJMPTEKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV01MPS4pOiBERUZJTkVTICs9IEVO
QUJMRV9XTUw9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSEFSRURfV09SS0VSUz0uKTog
REVGSU5FUyArPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XT1JLRVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XT1JLRVJTPTEKICFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfWEhUTUxNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEhUTUxNUD0wCiAK
QEAgLTE0NDEsNiArMTQ0MiwyMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0x
KSB7CiAgICAgICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogfQogCitjb250YWlu
cyhERUZJTkVTLCBTSEFSRURfV09SS0VSUz0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFT
Q1JJUFQgKz0gRU5BQkxFX1NIQVJFRF9XT1JLRVJTPTEKKworICAgIElETF9CSU5ESU5HUyArPSBc
CisgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9T
aGFyZWRXb3JrZXIuaWRsCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMv
SlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcCBcCisgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKKyAg
ICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9WSURFTz0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxF
X1ZJREVPPTEKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3ZjNhNzVjLi40NjE5YmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjQxLDExICs2NDEsMTcgQEAKIAkJNDExMDQ2NDIwRkEyMjJBNjAwQkE0MzZB
IC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwICovOyB9OwogCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLzsgfTsKIAkJNDEy
QTY4NDcwRjZCMDNERDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyQTY4NDYwRjZCMDNE
RDAwMEVBNjZFIC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwICovOyB9OworCQk0MTVCN0M1
NzBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M1NDBGRjU5OEU2MDA2
NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAgKi87IH07CisJCTQxNUI3QzU4MEZG
NTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU1MEZGNTk4RTYwMDY3
NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJNDE1QjdDNTkw
RkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU2MEZGNTk4RTYwMDY3NzBG
NyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi87IH07CisJCTQxNUI3QzYzMEZGNUE3Njcw
MDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyog
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAz
NjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0
YWNrLmggKi87IH07CiAJCTQxNkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3Rh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQx
NkU3NUNCMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJNDE2RTc1Q0MwRURGOTBDNzAwMzYwRTFE
IC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1l
LmNwcCAqLzsgfTsKIAkJNDE2RjQ1RjAwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RjQ1RUYw
RUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNw
cCAqLzsgfTsKKwkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAz
MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87IH07CiAJCTQxOTUzNjUx
MEY2ODIyMjQwMEQwQzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk1MzY1MDBGNjgyMjI0MDBEMEM2
NzkgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oICovOyB9OwogCQk0MUJGNzAwQjBGRTg2RjQ5
MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDA5MEZFODZGNDkwMDVFOERFQyAvKiBNZXNz
YWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwogCQk0MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyog
TWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVs
LmggKi87IH07CkBAIC02NTQsNiArNjYwLDE0IEBACiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMDE1Q0EwRjRC
NUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5
cGUuaCAqLzsgfTsKIAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM5
MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi87IH07CisJCTQxRDA3QTdFMEZG
OTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNT
aGFyZWRXb3JrZXIuY3BwICovOyB9OworCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNT
aGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oICovOyB9Owor
CQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKKwkJNDFFMUIxRDEwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCAqLzsgfTsKKwkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFF
MUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLzsgfTsKKwkJNDFF
MUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKKwkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovOyB9Owor
CQk0MUUxQjFENTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0YwRkY1OTg2OTAw
NTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi87IH07CiAJCTQxRjA2MENEMEY1RUVCMkIwMEEw
N0VBQyAvKiBKU0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAv
KiBKU0luc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2MENDMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckNv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJNDFGMDYxNkEwRjVFRkJERDAwQTA3RUFDIC8qIEpTSW5zcGVj
dG9yQ29udHJvbGxlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUYwNjE2OTBGNUVGQkREMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250
cm9sbGVyQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU1NzMsMTEgKzU1ODcsMTcgQEAKIAkJNDExMDQ2
NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3Jp
cHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMkE2ODQ2MEY2QjAzREQw
MDBFQTY2RSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTVCN0M1NDBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzU2MEZGNTk4
RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hh
cmVkV29ya2VyQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2
RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVD
QTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RyaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fi
c3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
QWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MThGODgw
MzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxOTUzNjUwMEY2ODIyMjQwMEQwQzY3OSAvKiBTY3JpcHRPYmplY3RRdWFyYW50
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdFF1YXJh
bnRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMDkwRkU4NkY0OTAw
NUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU4Niw2ICs1NjA2LDE0IEBACiAJCTQx
Qzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpT
U2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMDdBN0Qw
RkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5jcHA7IHBhdGgg
PSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmg7IHBhdGggPSB3b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUND
MEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gQWJzdHJhY3RXb3JrZXIuaWRsOyBwYXRoID0gd29ya2Vycy9BYnN0cmFjdFdvcmtlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTFCMUNEMEZGNTk4NjkwMDU3NkIz
QiAvKiBTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU2hhcmVkV29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaGFyZWRXb3Jr
ZXIuaDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IFNoYXJlZFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL1No
YXJlZFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MEFBMEY1
RUU4QkIwMEEwN0VBQyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjBDQzBGNUVFQjJC
MDBBMDdFQUMgLyogSlNJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTg1Miw3ICs5ODgwLDEzIEBACiAJCTJFNDM0NjMxMEY1NDZBNjgwMEIwRjFC
QSAvKiB3b3JrZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAor
CQkJCTQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAorCQkJ
CTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCiAJCQkJ
MkU0MzQ2MzIwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCisJCQkJ
NDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8sCisJCQkJNDFF
MUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovLAorCQkJCTQxRTFCMUNG
MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsICovLAogCQkJCTJFNDM0NjMzMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovLAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXIuaCAqLywKIAkJCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmlkbCAqLywKQEAgLTEzMzg4LDYgKzEzNDIyLDEwIEBACiAJCUJDMUEzNzkzMDk3QzZGQjEw
MDE5RjNEOCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IuaCAqLywKKwkJCQk0MTVCN0M1NDBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAgKi8sCisJCQkJNDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAv
KiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VE
RDQ5IC8qIEN1c3RvbSAqLywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZl
ZCBTb3VyY2VzICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3Jp
cHRTb3VyY2VQcm92aWRlci5oICovLApAQCAtMTM5NDQsNiArMTM5ODIsMTAgQEAKIAkJRTFDOEJF
NEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVhZHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3Ry
YWN0V29ya2VyLmNwcCAqLywKKwkJCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0
cmFjdFdvcmtlci5oICovLAorCQkJCTQxRDA3QTdDMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJl
ZFdvcmtlci5jcHAgKi8sCisJCQkJNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVk
V29ya2VyLmggKi8sCiAJCQkJRTFDOEJFNUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNw
cCAqLywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJ
CQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAg
LTE2OTM0LDYgKzE2OTc2LDExIEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhT
TFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRE
NkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUUxQjFEMTBG
RjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
RTFCMUQ0MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxNUI3QzYzMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFy
ZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAv
KiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3MDQyLDYgKzE3MDg5LDgg
QEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5D
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTQxRTFCMUQyMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTQx
RTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGluIFJlc291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTE4OTUxLDYgKzE5MDAwLDEzIEBACiAJCQkJOTNGMTlCMDQwODI0NUU1OTAwMUU5QUJD
IC8qIFhTTFRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RE
NEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDFFMUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTVCN0M1NzBGRjU5OEU2MDA2NzcwRjcgLyogSlNBYnN0cmFj
dFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTVCN0M1ODBGRjU5OEU2MDA2
NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0MTVCN0M1OTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFEMDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29y
a2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODJlMDZlMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTQWJzdHJh
Y3RXb3JrZXIuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCisjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRl
ICJKU0V2ZW50VGFyZ2V0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBKU0Fic3RyYWN0V29ya2VyOjptYXJrKCkKK3sKKyAgICBET01PYmpl
Y3Q6Om1hcmsoKTsKKworICAgIG1hcmtJZk5vdE51bGwobV9pbXBsLT5vbmVycm9yKCkpOworCisg
ICAgdHlwZWRlZiBBYnN0cmFjdFdvcmtlcjo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRMaXN0ZW5l
cnNNYXA7CisgICAgdHlwZWRlZiBBYnN0cmFjdFdvcmtlcjo6TGlzdGVuZXJWZWN0b3IgTGlzdGVu
ZXJWZWN0b3I7CisgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzID0gbV9pbXBs
LT5ldmVudExpc3RlbmVycygpOworICAgIGZvciAoRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9y
IG1hcEl0ZXIgPSBldmVudExpc3RlbmVycy5iZWdpbigpOyBtYXBJdGVyICE9IGV2ZW50TGlzdGVu
ZXJzLmVuZCgpOyArK21hcEl0ZXIpIHsKKyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRl
cmF0b3IgdmVjSXRlciA9IG1hcEl0ZXItPnNlY29uZC5iZWdpbigpOyB2ZWNJdGVyICE9IG1hcEl0
ZXItPnNlY29uZC5lbmQoKTsgKyt2ZWNJdGVyKQorICAgICAgICAgICAgKCp2ZWNJdGVyKS0+bWFy
a0pTRnVuY3Rpb24oKTsKKyAgICB9Cit9CisKK0pTVmFsdWUgSlNBYnN0cmFjdFdvcmtlcjo6YWRk
RXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qo
aW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8SlNFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciA9IGdsb2JhbE9iamVjdC0+ZmluZE9yQ3JlYXRlSlNFdmVudExpc3RlbmVy
KGFyZ3MuYXQoMSkpOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpLCBsaXN0ZW5lci5yZWxlYXNlKCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0Fic3RyYWN0V29ya2Vy
OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2Jh
bE9iamVjdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIgPSBnbG9iYWxPYmplY3QtPmZpbmRKU0V2ZW50TGlzdGVuZXIoYXJncy5h
dCgxKSk7CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyksIGxpc3RlbmVyLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEFic3RyYWN0
V29ya2VyKiBiYXNlT2JqZWN0KQoreworICAgIC8vIEp1c3QgY2FsbCB0aGUgSlNFdmVudFRhcmdl
dCBpbXBsZW1lbnRhdGlvbiBvZiB0b0pTKCksIHdoaWNoIGFscmVhZHkgZGlmZmVyZW50aWF0ZXMg
YmV0d2VlbiB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKyAgICByZXR1cm4gdG9KUyhl
eGVjLCBzdGF0aWNfY2FzdDxFdmVudFRhcmdldCo+KGJhc2VPYmplY3QpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMjAxM2ViLi5jMDk1
YmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU09wdGlvbkNvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnN0cnVjdG9yLmgiCkBAIC00NzYsNiArNDc3
LDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OndvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKK0pTVmFsdWUgSlNET01X
aW5kb3c6OnNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMp
OworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5jdGlvbnMKIAogLy8gSGVscGVyIGZvciB3aW5k
b3cub3BlbigpIGFuZCB3aW5kb3cuc2hvd01vZGFsRGlhbG9nKCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDIwNTgwOTguLjg3NWU5MDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSw2ICsx
MDYsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQqIHRhcmdl
dCkKICAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4dCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoU2hhcmVkV29ya2Vy
KiBzaGFyZWRXb3JrZXIgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyKCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHNoYXJlZFdvcmtlcik7CisjZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTEzMiw2ICsxNDIsMTAgQEAgRXZl
bnRUYXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIENPTlZFUlRf
VE9fRVZFTlRfVEFSR0VUKFdvcmtlckNvbnRleHQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChTaGFyZWRXb3JrZXIpCisj
ZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYWQxN2RkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIK
KyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IENs
YXNzSW5mbyBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKKworSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBET01PYmplY3QoSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQor
eworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1NoYXJl
ZFdvcmtlclByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICAv
LyBIb3N0IGZ1bmN0aW9ucyBoYXZlIGEgbGVuZ3RoIHByb3BlcnR5IGRlc2NyaWJpbmcgdGhlIG51
bWJlciBvZiBleHBlY3RlZCBhcmd1bWVudHMuCisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seXxEb250RGVsZXRlfERv
bnRFbnVtKTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RTaGFyZWRXb3JrZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYg
KGFyZ3Muc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4
RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworCisgICAgVVN0cmluZyBzY3JpcHRVUkwg
PSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIFVTdHJpbmcgbmFtZSA9IGFyZ3MuYXQo
MSkudG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIgPSBTaGFyZWRXb3JrZXI6OmNyZWF0ZShzY3Jp
cHRVUkwsIG5hbWUsIGNvbnRleHQsIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworCisgICAgLy8gRklYTUU6IHRvSlMoKSBjcmVhdGVzIGFuIG9iamVjdCB3aG9zZSBwcm90b3R5
cGUgaXMgZGVyaXZlZCBmcm9tIGxleGljYWxHbG9iYWxTY29wZSwgd2hpY2ggaXMgaW5jb3JyZWN0
IChCdWcgMjcwODgpCisgICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMoZXhlYywgd29ya2VyLnJlbGVh
c2UoKSkpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFNoYXJlZFdvcmtlcjsKKyAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iZThiMmI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3JfaAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEpTU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworCisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworCisgICAgICAgIHZpcnR1YWwgY29uc3QgSlND
OjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICB9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisKKyNlbmRpZiAvLyBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODU1MzI5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJK
U1NoYXJlZFdvcmtlci5oIgorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEpTU2hhcmVkV29ya2VyOjptYXJrKCkKK3sKKyAgICBCYXNlOjpt
YXJrKCk7CisKKyAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCktPnBvcnQoKSkgewor
ICAgICAgICBET01PYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKCpI
ZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHBvcnQpOworICAgICAgICBpZiAod3JhcHBl
ciAmJiAhd3JhcHBlci0+bWFya2VkKCkpCisgICAgICAgICAgICB3cmFwcGVyLT5tYXJrKCk7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJ
bmNsdWRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKaW5kZXgg
OTBkZWVhYi4uZTdkMjc0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmpl
Y3RzSW5jbHVkZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUu
aApAQCAtMTk4LDYgKzE5OCwxMSBAQAogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2Vu
ZGlmIC8vIFdPUktFUlMKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRlICJB
YnN0cmFjdFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2VuZGlmIC8vIFNI
QVJFRF9XT1JLRVJTCisKICNpZiBFTkFCTEUoWFBBVEgpCiAjaW5jbHVkZSAiWFBhdGhFdmFsdWF0
b3IuaCIKICNlbmRpZiAvLyBYUEFUSApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluZGV4LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKaW5kZXggNzc3MjAx
Ni4uZjJmNGU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCkBAIC0zNzYsNiArMzc2LDExIEBA
CiAjaW5jbHVkZSAiVjhXb3JrZXJOYXZpZ2F0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJW
OFNoYXJlZFdvcmtlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRnVuY3Rp
b25UZW1wbGF0ZUZhY3RvcnkgVjhDbGFzc0luZGV4OjpHZXRGYWN0b3J5KFY4V3JhcHBlclR5cGUg
dHlwZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXggYjIzOGQ3MC4uNTNlZWVhOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmgKQEAgLTY1LDYgKzY1LDE3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAjZGVmaW5l
IFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKICNlbmRpZgogCisjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorI2RlZmluZSBTSEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBF
Ul9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoU0hBUkVEV09SS0VSLCBTaGFy
ZWRXb3JrZXIpCisKKyNkZWZpbmUgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMo
VikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKEFCU1RSQUNUV09SS0VSLCBBYnN0
cmFjdFdvcmtlcikKKyNlbHNlCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfQUNUSVZFX09CSkVDVF9X
UkFQUEVSX1RZUEVTKFYpCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZ
UEVTKFYpCisjZW5kaWYKKwogI2RlZmluZSBET01fTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQVRUUiwgQXR0cikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFYoQ0hBUkFDVEVSREFUQSwgQ2hhcmFjdGVyRGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXApAQCAtMjY3LDcgKzI3OCw4IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAjZGVm
aW5lIEFDVElWRV9ET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgVihNRVNTQUdFUE9SVCwgTWVzc2FnZVBvcnQpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYTUxIVFRQUkVRVUVTVCwgWE1M
SHR0cFJlcXVlc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgV09S
S0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorICAgIFdPUktFUl9BQ1RJVkVfT0JK
RUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IFNIQVJFRF9XT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpCiAKIC8vIE5PVEU6
IERPTV9PQkpFQ1RfVFlQRVMgaXMgc3BsaXQgaW50byB0d28gaGFsdmVzIGJlY2F1c2UKIC8vICAg
ICAgIFZpc3VhbCBTdHVkaW8ncyBJbnRlbGxpbm9uc2Vuc2UgY3Jhc2hlcyB3aGVuIG1hY3JvcyBn
ZXQKQEAgLTM2NSw2ICszNzcsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogICAgIFYoWFNMVFBST0NF
U1NPUiwgWFNMVFByb2Nlc3NvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIEFDVElWRV9ET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIFZJREVPX05PTk5PREVfVFlQRVMoVikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNIQVJFRF9XT1JLRVJf
Tk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKIAogI2lmIEVOQUJMRShEQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3Jr
ZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjg2MGRiOQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RX
b3JrZXJDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIK
KworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhPYmplY3RFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKEFic3RyYWN0V29ya2VyKiB3b3JrZXIsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGZpbmRPbmx5KQoreworICAgIGlmICh3b3Jr
ZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJDb250ZXh0KCkpIHsKKyAgICAg
ICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiB3b3JrZXJDb250ZXh0UHJveHkgPSBXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJldHJpZXZlKCk7CisgICAgICAgIEFTU0VSVCh3b3Jr
ZXJDb250ZXh0UHJveHkpOworICAgICAgICByZXR1cm4gd29ya2VyQ29udGV4dFByb3h5LT5maW5k
T3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSwgZmluZE9ubHkpOworICAg
IH0KKworICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUod29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChwcm94eSkKKyAgICAgICAgcmV0dXJuIGZp
bmRPbmx5ID8gcHJveHktPmZpbmRPYmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSkgOiBw
cm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpOworCisg
ICAgcmV0dXJuIDA7Cit9CisKK0FDQ0VTU09SX0dFVFRFUihBYnN0cmFjdFdvcmtlck9uZXJyb3Ip
Cit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLm9uZXJyb3IuX2dldCIpOwor
ICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGluZm8uSG9s
ZGVyKCkpOworICAgIGlmICh3b3JrZXItPm9uZXJyb3IoKSkgeworICAgICAgICBWOE9iamVjdEV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RFdmVudExpc3RlbmVy
Kj4od29ya2VyLT5vbmVycm9yKCkpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhM
aXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICByZXR1cm4g
djhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQUND
RVNTT1JfU0VUVEVSKEFic3RyYWN0V29ya2VyT25lcnJvcikKK3sKKyAgICBJTkNfU1RBVFMoTCJE
T00uQWJzdHJhY3RXb3JrZXIub25lcnJvci5fc2V0Iik7CisgICAgQWJzdHJhY3RXb3JrZXIqIHdv
cmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4oVjhD
bGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhPYmplY3RF
dmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0RXZlbnRMaXN0
ZW5lcio+KHdvcmtlci0+b25lcnJvcigpKTsKKyAgICBpZiAodmFsdWUtPklzTnVsbCgpKSB7Cisg
ICAgICAgIGlmIChvbGRMaXN0ZW5lcikgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0
ZW5lciwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lci4KKyAgICAgICAgd29ya2VyLT5z
ZXRPbmVycm9yKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IGdldEV2ZW50TGlzdGVuZXIod29ya2VyLCB2YWx1ZSwgZmFsc2UpOworICAg
ICAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgeworICAg
ICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgcmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a0Fic3Ry
YWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB3b3JrZXItPnNldE9uZXJyb3IobGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtl
clJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAgIH0KK30KKworQ0FMTEJBQ0tfRlVO
Q19ERUNMKEFic3RyYWN0V29ya2VyQWRkRXZlbnRMaXN0ZW5lcikKK3sKKyAgICBJTkNfU1RBVFMo
TCJET00uQWJzdHJhY3RXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigpIik7CisgICAgQWJzdHJhY3RX
b3JrZXIqIHdvcmtlciA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdv
cmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7CisKKyAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVyKHdvcmtl
ciwgYXJnc1sxXSwgZmFsc2UpOworICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICBTdHJpbmcg
dHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICAgICAgYm9vbCB1c2VDYXB0dXJl
ID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CisgICAgICAgIHdvcmtlci0+YWRkRXZlbnRMaXN0
ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAgICAgICAgY3JlYXRlSGlkZGVu
RGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a0Fic3RyYWN0V29y
a2VyUmVxdWVzdENhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woQWJzdHJhY3RXb3JrZXJSZW1vdmVFdmVudExpc3Rl
bmVyKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5yZW1vdmVFdmVudExp
c3RlbmVyKCkiKTsKKyAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhQcm94eTo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09S
S0VSLCBhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciA9IGdldEV2ZW50TGlzdGVuZXIod29ya2VyLCBhcmdzWzFdLCB0cnVlKTsKKyAgICBpZiAobGlz
dGVuZXIpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7
CisgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAg
ICAgICB3b3JrZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIuZ2V0KCksIHVz
ZUNhcHR1cmUpOworCisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIo
KSwgYXJnc1sxXSwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RDYWNoZUluZGV4KTsK
KyAgICB9CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDYwODNhYzUuLjc2MDk1
MjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBA
IC0xMjYsNiArMTI2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrV29ya2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBl
ckludGVybmFsRmllbGRDb3VudCArIDE7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2Fj
aGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0Rl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKyNlbmRpZgorCiAgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0NvbnNvbGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRv
d0hpc3RvcnlJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0xvY2F0aW9uYmFySW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAyOwpAQCAtNDg3LDYgKzQ5MiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4
dFJlbW92ZUV2ZW50TGlzdGVuZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQWJzdHJhY3RXb3JrZXJPbmVy
cm9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlz
dGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyUmVtb3ZlRXZl
bnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU2hhcmVkV29ya2VyQ29uc3Ry
dWN0b3IpOworI2VuZGlmCisKICN1bmRlZiBERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNLCiAj
dW5kZWYgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0sKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLjNhYjJmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw5NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0
b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhPYmplY3RFdmVudExpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NBTExCQUNLX0ZVTkNfREVDTChTaGFyZWRXb3JrZXJDb25z
dHJ1Y3RvcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uU2hhcmVkV29ya2VyLkNvbnN0cnVjdG9y
Iik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4iKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3Ip
OworCisgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgIHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gc2NyaXB0VXJsID0gYXJnc1swXS0+VG9TdHJpbmcoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IG5hbWUgPSBhcmdzWzFdLT5Ub1N0cmluZygpOworICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkp
OworCisgICAgaWYgKHNjcmlwdFVybC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisKKyAgICAvLyBHZXQgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gMDsKKyAgICBXb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRy
aWV2ZSgpOworICAgIGlmIChwcm94eSkKKyAgICAgICAgY29udGV4dCA9IHByb3h5LT53b3JrZXJD
b250ZXh0KCk7CisgICAgZWxzZSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJl
dHJpZXZlRnJhbWUoKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIGNvbnRleHQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIHdvcmtlciBvYmplY3QuCisgICAgLy8gTm90ZTogaXQn
cyBPSyB0byBsZXQgdGhpcyBSZWZQdHIgZ28gb3V0IG9mIHNjb3BlIGJlY2F1c2Ugd2UgYWxzbyBj
YWxsIFNldERPTVdyYXBwZXIoKSwgd2hpY2ggZWZmZWN0aXZlbHkgaG9sZHMgYSByZWZlcmVuY2Ug
dG8gb2JqLgorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxTaGFyZWRXb3Jr
ZXI+IG9iaiA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHRvV2ViQ29yZVN0cmluZyhzY3JpcHRVcmwp
LCB0b1dlYkNvcmVTdHJpbmcobmFtZSksIGNvbnRleHQsIGVjKTsKKworICAgIC8vIFNldHVwIHRo
ZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVsZHMuCisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyT2JqZWN0ID0gYXJncy5Ib2xkZXIoKTsKKyAgICBWOFByb3h5
OjpzZXRET01XcmFwcGVyKHdyYXBwZXJPYmplY3QsIFY4Q2xhc3NJbmRleDo6U0hBUkVEV09SS0VS
LCBvYmouZ2V0KCkpOworCisgICAgb2JqLT5yZWYoKTsKKyAgICBWOFByb3h5OjpzZXRKU1dyYXBw
ZXJGb3JBY3RpdmVET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Pjo6TmV3KHdyYXBwZXJPYmplY3QpKTsKKworICAgIHJldHVybiB3cmFwcGVyT2JqZWN0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKaW5kZXggMDZjZWEwNy4uNDM3ZjViYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cApAQCAtOTUsNiArOTUsMTMgQEAgV29ya2VyQ29udGV4dCogRXZlbnRUYXJnZXQ6OnRvV29ya2Vy
Q29udGV4dCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKK1NoYXJl
ZFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBmb3JiaWRFdmVudERpc3BhdGNoKCkK
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oCmluZGV4IDY2MjkwMmUuLjczYTMyZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMzYs
NiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBYnN0cmFjdFdv
cmtlcjsKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25D
YWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsK
ICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFNoYXJlZFdvcmtl
cjsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdDsKQEAgLTcwLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgICAgICB2aXJ0dWFsIFNoYXJlZFdv
cmtlciogdG9TaGFyZWRXb3JrZXIoKTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSA9
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCmluZGV4IGEyM2Q3MDguLmJmZGViZDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBA
IC00NjEsNiArNDYxLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pT
Q0N1c3RvbUdldHRlcl0gV29ya2VyQ29uc3RydWN0b3IgV29ya2VyOyAvLyBVc2FibGUgd2l0aCB0
aGUgbmV3IG9wZXJhdG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAmJiBFTkFCTEVfU0hBUkVEX1dPUktFUlMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0
b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxl
IHdpdGggdGhlIG5ldyBvcGVyYXRvcgorI2VuZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdp
bkNvbnN0cnVjdG9yIFBsdWdpbjsKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3Ry
dWN0b3IgUGx1Z2luQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjRmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAi
QWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0Fic3RyYWN0V29ya2VyOjpBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisK
K0Fic3RyYWN0V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIoKQoreworfQorCit2b2lkIEFic3RyYWN0
V29ya2VyOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCit7CisgICAgRXZl
bnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZl
bnRUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKSB7CisgICAg
ICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChl
dmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBs
aXN0ZW5lcnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5l
cnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9y
IGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVu
ZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICAgICAgaWYgKCpsaXN0ZW5lckl0
ZXIgPT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2
ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQorfQorCit2b2lk
IEFic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQoreworICAgIEV2
ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2
ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29u
ZDsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIg
PSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKyts
aXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5l
cikgeworICAgICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0ZW5l
cnMuYmVnaW4oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Jvb2wgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZXZlbnQgfHwgZXZlbnQtPnR5cGUo
KS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURf
RVZFTlRfVFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExpc3Rl
bmVyVmVjdG9yIGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzLmdldChldmVudC0+dHlw
ZSgpKTsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0
ZXIgPSBsaXN0ZW5lcnNDb3B5LmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnNDb3B5
LmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMp
OworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbGlzdGVu
ZXJJdGVyLT5nZXQoKS0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisK
KyAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7Cit9CisKK3ZvaWQgQWJzdHJh
Y3RXb3JrZXI6OmRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKQoreworICAgIFJlZlB0cjxFdmVudD4g
ZXZ0ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUp
OworICAgIGlmIChtX29uRXJyb3JMaXN0ZW5lcikgeworICAgICAgICBldnQtPnNldFRhcmdldCh0
aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29u
RXJyb3JMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCks
IGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0
Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludCkKK3sK
KyAgICAvL0ZJWE1FOiBHZW5lcmF0ZSBhbiBFcnJvckV2ZW50IGluc3RlYWQgb2YgYSBzaW1wbGUg
ZXZlbnQKKyAgICBkaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2ZDhjOAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFic3RyYWN0V29ya2VyX2gKKyNkZWZpbmUgQWJzdHJhY3RXb3Jr
ZXJfaAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiQXRvbWljU3Ry
aW5nSGFzaC5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEFic3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSXMKKyAgICAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgICAgIC8vIFV0aWxpdHkgcm91dGluZXMgdG8gZ2VuZXJhdGUg
YXBwcm9wcmlhdGUgZXJyb3IgZXZlbnRzIGZvciBsb2FkaW5nIGFuZCBzY3JpcHQgZXhjZXB0aW9u
cy4KKyAgICAgICAgdm9pZCBkaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7CisgICAgICAgIHZvaWQg
ZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50KTsKKworICAgICAgICB2b2lkIHNldE9uZXJyb3IoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25FcnJvckxpc3RlbmVy
ID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29u
c3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVy
c01hcDsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1
cm4gbV9ldmVudExpc3RlbmVyczsgfQorCisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RXb3JrZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+
OjpkZXJlZjsKKworICAgICAgICBBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgICAgIHZpcnR1YWwgfkFic3RyYWN0V29ya2VyKCk7CisKKyAgICBwcml2YXRlOgor
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIEV2ZW50
TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8g
QWJzdHJhY3RXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmlkbCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzNGMwZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJl
YWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVNIQVJFRF9XT1JL
RVJTLAorICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEN1c3RvbVRvSlMsCisg
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIEFic3RyYWN0V29ya2VyIHsKKworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworCisgICAgICAgIFtDdXN0b21d
IHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUp
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2
ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cisg
ICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAg
Yi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lMWQzMGQzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKwor
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhcmVk
V29ya2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYpCisgICAgOiBBYnN0cmFj
dFdvcmtlcihjb250ZXh0KQoreworICAgIC8vIFBsYWNlaG9sZGVyIC0gdWx0aW1hdGVseSB3ZSds
bCBsb29rIHVwIHRoZSB3b3JrZXIgaW4gdGhlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuCit9CisK
K1NoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjN2Q4NQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTaGFyZWRXb3JrZXJfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJfaAorCisjaW5j
bHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIFNoYXJlZFdvcmtlciA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWRXb3JrZXIodXJsLCBuYW1lLCBjb250ZXh0LCBlYykpOworICAgICAg
ICB9CisgICAgICAgIH5TaGFyZWRXb3JrZXIoKTsKKyAgICAgICAgTWVzc2FnZVBvcnQqIHBvcnQo
KSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIFNoYXJl
ZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBTaGFyZWRXb3JrZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAg
ICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFyZWRXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTQ3NWY3Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PVNIQVJFRF9XT1JLRVJTLAorICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEdl
bmVyYXRlTmF0aXZlQ29udmVydGVyLAorICAgICAgICBHZW5lcmF0ZVRvSlMKKyAgICBdIFNoYXJl
ZFdvcmtlciA6IEFic3RyYWN0V29ya2VyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
c3NhZ2VQb3J0IHBvcnQ7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5MTE1NTI4Li45Y2YxMjRhIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTExICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBB
UElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkz
MgorCisgICAgICAgIEFkZGVkIEVOQUJMRShTSEFSRURfV09SS0VSUykgZmxhZyAoZGlzYWJsZWQg
YnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKwogMjAwOS0wNy0wOSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvV2ViS2l0
L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBiZTk2ZDI1
Li4xYWRmNjcwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTM5LDYgKzM5LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwog
RU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitF
TkFCTEVfU0hBUkVEX1dPUktFUlMgPSA7CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJM
RV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJT047CiBFTkFCTEVfU1ZHX0FTX0lN
QUdFID0gRU5BQkxFX1NWR19BU19JTUFHRTsKQEAgLTUyLDQgKzUzLDQgQEAgRU5BQkxFX1dPUktF
UlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJM
RV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JF
TkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJM
RV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJ
RCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU0hBUkVEX1dP
UktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZH
X0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFU
SCkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNGNkY2JjNy4uNDUzOTA1ZiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDA5LTA3LTExICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVO
QUJMRShTSEFSRURfV09SS0VSUykgZmxhZyBhbmQgZGVmaW5lIFNoYXJlZFdvcmtlciBBUElzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzMgorCisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIC0tc2hhcmVkLXdvcmtlcnMgKHR1cm5lZCBvZmYgYnkg
ZGVmYXVsdCkKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDA5LTA3LTEw
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTb3J0IGFsbCBvdXIg
WGNvZGUgcHJvamVjdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZjQ5Zjc5OS4uZDQx
YTg2ZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTQ2LDEwICs0NiwxMCBAQCBteSAk
bWFrZUFyZ3M7CiAKIG15ICgkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdp
bmdTdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZG9tU3RvcmFnZVN1cHBvcnQsCiAgICAgJGZp
bHRlcnNTdXBwb3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkZ25vbWVLZXlyaW5nU3VwcG9ydCwg
JGljb25EYXRhYmFzZVN1cHBvcnQsCi0gICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRv
ZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1
cHBvcnQsCi0gICAgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9y
dCwgJHN2Z0ZvbnRzU3VwcG9ydCwgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LAotICAgICRzdmdV
c2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LCAk
eHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsCi0gICAgJGNvdmVyYWdlU3VwcG9ydCk7CisgICAg
JGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0
LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsICRzdmdTdXBwb3J0LAorICAgICRzdmdBbmltYXRpb25T
dXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAk
c3ZnRm9udHNTdXBwb3J0LAorICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1
cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCisgICAg
JHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0KTsKIAogbXkgQGZl
YXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICIzZC1yZW5kZXJpbmciLCBkZXNjID0+ICJUb2dn
bGUgM0QgcmVuZGVyaW5nIHN1cHBvcnQiLApAQCAtODUsNiArODUsOSBAQCBteSBAZmVhdHVyZXMg
PSAoCiAgICAgeyBvcHRpb24gPT4gIm9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyIsIGRlc2MgPT4g
IlRvZ2dsZSBPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbiBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUg
PT4gXCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAi
c2hhcmVkLXdvcmtlcnMiLCBkZXNjID0+ICJUb2dnbGUgU2hhcmVkV29ya2VycyBzdXBwb3J0IiwK
KyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1NIQVJFRF9XT1JLRVJTIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJHNoYXJlZFdvcmtlcnNTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAic3Zn
IiwgZGVzYyA9PiAiVG9nZ2xlIFNWRyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X1NWRyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRzdmdTdXBwb3J0IH0sCiAKZGlmZiAtLWdp
dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiM2Y0YTcyLi5jYTNlYmY1IDEw
MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC00MDksNiArNDA5
LDE0IEBAIEFDX0FSR19FTkFCTEUod21sLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dtbD0i
bm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd21sXSkKIAorIyBjaGVjayB3aGV0aGVyIHRv
IGVuYWJsZSBTaGFyZWRXb3JrZXJzIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0
byBlbmFibGUgU2hhcmVkV29ya2VycyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoc2hhcmVkX3dv
cmtlcnMsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWQtd29y
a2Vyc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3Ig
U2hhcmVkV29ya2VycyBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9z
aGFyZWRfd29ya2Vycz0ibm8iXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkX3dvcmtl
cnNdKQorCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBXb3JrZXJzIHN1cHBvcnQKIEFD
X01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgV2ViIFdvcmtlcnMgc3VwcG9ydF0pCiBB
Q19BUkdfRU5BQkxFKHdvcmtlcnMsCkBAIC02OTEsNiArNjk5LDcgQEAgQU1fQ09ORElUSU9OQUwo
W0VOQUJMRV9DT1ZFUkFHRV0sW3Rlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyJdKQogQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV9GQVNUX01BTExPQ10sW3Rlc3QgIiRlbmFibGVfZmFzdF9tYWxs
b2MiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9XTUxdLFt0ZXN0ICIkZW5hYmxl
X3dtbCIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1dPUktFUlNdLFt0ZXN0ICIk
ZW5hYmxlX3dvcmtlcnMiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9TSEFSRURf
V09SS0VSU10sW3Rlc3QgIiRlbmFibGVfc2hhcmVkX3dvcmtlcnMiID0gInllcyJdKQogQU1fQ09O
RElUSU9OQUwoW1NWR19GTEFHU10sW3Rlc3QgIiRzdmdfZmxhZ3MiID0gInllcyJdKQogQU1fQ09O
RElUSU9OQUwoW0hUTUxfRkxBR1NdLFt0ZXN0ICIkaHRtbF9mbGFncyIgPSAieWVzIl0pCiAKQEAg
LTcyOSw2ICs3MzgsNyBAQCBGZWF0dXJlczoKICBIVE1MNSBjbGllbnQtc2lkZSBkYXRhYmFzZSBz
dG9yYWdlIHN1cHBvcnQgICAgICAgICAgICAgICA6ICRlbmFibGVfZGF0YWJhc2UKICBIVE1MNSB2
aWRlbyBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfdmlkZW8KICBJY29uIGRhdGFiYXNlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICRlbmFibGVfaWNvbl9kYXRhYmFzZQorIFNoYXJlZFdvcmtlcnMgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zaGFyZWRfd29y
a2VycwogIFNWRyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV9zdmcKICBTVkcgYW5pbWF0aW9uIHN1cHBvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnX2FuaW1hdGlvbgogIFNWRyBmb250
cyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9zdmdfZm9udHMK
</data>
<flag name="review"
          id="17025"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>