<?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>156068</bug_id>
          
          <creation_ts>2016-03-31 09:46:27 -0700</creation_ts>
          <short_desc>Modern IDB: Dump blobs to disk before storing them in an object store</short_desc>
          <delta_ts>2016-04-05 09:34:03 -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 Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143193</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179447</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-31 09:46:27 -0700</bug_when>
    <thetext>Modern IDB: Dump blobs to disk before storing them in an object store</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179451</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-31 09:49:14 -0700</bug_when>
    <thetext>This is a bit complicated due to https://bugs.webkit.org/show_bug.cgi?id=129979, but that change didn&apos;t really buy us anything so I&apos;m basically going to be undoing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180544</commentid>
    <comment_count>2</comment_count>
      <attachid>275585</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 15:53:30 -0700</bug_when>
    <thetext>Created attachment 275585
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180545</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 15:54:10 -0700</bug_when>
    <thetext>This patch dumps Blobs/Files to a temporary file on disk.

That&apos;s it - nothing more.

It&apos;s required for the actual IDB work going forward, but is a nice reviewable chunk by itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180548</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-04 15:54:59 -0700</bug_when>
    <thetext>Attachment 275585 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:244:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2750:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 10 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180559</commentid>
    <comment_count>5</comment_count>
      <attachid>275585</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-04 16:22:40 -0700</bug_when>
    <thetext>Comment on attachment 275585
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/IDBValue.h:34
&gt; +class IDBValue {
&gt; +public:
&gt; +    IDBValue();
&gt; +};

This is the ideal class.  Please make more like this.

&gt; Source/WebCore/platform/FileSystem.cpp:137
&gt; +    if (!isHandleValid(source))

Probably return false if target is invalid, too.

&gt; Source/WebCore/platform/FileSystem.cpp:141
&gt; +    static int bufferSize = 1 &lt;&lt; 20;
&gt; +    Vector&lt;char&gt; buffer(bufferSize);

1MB might be a bit big for a buffer.

&gt; Source/WebCore/platform/FileSystem.cpp:143
&gt; +    ScopeGuard fileCloser([source, buffer]() {

No need to capture buffer.

&gt; Source/WebCore/platform/FileSystem.cpp:145
&gt; +        PlatformFileHandle handle = source;
&gt; +        closeFile(handle);

Is this first line really needed?  We can&apos;t just close source?

&gt; Source/WebCore/platform/network/BlobRegistryImpl.cpp:235
&gt; +    static auto&amp; queue = WorkQueue::create(&quot;org.webkit.BlobUtility&quot;, WorkQueue::Type::Serial, WorkQueue::QOS::Background).leakRef();

NeverDestroyed.

&gt; Source/WebCore/platform/network/BlobRegistryImpl.cpp:286
&gt; +                callOnMainThread([completionHandler]() {
&gt; +                    Vector&lt;String&gt; filePaths;
&gt; +                    completionHandler(filePaths);
&gt; +                });

This is redundant.  Lots of calling the same thing on main thread.

&gt; Source/WebCore/platform/network/BlobRegistryImpl.cpp:290
&gt; +            for (auto&amp; part : blob.filePathsOrDataBuffers) {

ASSERT(part.first.isNull() || part.second.isEmpty())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180563</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 16:28:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 275585 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275585&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBValue.h:34
&gt; &gt; +class IDBValue {
&gt; &gt; +public:
&gt; &gt; +    IDBValue();
&gt; &gt; +};
&gt; 
&gt; This is the ideal class.  Please make more like this.

Will do.

&gt; 
&gt; &gt; Source/WebCore/platform/FileSystem.cpp:137
&gt; &gt; +    if (!isHandleValid(source))
&gt; 
&gt; Probably return false if target is invalid, too.
&gt; 
&gt; &gt; Source/WebCore/platform/FileSystem.cpp:141
&gt; &gt; +    static int bufferSize = 1 &lt;&lt; 20;
&gt; &gt; +    Vector&lt;char&gt; buffer(bufferSize);
&gt; 
&gt; 1MB might be a bit big for a buffer.

s/1 &lt;&lt; 20/1 &lt;&lt; 19/

&gt; &gt; Source/WebCore/platform/FileSystem.cpp:145
&gt; &gt; +        PlatformFileHandle handle = source;
&gt; &gt; +        closeFile(handle);
&gt; 
&gt; Is this first line really needed?  We can&apos;t just close source?

Bizarrely yes, because captured arguments lose their const&apos;ness, but closeFile expects an actual const int as its argument.

&gt; &gt; Source/WebCore/platform/network/BlobRegistryImpl.cpp:235
&gt; &gt; +    static auto&amp; queue = WorkQueue::create(&quot;org.webkit.BlobUtility&quot;, WorkQueue::Type::Serial, WorkQueue::QOS::Background).leakRef();
&gt; 
&gt; NeverDestroyed.

NeverCaughtByTheCompilerAndLinker

&gt; &gt; Source/WebCore/platform/network/BlobRegistryImpl.cpp:286
&gt; &gt; +                callOnMainThread([completionHandler]() {
&gt; &gt; +                    Vector&lt;String&gt; filePaths;
&gt; &gt; +                    completionHandler(filePaths);
&gt; &gt; +                });
&gt; 
&gt; This is redundant.  Lots of calling the same thing on main thread.

Will rework it into the scope guard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180570</commentid>
    <comment_count>7</comment_count>
      <attachid>275590</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 16:39:02 -0700</bug_when>
    <thetext>Created attachment 275590
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180574</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-04 16:41:34 -0700</bug_when>
    <thetext>Attachment 275590 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:245:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2750:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 10 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180696</commentid>
    <comment_count>9</comment_count>
      <attachid>275636</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 21:52:31 -0700</bug_when>
    <thetext>Created attachment 275636
Patch for landing v2

Patch for landing again... does style bot really prevent commit queue? That&apos;s BS, if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180697</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-04 21:53:03 -0700</bug_when>
    <thetext>Going to let style bot complain, *then* mark cq+... just to try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180698</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-04 21:54:21 -0700</bug_when>
    <thetext>Attachment 275636 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:245:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2750:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 10 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180719</commentid>
    <comment_count>12</comment_count>
      <attachid>275636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-04 22:47:38 -0700</bug_when>
    <thetext>Comment on attachment 275636
Patch for landing v2

Clearing flags on attachment: 275636

Committed r199043: &lt;http://trac.webkit.org/changeset/199043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180822</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-04-05 08:58:58 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 275636 [details]
&gt; Patch for landing v2
&gt; 
&gt; Clearing flags on attachment: 275636
&gt; 
&gt; Committed r199043: &lt;http://trac.webkit.org/changeset/199043&gt;

FYI: It broke the Apple Mac cmake and the WinCairo build.
See build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180823</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-04-05 09:00:33 -0700</bug_when>
    <thetext>and the Apple Windows build too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180838</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-05 09:34:03 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/199058 and http://trac.webkit.org/changeset/199059</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275585</attachid>
            <date>2016-04-04 15:53:30 -0700</date>
            <delta_ts>2016-04-04 16:22:40 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40986</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODUxMGI1Ny4uNGU0NDA3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg1MCw2ICs4NTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0Q29tcGxldGlvbkV2ZW50LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFl
MGY1NjAuLmM0OWFlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wNC0wNCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjog
RHVtcCBibG9icyB0byBkaXNrIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW4gYW4gb2JqZWN0IHN0b3Jl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDY4
CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKFVuZGVyIGRldmVsb3BtZW50LCBubyBvYnNlcnZhYmxlIGNoYW5nZSBp
biBiZWhhdmlvciB5ZXQpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWYWx1ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njb3BlR3VhcmQuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlZhbHVlOjpJREJWYWx1ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
OgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rp
b25PcGVyYXRpb24uaDoKKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkZEJsb2JVUkwpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEZp
bGVDb250ZW50c1RvRmlsZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5o
OgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJs
b2JVdGlsaXR5UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6d3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5oOgorCiAyMDE2LTAzLTMxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFN1cHBvcnQgZG93bmxvYWQgYXR0cmlidXRlIGZl
YXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCA0ZWJkNjI0Li5lZTk4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC04NjcsOCArODY3
LDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyIik7CiAKICAgICBBU1NFUlQoIWlzUmVhZE9ubHko
KSk7Ci0KLSAgICBzZXJ2ZXJDb25uZWN0aW9uKCkucHV0T3JBZGQob3BlcmF0aW9uLCBrZXksIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICBBU1NFUlQodmFsdWUpOworCisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+IG9wZXJhdGlvblJlZigmb3BlcmF0aW9uKTsKKyAgICB2YWx1ZS0+
d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihbcHJvdGVjdG9yLCB0aGlzLCBvcGVyYXRpb25S
ZWYsIGtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdKGNvbnN0IElEQlZhbHVlJikgeworICAgICAg
ICAvLyBGSVhNRTogU2VuZCB0aGUgcGFzc2VkIGluIElEQlZhbHVlIHRvIHRoZSBJREIgc2VydmVy
IGluc3RlYWQgb2YgdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKyAgICAgICAgc2VydmVyQ29u
bmVjdGlvbigpLnB1dE9yQWRkKCpvcGVyYXRpb25SZWYsIGtleS5nZXQoKSwgKnZhbHVlLCBvdmVy
d3JpdGVNb2RlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JB
ZGRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMDE3NDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJREJWYWx1ZS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSURCVmFsdWU6OklEQlZhbHVlKCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNTY0ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCVmFsdWUgeworcHVibGljOgorICAgIElEQlZhbHVl
KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggNWJj
ZWQzZi4uZDNmMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTE3
MSwxMiArMTcxLDEyIEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVJbmRl
eChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIGNvbXBsZXRlT3BlcmF0aW9u
KHJlc3VsdERhdGEpOwogfQogCi12b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQo
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgUmVmUHRyPElEQktleT4mIGtleSwgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQordm9pZCBJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OnB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIElEQktleSog
a2V5LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkIik7CiAKICAgICBzYXZlT3BlcmF0aW9u
KG9wZXJhdGlvbik7Ci0gICAgbV9kZWxlZ2F0ZS0+cHV0T3JBZGQoSURCUmVxdWVzdERhdGEob3Bl
cmF0aW9uKSwga2V5LmdldCgpLCAqdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOworICAgIG1fZGVsZWdh
dGUtPnB1dE9yQWRkKElEQlJlcXVlc3REYXRhKG9wZXJhdGlvbiksIGtleSwgdmFsdWUsIG92ZXJ3
cml0ZU1vZGUpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkUHV0T3JBZGQo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaAppbmRleCAyMTYwOGJlLi5jMTcxMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KFRyYW5z
YWN0aW9uT3BlcmF0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWREZWxldGVJbmRl
eChjb25zdCBJREJSZXN1bHREYXRhJik7CiAKLSAgICB2b2lkIHB1dE9yQWRkKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgUmVmUHRyPElEQktleT4mLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lk
IHB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwog
CiAgICAgdm9pZCBnZXRSZWNvcmQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggM2MwOWUyNi4uNjVk
Mjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgZW51
bSBjbGFzcyBJbmRleFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJREJDbGllbnQgewogCi1jbGFz
cyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiB7CitjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gewogcHVibGljOgogICAgIHZvaWQgcGVy
Zm9ybSgpCiAgICAgewpAQCAtOTIsNyArOTIsNiBAQCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdm9pZCAoSURCVHJhbnNh
Y3Rpb246Oipjb21wbGV0ZU1ldGhvZCkoY29uc3QgSURCUmVzdWx0RGF0YSYpLCB2b2lkIChJREJU
cmFuc2FjdGlvbjo6KnBlcmZvcm1NZXRob2QpKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgQXJndW1l
bnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgICAgICA6IFRyYW5zYWN0aW9u
T3BlcmF0aW9uKHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gc2VsZih0aGlz
KTsKIAogICAgICAgICBBU1NFUlQocGVyZm9ybU1ldGhvZCk7CkBAIC0xMTEsNyArMTEwLDYgQEAg
cHVibGljOgogICAgIFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbChJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIElEQlJlcXVlc3QmIHJlcXVlc3QsIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGVNZXRob2QpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBBcmd1
bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVHJhbnNhY3Rp
b25PcGVyYXRpb24odHJhbnNhY3Rpb24sIHJlcXVlc3QpCiAgICAgewotICAgICAgICByZWxheEFk
b3B0aW9uUmVxdWlyZW1lbnQoKTsKICAgICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBzZWxmKHRoaXMpOwogCiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzODFi
NjBlLi42ODViNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMDQzLDYgKzIwNDMsOCBAQAogCQk1MTYwNzEyRjFCRDgzMDc4
MDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwNzEyRDFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2Jq
ZWN0U3RvcmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE2MDcxMzIxQkQ4MzA4QjAwREJDNEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwNzEy
QjFCRDgzMDUzMDBEQkM0RjIgLyogVHJhbnNhY3Rpb25PcGVyYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTYwRjQ5ODBCMEFBNzVGMDBD
MUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1N
YWMubW0gKi87IH07CisJCTUxNjEwM0FGMUNBREJBNzcwMDE2QjRDNyAvKiBJREJWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MTAzQUUxQ0FE
QjlBMzAwMTZCNEM3IC8qIElEQlZhbHVlLmggKi87IH07CisJCTUxNjEwM0IwMUNBREJBN0EwMDE2
QjRDNyAvKiBJREJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTYxMDNBRDFDQURCOUEzMDAxNkI0QzcgLyogSURCVmFsdWUuY3BwICovOyB9
OwogCQk1MTYyQzdGNDExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MkM3RjIxMUY3N0VG
QTAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNTE2MkM3RjUxMUY3N0VG
QjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyQzdGMzExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVn
aXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTY5NTM5NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY5NTM5NTEzMjlBM0M4
MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi87IH07CkBAIC05NTkwLDYgKzk1OTIs
OCBAQAogCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5m
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjA3MTJEMUJEODMwNzIwMERC
QzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCT2JqZWN0U3RvcmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpc3RvcnlJdGVtTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTYxMDNBRDFDQURCOUEzMDAxNkI0QzcgLyogSURCVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYxMDNBRTFDQURCOUEzMDAxNkI0Qzcg
LyogSURCVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MkM3RjIxMUY3N0VGQTAwNjEyRUZF
IC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjaGVtZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2
MkM3RjMxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVtZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjQ1QjQxMUI5Rjg4OUIwMEY3ODlDRSAvKiBJREJDdXJzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTU4Miw2ICsxOTU4Niw4IEBACiAJCQkJNTE2NDVCNTAxQjlGODg5QjAw
Rjc4OUNFIC8qIElEQlRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MTY0NUI1MTFCOUY4ODlCMDBG
Nzg5Q0UgLyogSURCVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk1MUQ3MTlBNjE4MTEwNkUwMDAxNkRD
NTEgLyogSURCVHJhbnNhY3Rpb24uaWRsICovLAorCQkJCTUxNjEwM0FEMUNBREI5QTMwMDE2QjRD
NyAvKiBJREJWYWx1ZS5jcHAgKi8sCisJCQkJNTE2MTAzQUUxQ0FEQjlBMzAwMTZCNEM3IC8qIElE
QlZhbHVlLmggKi8sCiAJCQkJNTE2NDVCNTIxQjlGODg5QjAwRjc4OUNFIC8qIElEQlZlcnNpb25D
aGFuZ2VFdmVudC5jcHAgKi8sCiAJCQkJNTE2NDVCNTMxQjlGODg5QjAwRjc4OUNFIC8qIElEQlZl
cnNpb25DaGFuZ2VFdmVudC5oICovLAogCQkJCTUxRDcxOUFEMTgxMTA2RTAwMDE2REM1MSAvKiBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsICovLApAQCAtMjU5ODIsNiArMjU5ODgsNyBAQAogCQkJ
CTk3NkQ2Qzg5MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU3NTg0MUYxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjEwM0FGMUNBREJBNzcwMDE2QjRDNyAv
KiBJREJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERjM2OUQxMjJDOTRCNDAwMkY3RDRF
IC8qIEZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZFQjEyMUM5RjQy
MDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkxMjFD
QjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3
NzUsNiArMzE3ODIsNyBAQAogCQkJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTRBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgwMDI2QTJERCAv
KiBUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MTAzQjAxQ0FEQkE3QTAwMTZC
NEM3IC8qIElEQlZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTQyMTRFRjFDRjgw
MDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQTlFQzIx
NjhGQkM0MzAwMjYyOUY5IC8qIFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc1OUU5NDUxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3MjA1NjdiLi42OTkxMTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKIAogI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5j
ZS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmgiCkBAIC0zNiw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNp
bmNsdWRlICJGaWxlTGlzdC5oIgorI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIK
QEAgLTc1LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0yNTgyLDE1ICsyNTg1LDYgQEAgZXJyb3I6
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsK
IH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkZEJsb2JVUkwoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgbV9ibG9iVVJMcy5hcHBlbmQoVmVjdG9yPHVpbnQxNl90PigpKTsK
LSAgICBtX2Jsb2JVUkxzLmxhc3QoKS5yZXNlcnZlQ2FwYWNpdHkoc3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgaSsrKQotICAgICAg
ICBtX2Jsb2JVUkxzLmxhc3QoKS5hcHBlbmQoc3RyaW5nLmNoYXJhY3RlckF0KGkpKTsKLSAgICBt
X2Jsb2JVUkxzLmxhc3QoKS5yZXNpemUobV9ibG9iVVJMcy5sYXN0KCkuc2l6ZSgpKTsKLX0KLQog
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKIHsKIH0KQEAg
LTI2MDAsMTkgKzI1OTQsMTUgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogewogfQogCi1TZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcykKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1
ZmZlcikpCi17Ci0gICAgZm9yIChhdXRvJiBzdHJpbmcgOiBibG9iVVJMcykKLSAgICAgICAgYWRk
QmxvYlVSTChzdHJpbmcpOwotfQotCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQog
ICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkpKQogewotICAgIGZvciAoYXV0byYgc3RyaW5nIDogYmxvYlVSTHMpCi0gICAgICAg
IGFkZEJsb2JVUkwoc3RyaW5nKTsKKyAgICAvLyBTaW5jZSB0aGlzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSBpcyBtZWFudCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzLCBpdHMgU3RyaW5nIGRh
dGEgbWVtYmVycworICAgIC8vIG5lZWQgdG8gYmUgaXNvbGF0ZWRDb3BpZXMgc28gd2UgZG9uJ3Qg
cnVuIGludG8gdGhyZWFkIHNhZmV0eSBpc3N1ZXMgZm9yIHRoZSBTdHJpbmdJbXBscy4KKyAgICBt
X2Jsb2JVUkxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmxvYlVSTHMuc2l6ZSgpKTsKKyAgICBm
b3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQorICAgICAgICBtX2Jsb2JVUkxzLmFwcGVuZCh1cmwu
aXNvbGF0ZWRDb3B5KCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJh
bnNmZXJBcnJheUJ1ZmZlcnMoCkBAIC0yNzU3LDQgKzI3NDcsMjAgQEAgdWludDMyX3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCiAgICAgcmV0dXJuIEN1cnJlbnRW
ZXJzaW9uOwogfQogCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
bV9ibG9iVVJMcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIsIHRoaXMsIHByb3RlY3Rv
cl0oY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7CisgICAgICAgIC8vIEZJWE1FOiBSZXR1cm4gYW4g
SURCVmFsdWUgdGhhdCBjb250YWlucyBib3RoIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0
YSBhbmQgYWxsIGJsb2IgZmlsZSBkYXRhLgorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgIH0pOwogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGI4MWI0YTgu
LmY2NDM5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTVmFsdWVSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7CiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7CkBAIC04Myw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGJvb2wgaGFzQmxvYlVSTHMoKSBjb25zdCB7IHJldHVy
biAhbV9ibG9iVVJMcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGJsb2JVUkxzKFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCVmFsdWUmKT4gY29tcGxldGlvbkhhbmRsZXIpOwogCiAg
ICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21XaXJlQnl0ZXMo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICB7CkBAIC05OCwxNSArOTksMTQgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFp
bGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRp
YyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKEpTQzo6RXhlY1N0YXRlKiwgQXJyYXlCdWZm
ZXJBcnJheSYsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJik7Ci0gICAgdm9pZCBhZGRCbG9iVVJM
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcyk7
CiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+JiYpOwogCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVy
Q29udGVudHNBcnJheTsKLSAgICBWZWN0b3I8VmVjdG9yPHVpbnQxNl90Pj4gbV9ibG9iVVJMczsK
KworICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVSTHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDJiNTM5N2EuLjRhZGUzYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiU2NvcGVHdWFy
ZC5oIgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTI5LDYgKzEz
MCwzNyBAQCBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmlu
ZykKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgYXBwZW5kRmlsZUNv
bnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiB0YXJnZXQpCit7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7CisKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc3RhdGljIGludCBidWZmZXJTaXplID0gMSA8PCAyMDsKKyAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOworCisgICAgU2NvcGVHdWFyZCBmaWxlQ2xvc2VyKFtz
b3VyY2UsIGJ1ZmZlcl0oKSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBz
b3VyY2U7CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8gewor
ICAgICAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyU2l6ZSk7CisgICAgICAgIAorICAgICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0
LCBidWZmZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFDKQogCiB2b2lkIHNldE1ldGFkYXRh
VVJMKFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggZjA3ZDk5Yi4uMDNhZmZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTc2LDYgKzE3NiwxMSBAQCBib29sIHRydW5jYXRlRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogV0VCQ09SRV9FWFBPUlQg
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlm
IHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKworLy8gQXBwZW5kcyB0aGUgY29udGVu
dHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhh
bmRsZS4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNl
IGlmIGl0IHdhcyBub3QuCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworCiAjaWYgVVNFKEZJTEVfTE9D
SykKIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBGaWxlTG9ja01vZGUpOwogYm9v
bCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29w
ZUd1YXJkLmgKaW5kZXggN2RlZjlkNC4uMjRhYjdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
b3BlR3VhcmQuaApAQCAtMjUsNiArMjUsOCBAQAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZp
bmUgU2NvcGVHdWFyZF9oCiAKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNjb3BlR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggM2FiMzg1Ni4uODQyZTgyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWZuZGVmIEJsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeV9oCiAK
KyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02Myw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAorICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVQYXRocyk+IGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNC
bG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKaW5kZXggODhiMGYxNC4uODcyNGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC00MSw4ICs0MSwxMCBA
QAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNjb3BlR3VhcmQu
aCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjI4LDQgKzIzMCw5NCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1w
bDo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3Rh
dGljIFdvcmtRdWV1ZSYgYmxvYlV0aWxpdHlRdWV1ZSgpCit7CisgICAgc3RhdGljIGF1dG8mIHF1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIm9yZy53ZWJraXQuQmxvYlV0aWxpdHkiLCBXb3JrUXVl
dWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gcXVldWU7Cit9CisKK3N0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgeworICAg
IFN0cmluZyBibG9iVVJMOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7Cit9OworCit2b2lkIEJsb2JSZWdp
c3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZVBhdGhzKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVmVjdG9yPEJsb2JGb3JGaWxlV3Jp
dGluZz4gYmxvYnNGb3JXcml0aW5nOworICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpIHsK
KyAgICAgICAgYmxvYnNGb3JXcml0aW5nLmFwcGVuZCh7IH0pOworICAgICAgICBibG9ic0Zvcldy
aXRpbmcubGFzdCgpLmJsb2JVUkwgPSB1cmwuaXNvbGF0ZWRDb3B5KCk7CisKKyAgICAgICAgYXV0
byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwoeyBQYXJzZWRVUkxTdHJpbmcsIHVybCB9
KTsKKyAgICAgICAgaWYgKCFibG9iRGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZmlsZVBhdGhzOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmlsZVBhdGhzKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEJs
b2JEYXRhSXRlbTo6VHlwZTo6RGF0YToKKyAgICAgICAgICAgICAgICBibG9ic0ZvcldyaXRpbmcu
bGFzdCgpLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMuYXBwZW5kKHsgeyB9LCBpdGVtLmRhdGEoKSB9
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQmxvYkRhdGFJdGVt
OjpUeXBlOjpGaWxlOgorICAgICAgICAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5sYXN0KCkuZmls
ZVBhdGhzT3JEYXRhQnVmZmVycy5hcHBlbmQoeyBpdGVtLmZpbGUoKS0+cGF0aCgpLmlzb2xhdGVk
Q29weSgpLCB7IH0gfSk7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGJsb2JVdGlsaXR5UXVldWUoKS5kaXNwYXRjaChbYmxvYnNGb3JXcml0aW5nLCBjb21wbGV0aW9u
SGFuZGxlcl0oKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKworICAgICAg
ICBmb3IgKGF1dG8mIGJsb2IgOiBibG9ic0ZvcldyaXRpbmcpIHsKKyAgICAgICAgICAgIFBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlOworICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IG9w
ZW5UZW1wb3JhcnlGaWxlKEFTQ0lJTGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKworICAgICAgICAg
ICAgU2NvcGVHdWFyZCBmaWxlQ2xvc2VyKFtmaWxlXSgpIHsKKyAgICAgICAgICAgICAgICBQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gZmlsZTsKKyAgICAgICAgICAgICAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
dGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5kbGVWYWxpZChmaWxlKSkgeworICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdy
aXRpbmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gZmlsZVBhdGhzOworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmaWxlUGF0aHMpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYi5m
aWxlUGF0aHNPckRhdGFCdWZmZXJzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gcGFydC5zZWNvbmQu
ZGF0YSgpLT5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZVRvRmlsZShmaWxl
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEo
KSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0ZW1wb3JhcnkgZmlsZSBmb3Igc3RvcmFnZSBp
biBJbmRleGVkREIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0
b3I8U3RyaW5nPiBmaWxlUGF0aHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmlsZVBhdGhzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXJ0LmZp
cnN0LmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYXBwZW5kRmlsZUNvbnRl
bnRzVG9GaWxlSGFuZGxlKHBhcnQuZmlyc3QsIGZpbGUpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8gYSBCbG9iIHRl
bXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQodGVtcEZpbGVQYXRoLmlzb2xhdGVkQ29weSgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5k
bGVyLCBmaWxlUGF0aHNdKCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmlsZVBh
dGhzKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmgKaW5kZXggOTljMDM3NC4uYzYwMDZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0
ZToKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlk
ZTsKIAorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBi
ZDQyN2FhLi4zMTNlMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDQtMDQg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6
IER1bXAgYmxvYnMgdG8gZGlzayBiZWZvcmUgc3RvcmluZyB0aGVtIGluIGFuIG9iamVjdCBzdG9y
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjA2
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpC
bG9iUmVnaXN0cnlQcm94eTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRXcml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTYtMDMtMzEgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gU3VwcG9ydCBkb3du
bG9hZCBhdHRyaWJ1dGUgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggMDI1
ZTJmYy4uODJkY2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC0xMTcsNiArMTE3
LDExIEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uCiAgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgp
LmJsb2JTaXplKHVybCk7CiB9CiAKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4gY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMs
IGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwogdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25u
ZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24pCiB7CiAgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucyhj
b25uZWN0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNGFkZGU0MS4uOWY2ODQwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTmV0d29y
a0Jsb2JSZWdpc3RyeV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL1VSTEhhc2guaD4KKyNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2
NF90IGVuZCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90IGJsb2JTaXpl
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBjb21w
bGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMGFmNTkyOS4uNTUxNGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGluZ0hhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVK
YXIuaD4KQEAgLTI3OSw2ICsyODEsMjggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90JiByZXN1bHRTaXoKICAgICBy
ZXN1bHRTaXplID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuYmxvYlNpemUodGhp
cywgdXJsKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZVJlZmVyZW5jZXM7CisgICAgZm9yIChhdXRv
JiB1cmwgOiBibG9iVVJMcykKKyAgICAgICAgZmlsZVJlZmVyZW5jZXMuYXBwZW5kVmVjdG9yKE5l
dHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKCp0aGlzLCB7IFBhcnNl
ZFVSTFN0cmluZywgdXJsIH0pKTsKKworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVu
Y2VzKQorICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOworCisgICAgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxv
YlVSTHMsIFt0aGlzLCBwcm90ZWN0b3IsIHJlcXVlc3RJZGVudGlmaWVyLCBmaWxlUmVmZXJlbmNl
c10oY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcykgeworICAgICAgICBmb3IgKGF1dG8m
IGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKKyAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nl
c3MoKTsKKworICAgICAgICBpZiAoIW1fY29ubmVjdGlvbiB8fCAhbV9jb25uZWN0aW9uLT5pc1Zh
bGlkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZFdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKHJlcXVlc3RJZGVudGlmaWVyLCBmaWxlTmFtZXMpLCAwKTsKKyAgICB9KTsKK30K
Kwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNmIwMzA3Ni4uZTRiMDRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Myw2ICs5Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwogICAg
IHZvaWQgYmxvYlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUp
OwogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKTsKKwogICAgIHZvaWQgZW5zdXJlTGVn
YWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA2M2IxYWYyLi4xNzFkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDUsNSArNDUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBlbmQpCiAgICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJM
IHVybCkKICAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0
U2l6ZSkKKyAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9i
VVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpCisKICAgICBFbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IGY3OGM5OTAuLjgyNjkw
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcApAQCAtNzUsNCArNzUsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBy
ZXN1bHRTaXplOwogfQogCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+IGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPndy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmgKaW5kZXggYmYxYTdjMy4uYzdiMzM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM4
LDYgKzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YmxvYlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+IGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggNTU2NGY2YS4uZGUxYmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAg
LTcyLDEyICs3MiwzNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikKIHsKICAgICAvLyBUaGUgTmV0d29ya1Byb2Nlc3MgcHJvYmFibHkg
Y3Jhc2hlZC4KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQodGhpcyk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBkdW1teUZpbGVuYW1lczsK
KyAgICBmb3IgKGF1dG8gaGFuZGxlciA6IG1fd3JpdGVCbG9iVG9GaWxlQ29tcGxldGlvbkhhbmRs
ZXJzLnZhbHVlcygpKQorICAgICAgICBoYW5kbGVyKGR1bW15RmlsZW5hbWVzKTsKKworICAgIG1f
d3JpdGVCbG9iVG9GaWxlQ29tcGxldGlvbkhhbmRsZXJzLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQogewog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBzdGF0aWMgdWludDY0X3Qgd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKKyAgICB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKKwor
ICAgIG1fd3JpdGVCbG9iVG9GaWxlQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SWRlbnRp
ZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVS
THMsIHJlcXVlc3RJZGVudGlmaWVyKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3sKKyAgICBhdXRvIGhh
bmRsZXIgPSBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVycy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoaGFuZGxlcikKKyAgICAgICAgaGFuZGxlcihmaWxlbmFtZXMp
OworfQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlLCBTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJjMGEzMjEuLjdiZWNl
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKKyAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4gY29tcGxldGlv
bkhhbmRsZXIpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC02OSw2ICs3MSw4IEBAIHByaXZhdGU6CiAg
ICAgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4g
SVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9CiAgICAgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9j
ZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms7IH0K
IAorICAgIHZvaWQgZGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZv
aWQgZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTc2
LDYgKzgwLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20gdGhlIHdl
YiBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCiAgICAgUmVmUHRyPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPj4gbV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0
aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGMyNDA3ZjIuLmE0ZmM0MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjYsNCArMjYsNSBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewog
ICAgIERpZENhY2hlUmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdl
YktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJjZSwgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKICNlbmRpZgogCisgICAgRGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcykK
IH0K
</data>
<flag name="review"
          id="299909"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275590</attachid>
            <date>2016-04-04 16:39:02 -0700</date>
            <delta_ts>2016-04-04 21:52:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40733</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODUxMGI1Ny4uNGU0NDA3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg1MCw2ICs4NTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0Q29tcGxldGlvbkV2ZW50LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFl
MGY1NjAuLmIwYzNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wNC0wNCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjog
RHVtcCBibG9icyB0byBkaXNrIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW4gYW4gb2JqZWN0IHN0b3Jl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDY4
CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoVW5kZXIgZGV2ZWxvcG1lbnQsIG5vIG9ic2VydmFibGUgY2hhbmdl
IGluIGJlaGF2aW9yIHlldCkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NvcGVHdWFyZC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCVmFsdWU6OklEQlZhbHVlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmguCisgICAgICAgIAorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
Lmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRkQmxvYlVSTCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVt
Lmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL1Njb3BlR3VhcmQuaDoKKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YmxvYlV0aWxpdHlRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmg6CisKIDIwMTYtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gU3VwcG9ydCBkb3dubG9hZCBhdHRyaWJ1dGUg
ZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDRlYmQ2MjQuLmVlOTg1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTg2Nyw4ICs4
NjcsMTQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIiKTsKIAogICAgIEFTU0VSVCghaXNSZWFkT25s
eSgpKTsKLQotICAgIHNlcnZlckNvbm5lY3Rpb24oKS5wdXRPckFkZChvcGVyYXRpb24sIGtleSwg
dmFsdWUsIG92ZXJ3cml0ZU1vZGUpOworICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOworICAgIHZhbHVl
LT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlv
blJlZiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBwYXNzZWQgaW4gSURCVmFsdWUgdG8gdGhlIElEQiBzZXJ2
ZXIgaW5zdGVhZCBvZiB0aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgorICAgICAgICBzZXJ2ZXJD
b25uZWN0aW9uKCkucHV0T3JBZGQoKm9wZXJhdGlvblJlZiwga2V5LmdldCgpLCAqdmFsdWUsIG92
ZXJ3cml0ZU1vZGUpOworICAgIH0pOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRQdXRP
ckFkZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwMTc0OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIklEQlZhbHVlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitJREJWYWx1ZTo6SURCVmFsdWUoKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjM1NjRkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJWYWx1ZSB7CitwdWJsaWM6CisgICAgSURCVmFs
dWUoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA1
YmNlZDNmLi5kM2YyZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAt
MTcxLDEyICsxNzEsMTIgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZUlu
ZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgY29tcGxldGVPcGVyYXRp
b24ocmVzdWx0RGF0YSk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFk
ZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBSZWZQdHI8SURCS2V5PiYga2V5LCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit2b2lkIElEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6cHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgSURCS2V5
KiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQiKTsKIAogICAgIHNhdmVPcGVyYXRp
b24ob3BlcmF0aW9uKTsKLSAgICBtX2RlbGVnYXRlLT5wdXRPckFkZChJREJSZXF1ZXN0RGF0YShv
cGVyYXRpb24pLCBrZXkuZ2V0KCksICp2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CisgICAgbV9kZWxl
Z2F0ZS0+cHV0T3JBZGQoSURCUmVxdWVzdERhdGEob3BlcmF0aW9uKSwga2V5LCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRQdXRPckFk
ZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oCmluZGV4IDIxNjA4YmUuLmMxNzEyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoVHJh
bnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERlbGV0ZUlu
ZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIHZvaWQgcHV0T3JBZGQoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBSZWZQdHI8SURCS2V5PiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIHZv
aWQgcHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBJREJLZXkqLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKICAgICB2b2lkIGdldFJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCAzYzA5ZTI2Li42
NWQyOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBl
bnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZTsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKLWNs
YXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IHsKK2NsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBw
ZXJmb3JtKCkKICAgICB7CkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICAgICBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB2b2lkIChJREJUcmFu
c2FjdGlvbjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJSZXN1bHREYXRhJiksIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBBcmd1
bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVHJhbnNhY3Rp
b25PcGVyYXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZWxheEFkb3B0aW9uUmVx
dWlyZW1lbnQoKTsKICAgICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBzZWxmKHRo
aXMpOwogCiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKQEAgLTExMSw3ICsxMTAsNiBA
QCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsKElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipj
b21wbGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwgdm9pZCAo
SURCVHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIEFy
Z3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICAgICAgOiBUcmFuc2Fj
dGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJlbGF4
QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgICAgICBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IHNlbGYodGhpcyk7CiAKICAgICAgICAgQVNTRVJUKHBlcmZvcm1NZXRob2QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4
MWI2MGUuLjY4NWI3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDMsNiArMjA0Myw4IEBACiAJCTUxNjA3MTJGMUJEODMw
NzgwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjA3MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJP
YmplY3RTdG9yZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTYwNzEzMjFCRDgzMDhCMDBEQkM0RjIgLyogVHJhbnNhY3Rpb25PcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjA3
MTJCMUJEODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNjBGNDk4MEIwQUE3NUYw
MEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRl
bU1hYy5tbSAqLzsgfTsKKwkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElEQlZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYxMDNBRTFD
QURCOUEzMDAxNkI0QzcgLyogSURCVmFsdWUuaCAqLzsgfTsKKwkJNTE2MTAzQjAxQ0FEQkE3QTAw
MTZCNEM3IC8qIElEQlZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNjEwM0FEMUNBREI5QTMwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgKi87
IH07CiAJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyQzdGMjExRjc3
RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwICovOyB9OwogCQk1MTYyQzdGNTExRjc3
RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxNjk1Mzk3MTMyOUEzQzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjk1Mzk1MTMyOUEz
QzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKQEAgLTk1OTAsNiArOTU5
Miw4IEBACiAJCTUxNjA3MTJDMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkQxQkQ4MzA3MjAw
REJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE2MEY0OTcwQjBBQTc1RjAwQzFEMkFGIC8qIEhpc3RvcnlJdGVtTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW1NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjEwM0FEMUNBREI5QTMwMDE2QjRDNyAvKiBJREJW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjEwM0FFMUNBREI5QTMwMDE2QjRD
NyAvKiBJREJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJF
RkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NoZW1lUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYyQzdGMzExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZW1lUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NTgyLDYgKzE5NTg2LDggQEAKIAkJCQk1MTY0NUI1MDFCOUY4ODlC
MDBGNzg5Q0UgLyogSURCVHJhbnNhY3Rpb24uY3BwICovLAogCQkJCTUxNjQ1QjUxMUI5Rjg4OUIw
MEY3ODlDRSAvKiBJREJUcmFuc2FjdGlvbi5oICovLAogCQkJCTUxRDcxOUE2MTgxMTA2RTAwMDE2
REM1MSAvKiBJREJUcmFuc2FjdGlvbi5pZGwgKi8sCisJCQkJNTE2MTAzQUQxQ0FEQjlBMzAwMTZC
NEM3IC8qIElEQlZhbHVlLmNwcCAqLywKKwkJCQk1MTYxMDNBRTFDQURCOUEzMDAxNkI0QzcgLyog
SURCVmFsdWUuaCAqLywKIAkJCQk1MTY0NUI1MjFCOUY4ODlCMDBGNzg5Q0UgLyogSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmNwcCAqLywKIAkJCQk1MTY0NUI1MzFCOUY4ODlCMDBGNzg5Q0UgLyogSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmggKi8sCiAJCQkJNTFENzE5QUQxODExMDZFMDAwMTZEQzUxIC8q
IElEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgKi8sCkBAIC0yNTk4Miw2ICsyNTk4OCw3IEBACiAJ
CQkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRjEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3
IC8qIElEQlZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRURGMzY5RDEyMkM5NEI0MDAyRjdE
NEUgLyogRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkVCMTIxQzlG
NDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZGOTEy
MUNCMENFMDBDMjc2MjcgLyogRmlsZVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTc3NSw2ICszMTc4Miw3IEBACiAJCQkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNEEwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkRE
IC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTYxMDNCMDFDQURCQTdBMDAx
NkI0QzcgLyogSURCVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNG
ODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVD
MjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDcyMDU2N2IuLjY5OTExOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKQEAgLTM2LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgog
I2luY2x1ZGUgIkZpbGVMaXN0LmgiCisjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleS5o
IgpAQCAtNzUsNiArNzcsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTI1ODIsMTUgKzI1ODUsNiBAQCBlcnJv
cjoKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3Ip
OwogfQogCi12b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRkQmxvYlVSTChjb25zdCBTdHJp
bmcmIHN0cmluZykKLXsKLSAgICBtX2Jsb2JVUkxzLmFwcGVuZChWZWN0b3I8dWludDE2X3Q+KCkp
OwotICAgIG1fYmxvYlVSTHMubGFzdCgpLnJlc2VydmVDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyBpKyspCi0gICAg
ICAgIG1fYmxvYlVSTHMubGFzdCgpLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyQXQoaSkpOwotICAg
IG1fYmxvYlVSTHMubGFzdCgpLnJlc2l6ZShtX2Jsb2JVUkxzLmxhc3QoKS5zaXplKCkpOwotfQot
CiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogewogfQpA
QCAtMjYwMCwxOSArMjU5NCwxNSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCiB7CiB9CiAKLVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzKQotICAgIDogbV9kYXRhKFdURk1vdmUo
YnVmZmVyKSkKLXsKLSAgICBmb3IgKGF1dG8mIHN0cmluZyA6IGJsb2JVUkxzKQotICAgICAgICBh
ZGRCbG9iVVJMKHN0cmluZyk7Ci19Ci0KIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYm
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikp
CiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSkpCiB7Ci0gICAgZm9yIChhdXRvJiBzdHJpbmcgOiBibG9iVVJMcykKLSAgICAg
ICAgYWRkQmxvYlVSTChzdHJpbmcpOworICAgIC8vIFNpbmNlIHRoaXMgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGlzIG1lYW50IHRvIGJlIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMsIGl0cyBTdHJpbmcg
ZGF0YSBtZW1iZXJzCisgICAgLy8gbmVlZCB0byBiZSBpc29sYXRlZENvcGllcyBzbyB3ZSBkb24n
dCBydW4gaW50byB0aHJlYWQgc2FmZXR5IGlzc3VlcyBmb3IgdGhlIFN0cmluZ0ltcGxzLgorICAg
IG1fYmxvYlVSTHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShibG9iVVJMcy5zaXplKCkpOworICAg
IGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCisgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKHVy
bC5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OkFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0
cmFuc2ZlckFycmF5QnVmZmVycygKQEAgLTI3NTcsNCArMjc0NywyMCBAQCB1aW50MzJfdCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCkKICAgICByZXR1cm4gQ3VycmVu
dFZlcnNpb247CiB9CiAKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9E
aXNrRm9ySW5kZXhlZERCKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCVmFsdWUmKT4gY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlm
IChtX2Jsb2JVUkxzLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJvdGVj
dG9yXShjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsKKyAgICAgICAgLy8gRklYTUU6IFJldHVybiBh
biBJREJWYWx1ZSB0aGF0IGNvbnRhaW5zIGJvdGggdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhIGFuZCBhbGwgYmxvYiBmaWxlIGRhdGEuCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgfSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggYjgxYjRh
OC4uZjY0Mzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKQEAgLTgzLDcg
Kzg0LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0
dXJuICFtX2Jsb2JVUkxzLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgYmxvYlVSTHMoVmVjdG9yPFN0
cmluZz4mKSBjb25zdDsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAK
ICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRl
cyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIHsKQEAgLTk4LDE1ICs5OSwxNCBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25G
YWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3Rh
dGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoSlNDOjpFeGVjU3RhdGUqLCBBcnJheUJ1
ZmZlckFycmF5JiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmKTsKLSAgICB2b2lkIGFkZEJsb2JV
UkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
KTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4mJik7CiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5OwotICAgIFZlY3RvcjxWZWN0b3I8dWludDE2X3Q+PiBtX2Jsb2JVUkxz
OworCisgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9iVVJMczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKaW5kZXggMmI1Mzk3YS4uMzBlNWQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJTY29wZUd1
YXJkLmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMjksNiAr
MTMwLDM3IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3Ry
aW5nKQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBhcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIHRhcmdldCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JS
ZWFkKTsKKworICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OworICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7CisKKyAgICBTY29wZUd1YXJkIGZpbGVDbG9zZXIo
W3NvdXJjZV0oKSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7
CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8geworICAgICAg
ICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyU2l6ZSk7CisgICAgICAgIAorICAgICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZm
ZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFDKQogCiB2b2lkIHNldE1ldGFkYXRhVVJMKFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmgKaW5kZXggZjA3ZDk5Yi4uMDNhZmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaApAQCAtMTc2LDYgKzE3NiwxMSBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogV0VCQ09SRV9FWFBPUlQgaW50IHdy
aXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nl
c3NmdWwsIC0xIG90aGVyd2lzZS4KIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKworLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2Yg
dGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0
IHdhcyBub3QuCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworCiAjaWYgVVNFKEZJTEVfTE9DSykKIGJv
b2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBGaWxlTG9ja01vZGUpOwogYm9vbCB1bmxv
Y2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJk
LmgKaW5kZXggN2RlZjlkNC4uMjRhYjdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NvcGVHdWFyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3Vh
cmQuaApAQCAtMjUsNiArMjUsOCBAQAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2Nv
cGVHdWFyZF9oCiAKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNjb3BlR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggM2FiMzg1Ni4uODQyZTgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaWZuZGVmIEJsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeV9oCiAKKyNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC02Myw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAorICAgIHZpcnR1YWwg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRo
cyk+IGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVn
aXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
aW5kZXggODhiMGYxNC4uZGNiNzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC00MSw4ICs0MSwxMSBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNjb3BlR3VhcmQuaCIKICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI4LDQgKzIzMSw5MCBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFdvcmtRdWV1ZSYgYmxvYlV0aWxpdHlRdWV1
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+PiBxdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgib3JnLndlYmtpdC5CbG9iVXRpbGl0eSIsIFdvcmtRdWV1ZTo6VHlw
ZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCkpOworICAgIHJldHVybiBxdWV1
ZS5nZXQoKTsKK30KKworc3RydWN0IEJsb2JGb3JGaWxlV3JpdGluZyB7CisgICAgU3RyaW5nIGJs
b2JVUkw7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocmVhZFNhZmVEYXRhQnVmZmVy
Pj4gZmlsZVBhdGhzT3JEYXRhQnVmZmVyczsKK307CisKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9i
c0ZvcldyaXRpbmc7CisgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykgeworICAgICAgICBi
bG9ic0ZvcldyaXRpbmcuYXBwZW5kKHsgfSk7CisgICAgICAgIGJsb2JzRm9yV3JpdGluZy5sYXN0
KCkuYmxvYlVSTCA9IHVybC5pc29sYXRlZENvcHkoKTsKKworICAgICAgICBhdXRvKiBibG9iRGF0
YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pOworICAgICAg
ICBpZiAoIWJsb2JEYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOworICAgICAgICB9CisK
KyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQmxvYkRhdGFJdGVt
OjpUeXBlOjpEYXRhOgorICAgICAgICAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5sYXN0KCkuZmls
ZVBhdGhzT3JEYXRhQnVmZmVycy5hcHBlbmQoeyB7IH0sIGl0ZW0uZGF0YSgpIH0pOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZp
bGU6CisgICAgICAgICAgICAgICAgYmxvYnNGb3JXcml0aW5nLmxhc3QoKS5maWxlUGF0aHNPckRh
dGFCdWZmZXJzLmFwcGVuZCh7IGl0ZW0uZmlsZSgpLT5wYXRoKCkuaXNvbGF0ZWRDb3B5KCksIHsg
fSB9KTsKKworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYmxvYlV0aWxp
dHlRdWV1ZSgpLmRpc3BhdGNoKFtibG9ic0ZvcldyaXRpbmcsIGNvbXBsZXRpb25IYW5kbGVyXSgp
IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOworCisgICAgICAgIFNjb3BlR3Vh
cmQgY29tcGxldGlvbkNhbGxlcihbY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmaWxlUGF0aHMpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGZvciAoYXV0byYgYmxvYiA6IGJsb2JzRm9yV3JpdGluZykgeworICAgICAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGU7CisgICAgICAgICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gb3Bl
blRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUpOworCisgICAgICAgICAg
ICBTY29wZUd1YXJkIGZpbGVDbG9zZXIoW2ZpbGUsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAg
ICAgICAgICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gZmlsZTsKKyAgICAgICAg
ICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5kbGVWYWxp
ZChmaWxlKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVt
cG9yYXJ5IGZpbGUgZm9yIHdyaXRpbmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YXJ0IDogYmxvYi5maWxlUGF0aHNPckRhdGFCdWZmZXJzKSB7CisgICAgICAgICAgICAgICAgaWYg
KHBhcnQuc2Vjb25kLmRhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
cGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0
ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5k
YXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0ZW1wb3JhcnkgZmlsZSBm
b3Igc3RvcmFnZSBpbiBJbmRleGVkREIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghcGFydC5maXJzdC5pc0VtcHR5KCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0
LCBmaWxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgY29w
eWluZyBGaWxlIGNvbnRlbnRzIHRvIGEgQmxvYiB0ZW1wb3JhcnkgZmlsZSBmb3Igc3RvcmFnZSBp
biBJbmRleGVkREIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZmlsZVBhdGhzLmFwcGVuZCh0ZW1wRmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkpOworICAg
ICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkNhbGxlci5kaXNhYmxlKCk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyLCBmaWxlUGF0aHNdKCkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmlsZVBhdGhzKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggOTljMDM3NC4uYzYwMDZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGU7CisKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4g
bV9ibG9iczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZDQyN2FhLi41NjhkNDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDQtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IER1bXAgYmxvYnMgdG8gZGlzayBiZWZvcmUg
c3RvcmluZyB0aGVtIGluIGFuIG9iamVjdCBzdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKwogMjAxNi0wMy0zMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0syXSBTdXBwb3J0IGRvd25sb2FkIGF0dHJpYnV0ZSBmZWF0dXJlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAwMjVlMmZjLi44MmRjZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTExNyw2ICsxMTcsMTEgQEAgdWludDY0X3QgTmV0d29ya0Js
b2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24KICAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKIH0KIAordm9p
ZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBibG9iUmVnaXN0cnkoKS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgY29tcGxldGlvbkhhbmRsZXIpOworfQor
CiB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbikKIHsKICAgICBpZiAo
IW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaAppbmRleCA0YWRkZTQxLi45ZjY4NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKIAogI2luY2x1
ZGUgPFdlYkNvcmUvVVJMSGFzaC5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC01Miw2ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJik7CiAgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZv
aWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwYWY1OTI5Li41
NTE0ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMCwxMSArMzAsMTMg
QEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNr
ZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaW5nSGFuZGxlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgpAQCAtMjc5LDYgKzI4MSwyOCBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwm
IHVybCwgdWludDY0X3QmIHJlc3VsdFNpegogICAgIHJlc3VsdFNpemUgPSBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzaW5nbGV0b24oKS5ibG9iU2l6ZSh0aGlzLCB1cmwpOwogfQogCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKQor
eworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKHRo
aXMpOworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBmaWxlUmVmZXJlbmNlczsKKyAgICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQorICAgICAg
ICBmaWxlUmVmZXJlbmNlcy5hcHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xl
dG9uKCkuZmlsZXNJbkJsb2IoKnRoaXMsIHsgUGFyc2VkVVJMU3RyaW5nLCB1cmwgfSkpOworCisg
ICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCisgICAgICAgIGZpbGUtPnByZXBh
cmVGb3JGaWxlQWNjZXNzKCk7CisKKyAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24o
KS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgW3RoaXMsIHByb3RlY3Rvciwg
cmVxdWVzdElkZW50aWZpZXIsIGZpbGVSZWZlcmVuY2VzXShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZU5hbWVzKSB7CisgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQor
ICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOworCisgICAgICAgIGlmICghbV9j
b25uZWN0aW9uIHx8ICFtX2Nvbm5lY3Rpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMocmVxdWVzdElkZW50aWZp
ZXIsIGZpbGVOYW1lcyksIDApOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCA2YjAzMDc2Li5lNGIwNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTkzLDYgKzkzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShjb25zdCBXZWJD
b3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIpOworCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCk7CiAKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzYjFhZjIuLjE3MWQ4
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00
NSw1ICs0NSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJDb3JlOjpVUkwg
dXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKICAg
ICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQogICAgIEJsb2JTaXplKFdlYkNv
cmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQorICAgIFdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcikKKwogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggZjc4Yzk5MC4uODI2OTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC03
NSw0ICs3NSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNp
emUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZVBhdGhzKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
YmxvYlVSTHMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCBiZjFh
N2MzLi5jN2IzMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92
ZXJyaWRlOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1NTY0ZjZhLi5kZTFiZTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzIsMTIgKzcyLDM1IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogICAg
IC8vIFRoZSBOZXR3b3JrUHJvY2VzcyBwcm9iYWJseSBjcmFzaGVkLgogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCh0aGlzKTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IGR1bW15RmlsZW5hbWVzOworICAgIGZvciAoYXV0byBoYW5kbGVyIDog
bV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnMudmFsdWVzKCkpCisgICAgICAgIGhh
bmRsZXIoZHVtbXlGaWxlbmFtZXMpOworCisgICAgbV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9u
SGFuZGxlcnMuY2xlYXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCiB7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVQYXRocyk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB3cml0
ZUJsb2JUb0ZpbGVJZGVudGlmaWVyOworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0g
Kyt3cml0ZUJsb2JUb0ZpbGVJZGVudGlmaWVyOworCisgICAgbV93cml0ZUJsb2JUb0ZpbGVDb21w
bGV0aW9uSGFuZGxlcnMuc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlcik7
CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpX
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgcmVxdWVzdElkZW50aWZpZXIpLCAw
KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKQoreworICAgIGF1dG8gaGFuZGxlciA9IG1fd3JpdGVCbG9iVG9GaWxl
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgIGlmIChoYW5k
bGVyKQorICAgICAgICBoYW5kbGVyKGZpbGVuYW1lcyk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlJiBoYW5kbGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggMmMwYTMyMS4uN2JlY2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFuZGxlcik7CisKIHByaXZhdGU6CiAg
ICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7
CiAKQEAgLTY5LDYgKzcxLDggQEAgcHJpdmF0ZToKICAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2Fs
UHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0K
ICAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gSVBDOjpQcm9jZXNzVHlwZTo6TmV0d29yazsgfQogCisgICAgdm9pZCBkaWRXcml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcyk7CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGUmLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtNzYsNiArODAsOCBAQCBwcml2YXRlOgogCiAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KaW5kZXggYzI0MDdmMi4uYTRmYzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0yNiw0ICsyNiw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ2FjaGVSZXNvdXJjZShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHJlc291cmNlLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAK
KyAgICBEaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKQogfQo=
</data>
<flag name="commit-queue"
          id="299915"
          type_id="3"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275636</attachid>
            <date>2016-04-04 21:52:31 -0700</date>
            <delta_ts>2016-04-04 22:47:38 -0700</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>pfl.txt</filename>
            <type>text/plain</type>
            <size>40733</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODUxMGI1Ny4uNGU0NDA3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg1MCw2ICs4NTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0Q29tcGxldGlvbkV2ZW50LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFl
MGY1NjAuLmIwYzNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wNC0wNCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjog
RHVtcCBibG9icyB0byBkaXNrIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW4gYW4gb2JqZWN0IHN0b3Jl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDY4
CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoVW5kZXIgZGV2ZWxvcG1lbnQsIG5vIG9ic2VydmFibGUgY2hhbmdl
IGluIGJlaGF2aW9yIHlldCkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NvcGVHdWFyZC5oLgorICAgICAgICAoV2ViQ29yZTo6SURCVmFsdWU6OklEQlZhbHVlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmguCisgICAgICAgIAorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
Lmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRkQmxvYlVSTCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVt
Lmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL1Njb3BlR3VhcmQuaDoKKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YmxvYlV0aWxpdHlRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmg6CisKIDIwMTYtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gU3VwcG9ydCBkb3dubG9hZCBhdHRyaWJ1dGUg
ZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDRlYmQ2MjQuLmVlOTg1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTg2Nyw4ICs4
NjcsMTQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIiKTsKIAogICAgIEFTU0VSVCghaXNSZWFkT25s
eSgpKTsKLQotICAgIHNlcnZlckNvbm5lY3Rpb24oKS5wdXRPckFkZChvcGVyYXRpb24sIGtleSwg
dmFsdWUsIG92ZXJ3cml0ZU1vZGUpOworICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOworICAgIHZhbHVl
LT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlv
blJlZiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBwYXNzZWQgaW4gSURCVmFsdWUgdG8gdGhlIElEQiBzZXJ2
ZXIgaW5zdGVhZCBvZiB0aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgorICAgICAgICBzZXJ2ZXJD
b25uZWN0aW9uKCkucHV0T3JBZGQoKm9wZXJhdGlvblJlZiwga2V5LmdldCgpLCAqdmFsdWUsIG92
ZXJ3cml0ZU1vZGUpOworICAgIH0pOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRQdXRP
ckFkZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwMTc0OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIklEQlZhbHVlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitJREJWYWx1ZTo6SURCVmFsdWUoKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjM1NjRkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJWYWx1ZSB7CitwdWJsaWM6CisgICAgSURCVmFs
dWUoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA1
YmNlZDNmLi5kM2YyZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAt
MTcxLDEyICsxNzEsMTIgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZUlu
ZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgY29tcGxldGVPcGVyYXRp
b24ocmVzdWx0RGF0YSk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFk
ZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBSZWZQdHI8SURCS2V5PiYga2V5LCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit2b2lkIElEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6cHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgSURCS2V5
KiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQiKTsKIAogICAgIHNhdmVPcGVyYXRp
b24ob3BlcmF0aW9uKTsKLSAgICBtX2RlbGVnYXRlLT5wdXRPckFkZChJREJSZXF1ZXN0RGF0YShv
cGVyYXRpb24pLCBrZXkuZ2V0KCksICp2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CisgICAgbV9kZWxl
Z2F0ZS0+cHV0T3JBZGQoSURCUmVxdWVzdERhdGEob3BlcmF0aW9uKSwga2V5LCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRQdXRPckFk
ZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oCmluZGV4IDIxNjA4YmUuLmMxNzEyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoVHJh
bnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERlbGV0ZUlu
ZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIHZvaWQgcHV0T3JBZGQoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBSZWZQdHI8SURCS2V5PiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOworICAgIHZv
aWQgcHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBJREJLZXkqLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKICAgICB2b2lkIGdldFJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCAzYzA5ZTI2Li42
NWQyOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBl
bnVtIGNsYXNzIEluZGV4UmVjb3JkVHlwZTsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKLWNs
YXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IHsKK2NsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBw
ZXJmb3JtKCkKICAgICB7CkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICAgICBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB2b2lkIChJREJUcmFu
c2FjdGlvbjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJSZXN1bHREYXRhJiksIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBBcmd1
bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVHJhbnNhY3Rp
b25PcGVyYXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZWxheEFkb3B0aW9uUmVx
dWlyZW1lbnQoKTsKICAgICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBzZWxmKHRo
aXMpOwogCiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKQEAgLTExMSw3ICsxMTAsNiBA
QCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsKElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipj
b21wbGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwgdm9pZCAo
SURCVHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIEFy
Z3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICAgICAgOiBUcmFuc2Fj
dGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJlbGF4
QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgICAgICBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IHNlbGYodGhpcyk7CiAKICAgICAgICAgQVNTRVJUKHBlcmZvcm1NZXRob2QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4
MWI2MGUuLjY4NWI3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDMsNiArMjA0Myw4IEBACiAJCTUxNjA3MTJGMUJEODMw
NzgwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjA3MTJEMUJEODMwNzIwMERCQzRGMiAvKiBJREJP
YmplY3RTdG9yZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTYwNzEzMjFCRDgzMDhCMDBEQkM0RjIgLyogVHJhbnNhY3Rpb25PcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjA3
MTJCMUJEODMwNTMwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNjBGNDk4MEIwQUE3NUYw
MEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRl
bU1hYy5tbSAqLzsgfTsKKwkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElEQlZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYxMDNBRTFD
QURCOUEzMDAxNkI0QzcgLyogSURCVmFsdWUuaCAqLzsgfTsKKwkJNTE2MTAzQjAxQ0FEQkE3QTAw
MTZCNEM3IC8qIElEQlZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNjEwM0FEMUNBREI5QTMwMDE2QjRDNyAvKiBJREJWYWx1ZS5jcHAgKi87
IH07CiAJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyQzdGMjExRjc3
RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwICovOyB9OwogCQk1MTYyQzdGNTExRjc3
RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxNjk1Mzk3MTMyOUEzQzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjk1Mzk1MTMyOUEz
QzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKQEAgLTk1OTAsNiArOTU5
Miw4IEBACiAJCTUxNjA3MTJDMUJEODMwNzIwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDcxMkQxQkQ4MzA3MjAw
REJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE2MEY0OTcwQjBBQTc1RjAwQzFEMkFGIC8qIEhpc3RvcnlJdGVtTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW1NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjEwM0FEMUNBREI5QTMwMDE2QjRDNyAvKiBJREJW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjEwM0FFMUNBREI5QTMwMDE2QjRD
NyAvKiBJREJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJF
RkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NoZW1lUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYyQzdGMzExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZW1lUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NTgyLDYgKzE5NTg2LDggQEAKIAkJCQk1MTY0NUI1MDFCOUY4ODlC
MDBGNzg5Q0UgLyogSURCVHJhbnNhY3Rpb24uY3BwICovLAogCQkJCTUxNjQ1QjUxMUI5Rjg4OUIw
MEY3ODlDRSAvKiBJREJUcmFuc2FjdGlvbi5oICovLAogCQkJCTUxRDcxOUE2MTgxMTA2RTAwMDE2
REM1MSAvKiBJREJUcmFuc2FjdGlvbi5pZGwgKi8sCisJCQkJNTE2MTAzQUQxQ0FEQjlBMzAwMTZC
NEM3IC8qIElEQlZhbHVlLmNwcCAqLywKKwkJCQk1MTYxMDNBRTFDQURCOUEzMDAxNkI0QzcgLyog
SURCVmFsdWUuaCAqLywKIAkJCQk1MTY0NUI1MjFCOUY4ODlCMDBGNzg5Q0UgLyogSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmNwcCAqLywKIAkJCQk1MTY0NUI1MzFCOUY4ODlCMDBGNzg5Q0UgLyogSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmggKi8sCiAJCQkJNTFENzE5QUQxODExMDZFMDAwMTZEQzUxIC8q
IElEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgKi8sCkBAIC0yNTk4Miw2ICsyNTk4OCw3IEBACiAJ
CQkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRjEyNzc5QURBMDA2MjYyOEIgLyogRmlsZVJlYWRlckxv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3
IC8qIElEQlZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRURGMzY5RDEyMkM5NEI0MDAyRjdE
NEUgLyogRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkVCMTIxQzlG
NDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZGOTEy
MUNCMENFMDBDMjc2MjcgLyogRmlsZVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTc3NSw2ICszMTc4Miw3IEBACiAJCQkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNEEwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkRE
IC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTYxMDNCMDFDQURCQTdBMDAx
NkI0QzcgLyogSURCVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNG
ODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVD
MjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDcyMDU2N2IuLjY5OTExOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKQEAgLTM2LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgog
I2luY2x1ZGUgIkZpbGVMaXN0LmgiCisjaW5jbHVkZSAiSURCVmFsdWUuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleS5o
IgpAQCAtNzUsNiArNzcsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTI1ODIsMTUgKzI1ODUsNiBAQCBlcnJv
cjoKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3Ip
OwogfQogCi12b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRkQmxvYlVSTChjb25zdCBTdHJp
bmcmIHN0cmluZykKLXsKLSAgICBtX2Jsb2JVUkxzLmFwcGVuZChWZWN0b3I8dWludDE2X3Q+KCkp
OwotICAgIG1fYmxvYlVSTHMubGFzdCgpLnJlc2VydmVDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyBpKyspCi0gICAg
ICAgIG1fYmxvYlVSTHMubGFzdCgpLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyQXQoaSkpOwotICAg
IG1fYmxvYlVSTHMubGFzdCgpLnJlc2l6ZShtX2Jsb2JVUkxzLmxhc3QoKS5zaXplKCkpOwotfQot
CiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogewogfQpA
QCAtMjYwMCwxOSArMjU5NCwxNSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCiB7CiB9CiAKLVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzKQotICAgIDogbV9kYXRhKFdURk1vdmUo
YnVmZmVyKSkKLXsKLSAgICBmb3IgKGF1dG8mIHN0cmluZyA6IGJsb2JVUkxzKQotICAgICAgICBh
ZGRCbG9iVVJMKHN0cmluZyk7Ci19Ci0KIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYm
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikp
CiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSkpCiB7Ci0gICAgZm9yIChhdXRvJiBzdHJpbmcgOiBibG9iVVJMcykKLSAgICAg
ICAgYWRkQmxvYlVSTChzdHJpbmcpOworICAgIC8vIFNpbmNlIHRoaXMgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGlzIG1lYW50IHRvIGJlIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMsIGl0cyBTdHJpbmcg
ZGF0YSBtZW1iZXJzCisgICAgLy8gbmVlZCB0byBiZSBpc29sYXRlZENvcGllcyBzbyB3ZSBkb24n
dCBydW4gaW50byB0aHJlYWQgc2FmZXR5IGlzc3VlcyBmb3IgdGhlIFN0cmluZ0ltcGxzLgorICAg
IG1fYmxvYlVSTHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShibG9iVVJMcy5zaXplKCkpOworICAg
IGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCisgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKHVy
bC5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OkFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0
cmFuc2ZlckFycmF5QnVmZmVycygKQEAgLTI3NTcsNCArMjc0NywyMCBAQCB1aW50MzJfdCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCkKICAgICByZXR1cm4gQ3VycmVu
dFZlcnNpb247CiB9CiAKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9E
aXNrRm9ySW5kZXhlZERCKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCVmFsdWUmKT4gY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlm
IChtX2Jsb2JVUkxzLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJvdGVj
dG9yXShjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsKKyAgICAgICAgLy8gRklYTUU6IFJldHVybiBh
biBJREJWYWx1ZSB0aGF0IGNvbnRhaW5zIGJvdGggdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhIGFuZCBhbGwgYmxvYiBmaWxlIGRhdGEuCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgfSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggYjgxYjRh
OC4uZjY0Mzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKQEAgLTgzLDcg
Kzg0LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0
dXJuICFtX2Jsb2JVUkxzLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgYmxvYlVSTHMoVmVjdG9yPFN0
cmluZz4mKSBjb25zdDsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAK
ICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRl
cyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIHsKQEAgLTk4LDE1ICs5OSwxNCBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25G
YWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3Rh
dGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoSlNDOjpFeGVjU3RhdGUqLCBBcnJheUJ1
ZmZlckFycmF5JiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmKTsKLSAgICB2b2lkIGFkZEJsb2JV
UkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
KTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4mJik7CiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5OwotICAgIFZlY3RvcjxWZWN0b3I8dWludDE2X3Q+PiBtX2Jsb2JVUkxz
OworCisgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9iVVJMczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKaW5kZXggMmI1Mzk3YS4uMzBlNWQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJTY29wZUd1
YXJkLmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMjksNiAr
MTMwLDM3IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3Ry
aW5nKQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBhcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIHRhcmdldCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JS
ZWFkKTsKKworICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdGF0aWMgaW50IGJ1ZmZlclNpemUgPSAxIDw8IDE5OworICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7CisKKyAgICBTY29wZUd1YXJkIGZpbGVDbG9zZXIo
W3NvdXJjZV0oKSB7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7
CisgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgZG8geworICAgICAg
ICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyU2l6ZSk7CisgICAgICAgIAorICAgICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAod3JpdGVUb0ZpbGUodGFyZ2V0LCBidWZm
ZXIuZGF0YSgpLCByZWFkQnl0ZXMpICE9IHJlYWRCeXRlcykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAocmVhZEJ5dGVzIDwgYnVmZmVyU2l6ZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFDKQogCiB2b2lkIHNldE1ldGFkYXRhVVJMKFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmgKaW5kZXggZjA3ZDk5Yi4uMDNhZmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaApAQCAtMTc2LDYgKzE3NiwxMSBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogV0VCQ09SRV9FWFBPUlQgaW50IHdy
aXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nl
c3NmdWwsIC0xIG90aGVyd2lzZS4KIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKworLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2Yg
dGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRvIHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGl0
IHdhcyBub3QuCitib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworCiAjaWYgVVNFKEZJTEVfTE9DSykKIGJv
b2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBGaWxlTG9ja01vZGUpOwogYm9vbCB1bmxv
Y2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJk
LmgKaW5kZXggN2RlZjlkNC4uMjRhYjdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NvcGVHdWFyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3Vh
cmQuaApAQCAtMjUsNiArMjUsOCBAQAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2Nv
cGVHdWFyZF9oCiAKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNjb3BlR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggM2FiMzg1Ni4uODQyZTgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaWZuZGVmIEJsb2JSZWdpc3RyeV9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeV9oCiAKKyNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC02Myw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAorICAgIHZpcnR1YWwg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRo
cyk+IGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVn
aXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
aW5kZXggODhiMGYxNC4uZGNiNzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC00MSw4ICs0MSwxMSBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNjb3BlR3VhcmQuaCIKICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI4LDQgKzIzMSw5MCBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFdvcmtRdWV1ZSYgYmxvYlV0aWxpdHlRdWV1
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+PiBxdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgib3JnLndlYmtpdC5CbG9iVXRpbGl0eSIsIFdvcmtRdWV1ZTo6VHlw
ZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCkpOworICAgIHJldHVybiBxdWV1
ZS5nZXQoKTsKK30KKworc3RydWN0IEJsb2JGb3JGaWxlV3JpdGluZyB7CisgICAgU3RyaW5nIGJs
b2JVUkw7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocmVhZFNhZmVEYXRhQnVmZmVy
Pj4gZmlsZVBhdGhzT3JEYXRhQnVmZmVyczsKK307CisKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9i
c0ZvcldyaXRpbmc7CisgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykgeworICAgICAgICBi
bG9ic0ZvcldyaXRpbmcuYXBwZW5kKHsgfSk7CisgICAgICAgIGJsb2JzRm9yV3JpdGluZy5sYXN0
KCkuYmxvYlVSTCA9IHVybC5pc29sYXRlZENvcHkoKTsKKworICAgICAgICBhdXRvKiBibG9iRGF0
YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pOworICAgICAg
ICBpZiAoIWJsb2JEYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOworICAgICAgICB9CisK
KyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQmxvYkRhdGFJdGVt
OjpUeXBlOjpEYXRhOgorICAgICAgICAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5sYXN0KCkuZmls
ZVBhdGhzT3JEYXRhQnVmZmVycy5hcHBlbmQoeyB7IH0sIGl0ZW0uZGF0YSgpIH0pOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZp
bGU6CisgICAgICAgICAgICAgICAgYmxvYnNGb3JXcml0aW5nLmxhc3QoKS5maWxlUGF0aHNPckRh
dGFCdWZmZXJzLmFwcGVuZCh7IGl0ZW0uZmlsZSgpLT5wYXRoKCkuaXNvbGF0ZWRDb3B5KCksIHsg
fSB9KTsKKworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYmxvYlV0aWxp
dHlRdWV1ZSgpLmRpc3BhdGNoKFtibG9ic0ZvcldyaXRpbmcsIGNvbXBsZXRpb25IYW5kbGVyXSgp
IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOworCisgICAgICAgIFNjb3BlR3Vh
cmQgY29tcGxldGlvbkNhbGxlcihbY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmaWxlUGF0aHMpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGZvciAoYXV0byYgYmxvYiA6IGJsb2JzRm9yV3JpdGluZykgeworICAgICAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGU7CisgICAgICAgICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gb3Bl
blRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUpOworCisgICAgICAgICAg
ICBTY29wZUd1YXJkIGZpbGVDbG9zZXIoW2ZpbGUsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAg
ICAgICAgICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gZmlsZTsKKyAgICAgICAg
ICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5kbGVWYWxp
ZChmaWxlKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVt
cG9yYXJ5IGZpbGUgZm9yIHdyaXRpbmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YXJ0IDogYmxvYi5maWxlUGF0aHNPckRhdGFCdWZmZXJzKSB7CisgICAgICAgICAgICAgICAgaWYg
KHBhcnQuc2Vjb25kLmRhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
cGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0
ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5k
YXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0ZW1wb3JhcnkgZmlsZSBm
b3Igc3RvcmFnZSBpbiBJbmRleGVkREIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghcGFydC5maXJzdC5pc0VtcHR5KCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0
LCBmaWxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgY29w
eWluZyBGaWxlIGNvbnRlbnRzIHRvIGEgQmxvYiB0ZW1wb3JhcnkgZmlsZSBmb3Igc3RvcmFnZSBp
biBJbmRleGVkREIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZmlsZVBhdGhzLmFwcGVuZCh0ZW1wRmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkpOworICAg
ICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkNhbGxlci5kaXNhYmxlKCk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyLCBmaWxlUGF0aHNdKCkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmlsZVBhdGhzKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggOTljMDM3NC4uYzYwMDZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGU7CisKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4g
bV9ibG9iczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZDQyN2FhLi41NjhkNDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDQtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IER1bXAgYmxvYnMgdG8gZGlzayBiZWZvcmUg
c3RvcmluZyB0aGVtIGluIGFuIG9iamVjdCBzdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKwogMjAxNi0wMy0zMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0syXSBTdXBwb3J0IGRvd25sb2FkIGF0dHJpYnV0ZSBmZWF0dXJlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAwMjVlMmZjLi44MmRjZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTExNyw2ICsxMTcsMTEgQEAgdWludDY0X3QgTmV0d29ya0Js
b2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24KICAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKIH0KIAordm9p
ZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBibG9iUmVnaXN0cnkoKS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgY29tcGxldGlvbkhhbmRsZXIpOworfQor
CiB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbikKIHsKICAgICBpZiAo
IW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaAppbmRleCA0YWRkZTQxLi45ZjY4NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKIAogI2luY2x1
ZGUgPFdlYkNvcmUvVVJMSGFzaC5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC01Miw2ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJik7CiAgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZv
aWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwYWY1OTI5Li41
NTE0ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMCwxMSArMzAsMTMg
QEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNr
ZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaW5nSGFuZGxlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgpAQCAtMjc5LDYgKzI4MSwyOCBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwm
IHVybCwgdWludDY0X3QmIHJlc3VsdFNpegogICAgIHJlc3VsdFNpemUgPSBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzaW5nbGV0b24oKS5ibG9iU2l6ZSh0aGlzLCB1cmwpOwogfQogCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKQor
eworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKHRo
aXMpOworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBmaWxlUmVmZXJlbmNlczsKKyAgICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQorICAgICAg
ICBmaWxlUmVmZXJlbmNlcy5hcHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xl
dG9uKCkuZmlsZXNJbkJsb2IoKnRoaXMsIHsgUGFyc2VkVVJMU3RyaW5nLCB1cmwgfSkpOworCisg
ICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCisgICAgICAgIGZpbGUtPnByZXBh
cmVGb3JGaWxlQWNjZXNzKCk7CisKKyAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24o
KS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgW3RoaXMsIHByb3RlY3Rvciwg
cmVxdWVzdElkZW50aWZpZXIsIGZpbGVSZWZlcmVuY2VzXShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZU5hbWVzKSB7CisgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQor
ICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOworCisgICAgICAgIGlmICghbV9j
b25uZWN0aW9uIHx8ICFtX2Nvbm5lY3Rpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMocmVxdWVzdElkZW50aWZp
ZXIsIGZpbGVOYW1lcyksIDApOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCA2YjAzMDc2Li5lNGIwNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTkzLDYgKzkzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShjb25zdCBXZWJD
b3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIpOworCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCk7CiAKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYzYjFhZjIuLjE3MWQ4
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00
NSw1ICs0NSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJDb3JlOjpVUkwg
dXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKICAg
ICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQogICAgIEJsb2JTaXplKFdlYkNv
cmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQorICAgIFdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcikKKwogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggZjc4Yzk5MC4uODI2OTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC03
NSw0ICs3NSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNp
emUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZVBhdGhzKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
YmxvYlVSTHMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCBiZjFh
N2MzLi5jN2IzMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92
ZXJyaWRlOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1NTY0ZjZhLi5kZTFiZTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzIsMTIgKzcyLDM1IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogICAg
IC8vIFRoZSBOZXR3b3JrUHJvY2VzcyBwcm9iYWJseSBjcmFzaGVkLgogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCh0aGlzKTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IGR1bW15RmlsZW5hbWVzOworICAgIGZvciAoYXV0byBoYW5kbGVyIDog
bV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnMudmFsdWVzKCkpCisgICAgICAgIGhh
bmRsZXIoZHVtbXlGaWxlbmFtZXMpOworCisgICAgbV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9u
SGFuZGxlcnMuY2xlYXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCiB7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVQYXRocyk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB3cml0
ZUJsb2JUb0ZpbGVJZGVudGlmaWVyOworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0g
Kyt3cml0ZUJsb2JUb0ZpbGVJZGVudGlmaWVyOworCisgICAgbV93cml0ZUJsb2JUb0ZpbGVDb21w
bGV0aW9uSGFuZGxlcnMuc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlcik7
CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpX
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgcmVxdWVzdElkZW50aWZpZXIpLCAw
KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKQoreworICAgIGF1dG8gaGFuZGxlciA9IG1fd3JpdGVCbG9iVG9GaWxl
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgIGlmIChoYW5k
bGVyKQorICAgICAgICBoYW5kbGVyKGZpbGVuYW1lcyk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlJiBoYW5kbGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggMmMwYTMyMS4uN2JlY2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlUGF0aHMpPiBjb21wbGV0aW9uSGFuZGxlcik7CisKIHByaXZhdGU6CiAg
ICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7
CiAKQEAgLTY5LDYgKzcxLDggQEAgcHJpdmF0ZToKICAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2Fs
UHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0K
ICAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gSVBDOjpQcm9jZXNzVHlwZTo6TmV0d29yazsgfQogCisgICAgdm9pZCBkaWRXcml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcyk7CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGUmLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtNzYsNiArODAsOCBAQCBwcml2YXRlOgogCiAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KaW5kZXggYzI0MDdmMi4uYTRmYzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0yNiw0ICsyNiw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ2FjaGVSZXNvdXJjZShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHJlc291cmNlLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAK
KyAgICBEaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>