<?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>14225</bug_id>
          
          <creation_ts>2007-06-18 19:35:43 -0700</creation_ts>
          <short_desc>Make it possible to define platform-specific ResourceRequest without #ifdefs</short_desc>
          <delta_ts>2010-10-05 15:47:36 -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>Platform</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>mrowe</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>7123</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-18 19:35:43 -0700</bug_when>
    <thetext>Make it possible to define platform-specific ResourceRequest without #ifdefs

Move ResourceRequest into a platform-specific directory, and have it extend from a BaseResourceRequest that carries the bulk of the code for the ResourceRequest.

See patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7124</commentid>
    <comment_count>1</comment_count>
      <attachid>15112</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-18 19:38:16 -0700</bug_when>
    <thetext>Created attachment 15112
partial patch (mac only)

OK, this patch does the trick for PLATFORM(MAC).  If this approach is acceptable, then I will do the same for the USE(CFNETWORK).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7102</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-19 09:01:31 -0700</bug_when>
    <thetext>I thought about this patch some more, and perhaps it would be better to declare doUpdate* methods as virtual on the base class.  (This is somewhat of a textbook example of when you should use virtual functions.)  The cost of doing so would not be measurable in the product since we rarely call those methods, and moreover the work they do far outweighs the cost of the virtual functions.  If desired, I will make that modification.

Maciej asked in #webkit about finding a good pattern to apply universally to classes in the porting layer.  The two choices being virtual functions or downcasting.  I think that we&apos;ll have a better idea once more classes are converted.  In many cases, virtual functions would be more than appropriate, but we&apos;ll have to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7055</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-19 19:43:11 -0700</bug_when>
    <thetext>OK, I discussed this more with Maciej in #webkit, and we agreed on the following:

1. Name things FooBase instead of BaseFoo.  Hyatt was also happier with this.

2. Go with the downcasting approach, but invent a method for the downcast operation.  In this case, it would be something like this:

  class ResourceRequestBase
  {
      ...
  private:
      ResourceRequest&amp; asResourceRequest() {
          return *static_cast&lt;ResourceRequest*&gt;(this);
      }
      const ResourceRequest&amp; asResourceRequest() const {
          return *static_cast&lt;const ResourceRequest*&gt;(this);       
      }
  };

This naming convention is nice because it addresses situations where we have multiple FooBase classes in a heirarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7048</commentid>
    <comment_count>4</comment_count>
      <attachid>15133</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-19 20:39:26 -0700</bug_when>
    <thetext>Created attachment 15133
partial patch v2 (mac only)

OK, this implements the revised approach:
asResourceRequest() + ResourceRequestBase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7023</commentid>
    <comment_count>5</comment_count>
      <attachid>15133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-06-20 10:11:41 -0700</bug_when>
    <thetext>Comment on attachment 15133
partial patch v2 (mac only)

I&apos;m a little concerned about having files with identical names but different contents in the various platform-specific subdirectories. Up until this point we&apos;ve mostly avoided this, and it helps with build systems that have trouble understanding identically named source files. But I don&apos;t see an elegant alternative, so I guess we should go with it.

+#if PLATFORM(MAC)
+#include &lt;wtf/RetainPtr.h&gt;
+#ifdef __OBJC__
+@class NSURLRequest;
+#else
+class NSURLRequest;
+#endif
+#endif

I don&apos;t think that ResourceRequest.h in the mac subdirectory needs an #if PLATFORM(MAC). So you can just remove the ifdef.

+#include &quot;config.h&quot;
+#include &quot;ResourceRequest.h&quot;

I think it would be slightly better to explicitly include first &quot;ResourceRequestBase.h&quot; and then &quot;ResourceRequest.h&quot;, even though that amounts to the same thing as just including &quot;ResourceRequest.h&quot;. I want to take our &quot;always includes your own header first&quot; rule literally in cases like this.

+    const_cast&lt;ResourceRequest&amp;&gt;(asResourceRequest()).doUpdatePlatformRequest();

I believe this won&apos;t compile. It&apos;s not just a  const_cast, it&apos;s also a downcast, so it needs to be a combination of const_cast and static_cast or a C-style cast. Did you try compiling this?

I&apos;d slightly prefer it if we could come up with a way to do the downcast to ResourceRequest without a static_cast at each call site. Maybe an inline helper function would make the syntax a little sweeter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7033</commentid>
    <comment_count>6</comment_count>
      <attachid>15133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-06-20 10:11:41 -0700</bug_when>
    <thetext>Comment on attachment 15133
partial patch v2 (mac only)

I&apos;m a little concerned about having files with identical names but different contents in the various platform-specific subdirectories. Up until this point we&apos;ve mostly avoided this, and it helps with build systems that have trouble understanding identically named source files. But I don&apos;t see an elegant alternative, so I guess we should go with it.

+#if PLATFORM(MAC)
+#include &lt;wtf/RetainPtr.h&gt;
+#ifdef __OBJC__
+@class NSURLRequest;
+#else
+class NSURLRequest;
+#endif
+#endif

I don&apos;t think that ResourceRequest.h in the mac subdirectory needs an #if PLATFORM(MAC). So you can just remove the ifdef.

+#include &quot;config.h&quot;
+#include &quot;ResourceRequest.h&quot;

I think it would be slightly better to explicitly include first &quot;ResourceRequestBase.h&quot; and then &quot;ResourceRequest.h&quot;, even though that amounts to the same thing as just including &quot;ResourceRequest.h&quot;. I want to take our &quot;always includes your own header first&quot; rule literally in cases like this.

+    const_cast&lt;ResourceRequest&amp;&gt;(asResourceRequest()).doUpdatePlatformRequest();

I believe this won&apos;t compile. It&apos;s not just a  const_cast, it&apos;s also a downcast, so it needs to be a combination of const_cast and static_cast or a C-style cast. Did you try compiling this?

I&apos;d slightly prefer it if we could come up with a way to do the downcast to ResourceRequest without a static_cast at each call site. Maybe an inline helper function would make the syntax a little sweeter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6978</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-20 18:03:30 -0700</bug_when>
    <thetext>&gt; +#if PLATFORM(MAC)
&gt; +#include &lt;wtf/RetainPtr.h&gt;
&gt; +#ifdef __OBJC__
&gt; +@class NSURLRequest;
&gt; +#else
&gt; +class NSURLRequest;
&gt; +#endif
&gt; +#endif
&gt; 
&gt; I don&apos;t think that ResourceRequest.h in the mac subdirectory needs an #if
&gt; PLATFORM(MAC). So you can just remove the ifdef.

Oops, yes.  That is spurious.  I will remove it.


&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;ResourceRequest.h&quot;
&gt; 
&gt; I think it would be slightly better to explicitly include first
&gt; &quot;ResourceRequestBase.h&quot; and then &quot;ResourceRequest.h&quot;, even though that amounts
&gt; to the same thing as just including &quot;ResourceRequest.h&quot;. I want to take our
&gt; &quot;always includes your own header first&quot; rule literally in cases like this.

OK, sure thing.


&gt; +   
&gt; const_cast&lt;ResourceRequest&amp;&gt;(asResourceRequest()).doUpdatePlatformRequest();
&gt; 
&gt; I believe this won&apos;t compile. It&apos;s not just a  const_cast, it&apos;s also a
&gt; downcast, so it needs to be a combination of const_cast and static_cast or a
&gt; C-style cast. Did you try compiling this?

Yes, I compiled and Safari runs fine with this code.  I think you should look at the implementation of asResourceRequest(), which performs the downcast operation.  The const_cast is needed to call a non-const method on the ResourceRequest.


&gt; I&apos;d slightly prefer it if we could come up with a way to do the downcast to
&gt; ResourceRequest without a static_cast at each call site. Maybe an inline helper
&gt; function would make the syntax a little sweeter?

That would be asResourceRequest :-)  It is not inline however because I would have to define it after the #include of ResourceRequest.h, which would be messy.  I believe that any good compiler/linker will optimize away the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6671</commentid>
    <comment_count>8</comment_count>
      <attachid>15187</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-22 12:56:08 -0700</bug_when>
    <thetext>Created attachment 15187
partial patch v2.1 (mac only)

OK, revised according to review feedback.  Please let me know if this is an OK approach, and then I will contribute a CFNet version as well.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6258</commentid>
    <comment_count>9</comment_count>
      <attachid>15187</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-06-25 22:42:26 -0700</bug_when>
    <thetext>Comment on attachment 15187
partial patch v2.1 (mac only)

Looks good to me. We need at least a CFNetwork version as well to land this (assuming it breaks the ResourceRequest build for other platforms). And I think it would be good to convert the Qt and curl versions as well, to avoid breaking the build for the Qt and Gtk ports. Otherwise looks great. Please submit a new version that covers other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6246</commentid>
    <comment_count>10</comment_count>
      <attachid>15240</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-26 01:31:41 -0700</bug_when>
    <thetext>Created attachment 15240
complete patch

OK, this covers all of the major network platforms: mac, cf, qt, and curl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6236</commentid>
    <comment_count>11</comment_count>
      <attachid>15241</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2007-06-26 01:50:04 -0700</bug_when>
    <thetext>Created attachment 15241
complete patch (that actually works!)

was a link error in the previous patch.  use this one instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6142</commentid>
    <comment_count>12</comment_count>
      <attachid>15241</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-06-26 19:33:44 -0700</bug_when>
    <thetext>Comment on attachment 15241
complete patch (that actually works!)

Looks ok, please try to get someone to land this at a time when it is easy to follow the build bots and land appropriate follow-up fixes.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6139</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-06-26 20:17:21 -0700</bug_when>
    <thetext>Landed in r23806.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289793</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-05 11:58:44 -0700</bug_when>
    <thetext>&gt; (In reply to comment #5)
&gt; (From update of attachment 15133 [details])
&gt; I&apos;m a little concerned about having files with identical names but different contents in the various platform-specific subdirectories.

This exact issue was the cause of the recent WebSocket memory smasher (Mac Xcode project picked up the qt header).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289940</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-05 15:47:36 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 15133 [details] [details])
&gt; &gt; I&apos;m a little concerned about having files with identical names but different contents in the various platform-specific subdirectories.
&gt; 
&gt; This exact issue was the cause of the recent WebSocket memory smasher (Mac Xcode project picked up the qt header).

How was it that the Xcode build was including headers from a different port?  How likely is that problem to repeat?

Perhaps the ResourceRequest.h headers should all have PLATFORM-specific guards so that if PLATFORM(QT) is not defined then ResourceRequest would also not be defined.  That would turn this kind of mistake into a compile time error.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15112</attachid>
            <date>2007-06-18 19:38:16 -0700</date>
            <delta_ts>2007-06-19 20:39:26 -0700</delta_ts>
            <desc>partial patch (mac only)</desc>
            <filename>rr-1.diff</filename>
            <type>text/plain</type>
            <size>46611</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTgx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMDctMDYt
MTggIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIGJ1
bGsgb2YgUmVzb3VyY2VSZXF1ZXN0IGludG8gYSBiYXNlIGNsYXNzIG5hbWVkCisgICAgICAgIEJh
c2VSZXNvdXJjZVJlcXVlc3Qgd2l0aCBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBwdXNoZWQg
aW50bworICAgICAgICBSZXNvdXJjZVJlcXVlc3QuICBUaGlzIGFsbG93cyBwb3J0cyB0byBlYXNp
bHkgYWRkIG5ldyBtZW1iZXJzIHRvIGEKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpdGhvdXQg
aGF2aW5nIHRvICNpZmRlZiB0aGUgY29kZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Jhc2VSZXNvdXJjZVJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZVJlc291cmNlUmVxdWVzdDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VSZXNv
dXJjZVJlcXVlc3Q6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0
OjpzZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6Y2FjaGVQ
b2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGVQ
b2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6dGltZW91dElu
dGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6OnNldFRpbWVv
dXRJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0OjptYWlu
RG9jdW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0
TWFpbkRvY3VtZW50VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6
Omh0dHBNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0
SFRUUE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0OjpodHRw
SGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6Omh0
dHBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVz
dDo6aHR0cEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0
SFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6YWxsb3dI
VFRQQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0OjpzZXRB
bGxvd0hUVFBDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6
OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1
ZXN0OjphZGRIVFRQSGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6aXNDb25kaXRpb25hbCk6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6dXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jhc2VSZXNvdXJjZVJl
cXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZVJlc291cmNlUmVxdWVzdDo6aHR0cENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0OjpodHRwUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0SFRUUFJlZmVycmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6OmNsZWFySFRUUFJlZmVycmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6Omh0dHBVc2VyQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6c2V0SFRUUFVzZXJBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNlUmVzb3VyY2VSZXF1ZXN0OjpodHRwQWNjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2VSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBBY2NlcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZVJlc291cmNlUmVxdWVzdDo6QmFzZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZVJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6
OlJlc291cmNlUmVxdWVzdCk6CisKIDIwMDctMDYtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBRdCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlLmV4cAkocmV2aXNpb24gMjM1ODEpCisrKyBXZWJDb3JlLmV4cAkod29y
a2luZyBjb3B5KQpAQCAtNTU4LDggKzU1OCw4IEBAIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFu
ZGxlMTBjb25uZWN0aW8KIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTFmcmFtZUxvYWRl
ckV2CiBfX1pOSzdXZWJDb3JlMTVQcm9ncmVzc1RyYWNrZXIxN2VzdGltYXRlZFByb2dyZXNzRXYK
IF9fWk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEybnNVUkxSZXF1ZXN0RXYKLV9fWk5LN1dl
YkNvcmUxNVJlc291cmNlUmVxdWVzdDN1cmxFdgotX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1
ZXN0N2lzRW1wdHlFdgorX19aTks3V2ViQ29yZTE5QmFzZVJlc291cmNlUmVxdWVzdDN1cmxFdgor
X19aTks3V2ViQ29yZTE5QmFzZVJlc291cmNlUmVxdWVzdDdpc0VtcHR5RXYKIF9fWk5LN1dlYkNv
cmUxNkRlcHJlY2F0ZWRTdHJpbmcxMWdldE5TU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNkRlcHJl
Y2F0ZWRTdHJpbmcyYXRFagogX19aTks3V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzNtaWRFamoK
SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNTgxKQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyAr
MTczLDYgQEAKIAkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0U1M0U1MEE4
RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggKi87IH07CiAJCTFBQ0U1M0Y2MEE4RDE5
NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRTUzRjQwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1M
U2VyaWFsaXplci5jcHAgKi87IH07CiAJCTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQ0U1M0Y1MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLzsgfTsK
LQkJMUFEOENGQ0UwQjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUQ4Q0ZDRDBCMUNFRDg5
MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMUFFMkFBMUUwQTFDREFC
NDAwQjQyQjI1IC8qIEpTSFRNTEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBQTBBMEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hU
TUxBcmVhRWxlbWVudC5jcHAgKi87IH07CiAJCTFBRTJBQTFGMEExQ0RBQjQwMEI0MkIyNSAvKiBK
U0hUTUxBcmVhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFFMkFBMEIwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEFyZWFFbGVtZW50Lmgg
Ki87IH07CiAJCTFBRTJBQTIwMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxCYXNlRm9udEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFF
MkFBMEMwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEJhc2VGb250RWxlbWVudC5jcHAgKi87IH07
CkBAIC0zNDksNyArMzQ4LDYgQEAKIAkJNjUxQjREODUwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJl
Y2F0ZWRTdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1MUI0RDgzMDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlz
dC5jcHAgKi87IH07CiAJCTY1MUI0RDg2MDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3Ry
aW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjUxQjREODQwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmggKi87IH07
CiAJCTY1MUI0RDhGMDlBQzg1OUYwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdE1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MUI0RDhF
MDlBQzg1OUYwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdE1hYy5tbSAqLzsgfTsKLQkJ
NjUyMkJDREYwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUyMkJDREUwOUM5REFBODAwQzlC
QTdBIC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTY1NEVDNjExMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJh
bWVCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NEVDNjBGMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTRFQzYxMjA5Nzc3
OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0RUM2MTAwOTc3NzhGNTAwREFCNTJDIC8qIFdl
YkNvcmVGcmFtZUJyaWRnZS5tbSAqLzsgfTsKIAkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8q
IENEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTUwQjY5MzA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCAqLzsg
fTsKQEAgLTE1NTMsNiArMTU1MSw5IEBACiAJCTkzQ0Q0RkUzMDk5NUY5RUEwMDdFQ0M5NyAvKiBT
dHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQ0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJ
OTNDRDRGRTQwOTk1RjlFQTAwN0VDQzk3IC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0Q0RkREMDk5NUY5RUEwMDdFQ0M5NyAv
KiBTdHJpbmdJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNDRDRGRUMwOTk1RkQyQTAwN0VDQzk3IC8qIFBsYXRmb3JtU3RyaW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NENEZFQjA5OTVG
RDJBMDA3RUNDOTcgLyogUGxhdGZvcm1TdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0NEREUyNTBDMjM5QTJEMDBDRDU3QUUgLyogQmFz
ZVJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0NEREUyMzBDMjM5QTJEMDBDRDU3QUUgLyogQmFzZVJlc291cmNlUmVxdWVz
dC5jcHAgKi87IH07CisJCTkzQ0RERTI2MEMyMzlBMkQwMENENTdBRSAvKiBCYXNlUmVzb3VyY2VS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0NEREUyNDBDMjM5QTJEMDBDRDU3QUUgLyogQmFzZVJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzQ0RERTI4MEMyMzlB
NDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJj
ZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0UyMjdFMDBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjI3REIwQUY1ODlB
RDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAqLzsgfTsKIAkJOTNFMjI3RTEwQUY1ODlB
RDAwRDQ4MzI0IC8qIE1haW5SZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyMjdEQzBBRjU4OUFEMDBENDgzMjQgLyogTWFp
blJlc291cmNlTG9hZGVyLmNwcCAqLzsgfTsKIAkJOTNFMjI3RTIwQUY1ODlBRDAwRDQ4MzI0IC8q
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi87IH07CkBAIC0zMzg1LDcgKzMzODYsNiBAQAogCQkx
QUNFNTNFNjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFhNTFNlcmlhbGl6ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUNFNTNGNDBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTFNlcmlhbGl6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNFNTNGNTBBOEQxOTQ3MDAyMjk0N0QgLyog
SlNYTUxTZXJpYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hN
TFNlcmlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFEOENGQ0QwQjFD
RUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUUyQTlGMDBBMUNEQTU3MDBCNDJCMjUgLyogSFRNTEFyZWFFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEFyZWFFbGVtZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFMkE5RjEwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxCYXNl
Rm9udEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQmFzZUZvbnRFbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFMkE5RjIwQTFDREE1NzAw
QjQyQjI1IC8qIEhUTUxCb2R5RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhU
TUxCb2R5RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTczLDcg
KzM1NzMsNiBAQAogCQk2NTFCNEQ4MzA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmlu
Z0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJlY2F0
ZWRTdHJpbmdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxQjREODQw
OUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZXByZWNhdGVkU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTFCNEQ4RTA5QUM4NTlGMDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0
cmluZ0xpc3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTY1MjJCQ0RFMDlDOURBQTgwMEM5QkE3QSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1lbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1NEVDNjBGMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlk
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTRFQzYxMDA5Nzc3OEY1MDBEQUI1
MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ3NTcsNiArNDc1Niw5IEBACiAJCTkzQ0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAv
KiBTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NENEZERDA5OTVG
OUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0Q0RkVC
MDk5NUZEMkEwMDdFQ0M5NyAvKiBQbGF0Zm9ybVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0NEREUyMzBDMjM5QTJEMDBDRDU3QUUgLyogQmFzZVJlc291cmNlUmVxdWVzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZVJlc291cmNlUmVxdWVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQ0RERTI0MEMyMzlBMkQwMENE
NTdBRSAvKiBCYXNlUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXNlUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0UyMjdEQjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEb2N1bWVu
dExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0RDMEFGNTg5
QUQwMEQ0ODMyNCAvKiBNYWluUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBNYWluUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzEwMyw2ICs3MTA1LDggQEAKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyog
bWFjICovLAogCQkJCTUxMEY3MzU5MEI1NkMwODgwMEEzMDAyQSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAgKi8sCiAJCQkJNTEwRjczNUEwQjU2QzA4ODAwQTMwMDJBIC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmggKi8sCisJCQkJOTNDRERFMjMwQzIzOUEyRDAwQ0Q1N0FFIC8qIEJh
c2VSZXNvdXJjZVJlcXVlc3QuY3BwICovLAorCQkJCTkzQ0RERTI0MEMyMzlBMkQwMENENTdBRSAv
KiBCYXNlUmVzb3VyY2VSZXF1ZXN0LmggKi8sCiAJCQkJNTEwRjczNUIwQjU2QzA4ODAwQTMwMDJB
IC8qIENyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMEY3MzVDMEI1NkMwODgwMEEzMDAyQSAvKiBD
cmVkZW50aWFsLmggKi8sCiAJCQkJNjVEQURBMTcwQUZEODc4MDAwQ0U1M0VEIC8qIEZvcm1EYXRh
LmggKi8sCkBAIC03MTE4LDggKzcxMjIsNiBAQAogCQkJCTY1NkI4NERDMEFFQTFEMzEwMEEwOTVC
NCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNjU2Qjg0REUwQUVBMUQzMTAwQTA5NUI0
IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNjU2Qjg0REYwQUVBMUQzMTAwQTA5
NUI0IC8qIFJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAqLywKLQkJCQk2NTIyQkNERTA5QzlEQUE4
MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8sCi0JCQkJMUFEOENGQ0QwQjFDRUQ4OTAw
Njk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgKi8sCiAJCQkJNjU4ODIxNjUwQUY0Q0RGNzAw
RjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLywKIAkJCQkxQTgxODBBNDBCMUQ0RTQzMDBD
RTQ2QzQgLyogUmVzb3VyY2VSZXNwb25zZS5jcHAgKi8sCiAJCQkpOwpAQCAtNzEyOSw2ICs3MTMx
LDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNDRERFMjcwQzIzOUE0ODAwQ0Q1N0FF
IC8qIFJlc291cmNlUmVxdWVzdC5oICovLAogCQkJCTY1MTg4ODhBMEFGRjNDMTQwMDE2NDcyMCAv
KiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTY1REFEOUZFMEFGRDg2QkYwMENFNTNFRCAv
KiBGb3JtRGF0YVN0cmVhbU1hYy5oICovLAogCQkJCTY1REFEOUZGMEFGRDg2QkYwMENFNTNFRCAv
KiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLywKQEAgLTEwNDI3LDcgKzEwNDMwLDYgQEAKIAkJCQk5
M0VFQzIwMzA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRUVDMjA0MDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1MjJCQ0RGMDlDOURBQTgwMEM5QkE3QSAvKiBSZXNv
dXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzg0MUY4MDlDRTg1NUMwMERGRjVF
NSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODBG
NDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE1ODgsNiArMTE1OTAsOCBAQAogCQkJCUJDNkRDN0ExMEMxQTRCRkEwMDRF
MjAxNyAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZFMkYx
MjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhF
ODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNDRERFMjYw
QzIzOUEyRDAwQ0Q1N0FFIC8qIEJhc2VSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzQ0RERTI4MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0VDMDFCRTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4g
SGVhZGVycyAqLywKQEAgLTExNjQzLDcgKzExNjQ3LDYgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdE
NjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAw
MzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0
aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4
QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAw
MTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTEyODg1LDcgKzEyODg4LDYgQEAKIAkJ
CQlCMkQ4N0M4OTBCMTI0RTk1MDBCMERFMUUgLyogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEODdDOEEwQjEyNEU5NTAwQjBERTFFIC8qIFNWR1BhaW50
U2VydmVyU29saWRDZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFEOENGQ0Uw
QjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNjAyN0NCMzBCMUNDMDNEMDA4ODRCMkQgLyogQ29udGV4dE1lbnVJdGVtTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE4MTgwQTUwQjFENEU0MzAwQ0U0NkM0IC8qIFJlc291cmNlUmVzcG9u
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzMTBCNzYwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDE4LDYgKzEzMDIwLDcgQEAKIAkJCQlC
Q0NCQUQzQjBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0NCQUQ0MDBDMThDMTQyMDBDRTg5MEYgLyogSlNIVE1MQ29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZFMkYxMTBDMUI1ODM3MDAyMDIzNUYgLyog
SlNSZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzQ0RERTI1MEMyMzlBMkQwMENENTdBRSAv
KiBCYXNlUmVzb3VyY2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTI0RUU3MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTI0RUZG
MEMyNjQ0N0EwMDlFMjM0OSAvKiBKU0JhckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
QzAxQkQwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IHBsYXRmb3JtL25ldHdvcmsvQmFzZVJlc291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9CYXNlUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gMCkKKysr
IHBsYXRmb3JtL25ldHdvcmsvQmFzZVJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjYxIEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0K
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBCYXNlUmVz
b3VyY2VSZXF1ZXN0Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKTsgCit9CisKK2Jvb2wgQmFz
ZVJlc291cmNlUmVxdWVzdDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdXJsLnVybCgpLmlzTnVsbCgpOworfQorCitj
b25zdCBLVVJMJiBCYXNlUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKSBjb25zdCAKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdXJsOworfQorCit2b2lk
IEJhc2VSZXNvdXJjZVJlcXVlc3Q6OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCit7IAorICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKworICAgIG1fdXJsID0gdXJsOyAKKyAgICAKKyAgICBt
X3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3kgQmFzZVJlc291cmNlUmVxdWVzdDo6Y2FjaGVQb2xpY3koKSBjb25zdAor
eworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9jYWNo
ZVBvbGljeTsgCit9CisKK3ZvaWQgQmFzZVJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGVQb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kpCit7CisgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIG1fY2FjaGVQb2xpY3kgPSBjYWNoZVBvbGljeTsK
KyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworZG91Ymxl
IEJhc2VSZXNvdXJjZVJlcXVlc3Q6OnRpbWVvdXRJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX3RpbWVvdXRJbnRlcnZh
bDsgCit9CisKK3ZvaWQgQmFzZVJlc291cmNlUmVxdWVzdDo6c2V0VGltZW91dEludGVydmFsKGRv
dWJsZSB0aW1lb3V0SW50ZXJ2YWwpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAK
KyAgICAKKyAgICBtX3RpbWVvdXRJbnRlcnZhbCA9IHRpbWVvdXRJbnRlcnZhbDsgCisgICAgCisg
ICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK2NvbnN0IEtVUkwmIEJh
c2VSZXNvdXJjZVJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCgpIGNvbnN0Cit7CisgICAgdXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX21haW5Eb2N1bWVudFVSTDsg
Cit9CisKK3ZvaWQgQmFzZVJlc291cmNlUmVxdWVzdDo6c2V0TWFpbkRvY3VtZW50VVJMKGNvbnN0
IEtVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3sgCisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAorICAgIAorICAgIG1fbWFpbkRvY3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMOyAKKyAgICAK
KyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworY29uc3QgU3RyaW5n
JiBCYXNlUmVzb3VyY2VSZXF1ZXN0OjpodHRwTWV0aG9kKCkgY29uc3QKK3sKKyAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1faHR0cE1ldGhvZDsgCit9CisK
K3ZvaWQgQmFzZVJlc291cmNlUmVxdWVzdDo6c2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0
dHBNZXRob2QpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKworICAgIG1faHR0
cE1ldGhvZCA9IGh0dHBNZXRob2Q7CisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
ID0gZmFsc2U7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIEJhc2VSZXNvdXJjZVJlcXVlc3Q6
Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKKworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHM7IAorfQorCitTdHJpbmcgQmFzZVJl
c291cmNlUmVxdWVzdDo6aHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
K3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1faHR0
cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7Cit9CisKK3ZvaWQgQmFzZVJlc291cmNlUmVxdWVzdDo6
c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9odHRwSGVh
ZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZCA9IGZhbHNlOworfQorCitGb3JtRGF0YSogQmFzZVJlc291cmNlUmVxdWVzdDo6aHR0
cEJvZHkoKSBjb25zdCAKK3sgCisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAor
ICAgIHJldHVybiBtX2h0dHBCb2R5LmdldCgpOyAKK30KKwordm9pZCBCYXNlUmVzb3VyY2VSZXF1
ZXN0OjpzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSkKK3sKKyAgICB1
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9odHRwQm9keSA9IGh0dHBCb2R5
OyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30gCisKK2Jv
b2wgQmFzZVJlc291cmNlUmVxdWVzdDo6YWxsb3dIVFRQQ29va2llcygpIGNvbnN0IAoreworICAg
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9hbGxvd0hUVFBD
b29raWVzOyAKK30KKwordm9pZCBCYXNlUmVzb3VyY2VSZXF1ZXN0OjpzZXRBbGxvd0hUVFBDb29r
aWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcykKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsgCisgICAgCisgICAgbV9hbGxvd0hUVFBDb29raWVzID0gYWxsb3dIVFRQQ29va2llczsgCisg
ICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgQmFz
ZVJlc291cmNlUmVxdWVzdDo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Cisg
ICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9odHRwSGVh
ZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7IAorICAgIGlmICghcmVzdWx0LnNlY29uZCkKKyAg
ICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7Cit9CisKK3ZvaWQgQmFz
ZVJlc291cmNlUmVxdWVzdDo6YWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFw
JiBoZWFkZXJGaWVsZHMpCit7CisgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gaGVhZGVyRmllbGRzLmVuZCgpOworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICBhZGRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKK30KKworYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEJhc2VSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0IEJhc2VSZXNvdXJj
ZVJlcXVlc3QmIGIpCit7CisgICAgaWYgKGEudXJsKCkgIT0gYi51cmwoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGEuY2FjaGVQb2xpY3koKSAhPSBiLmNhY2hlUG9saWN5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLnRpbWVvdXRJbnRlcnZhbCgpICE9
IGIudGltZW91dEludGVydmFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICBpZiAo
YS5tYWluRG9jdW1lbnRVUkwoKSAhPSBiLm1haW5Eb2N1bWVudFVSTCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoYS5odHRwTWV0aG9kKCkgIT0gYi5odHRwTWV0aG9kKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmFsbG93SFRUUENvb2tpZXMoKSAhPSBi
LmFsbG93SFRUUENvb2tpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEu
aHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhlYWRlckZpZWxkcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBGb3JtRGF0YSogZm9ybURhdGFBID0gYS5odHRwQm9keSgpOworICAg
IEZvcm1EYXRhKiBmb3JtRGF0YUIgPSBiLmh0dHBCb2R5KCk7CisgICAgCisgICAgaWYgKCFmb3Jt
RGF0YUEpCisgICAgICAgIHJldHVybiAhZm9ybURhdGFCOworICAgIGlmICghZm9ybURhdGFCKQor
ICAgICAgICByZXR1cm4gIWZvcm1EYXRhQTsKKyAgICAKKyAgICBpZiAoKmZvcm1EYXRhQSAhPSAq
Zm9ybURhdGFCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgQmFzZVJlc291cmNlUmVxdWVzdDo6aXNDb25kaXRpb25hbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU1hdGNoIikgfHwK
KyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtTW9kaWZpZWQtU2lu
Y2UiKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1Ob25l
LU1hdGNoIikgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYt
UmFuZ2UiKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1V
bm1vZGlmaWVkLVNpbmNlIikpOworfQorCit2b2lkIEJhc2VSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0Cit7CisgICAgaWYgKG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1
ZXN0Kj4oCisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVxdWVzdCo+KHRoaXMp
KS0+ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0
ZWQgPSB0cnVlOworfQorCit2b2lkIEJhc2VSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVJlc291cmNl
UmVxdWVzdCgpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPigKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4odGhpcykpLT5kb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCgpOworICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRydWU7Cit9
CisKK30KSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvQmFzZVJlc291cmNlUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvQmFzZVJlc291cmNlUmVxdWVzdC5oCShyZXZpc2lv
biAwKQorKysgcGxhdGZvcm0vbmV0d29yay9CYXNlUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMzIEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQmFzZVJlc291cmNl
UmVxdWVzdF9oCisjZGVmaW5lIEJhc2VSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiRm9y
bURhdGEuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBlbnVtIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHsKKyAgICAgICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgLy8gbm9ybWFsIGxvYWQKKyAg
ICAgICAgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAorICAgICAgICBSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5nZSAtIGFs
bG93IHN0YWxlIGRhdGEKKyAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8vIHJlc3Vs
dHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUKKyAgICB9
OworCisgICAgc3RydWN0IEJhc2VSZXNvdXJjZVJlcXVlc3QgeworCisgICAgICAgIGJvb2wgaXNO
dWxsKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgICAgIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1
cmwpOworCisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9s
aWN5KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0
Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIHRpbWVv
dXRJbnRlcnZhbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEtVUkwmIG1haW5E
b2N1bWVudFVSTCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE1haW5Eb2N1bWVudFVSTChjb25z
dCBLVVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBodHRwTWV0aG9kKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBT
dHJpbmcmIGh0dHBNZXRob2QpOworICAgICAgICAKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1h
cCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OworICAgICAgICBTdHJpbmcgaHR0cEhlYWRlckZp
ZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUEhlYWRl
ckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAg
IHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgICAgIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJGaWVsZHMpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGh0dHBDb250
ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIik7
ICB9CisgICAgICAgIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaHR0cENv
bnRlbnRUeXBlKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIiwgaHR0cENvbnRl
bnRUeXBlKTsgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0
IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiUmVmZXJlciIpOyB9CisgICAgICAgIHZvaWQgc2V0
SFRUUFJlZmVycmVyKGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhUVFBIZWFkZXJG
aWVsZCgiUmVmZXJlciIsIGh0dHBSZWZlcnJlcik7IH0KKyAgICAgICAgdm9pZCBjbGVhckhUVFBS
ZWZlcnJlcigpIHsgbV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZSgiUmVmZXJlciIpOyB9CisgICAg
ICAgIAorICAgICAgICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGh0dHBI
ZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRUUFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJVc2Vy
LUFnZW50IiwgaHR0cFVzZXJBZ2VudCk7IH0KKworICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgp
IGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KKyAgICAgICAgdm9p
ZCBzZXRIVFRQQWNjZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVy
RmllbGQoIkFjY2VwdCIsIGh0dHBBY2NlcHQpOyB9CisKKyAgICAgICAgRm9ybURhdGEqIGh0dHBC
b2R5KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0
YT4gaHR0cEJvZHkpOworICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd0hUVFBDb29raWVzKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0QWxsb3dIVFRQQ29va2llcyhib29sIGFsbG93SFRUUENv
b2tpZXMpOworCisgICAgICAgIGJvb2wgaXNDb25kaXRpb25hbCgpIGNvbnN0OworICAgICAgICAK
KyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMg
aW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0
CisgICAgICAgIEJhc2VSZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBtX3Jlc291cmNl
UmVxdWVzdFVwZGF0ZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZCh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBCYXNlUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5
KQorICAgICAgICAgICAgOiBtX3VybCh1cmwpCisgICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3ko
cG9saWN5KQorICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0VGltZW91dElu
dGVydmFsKQorICAgICAgICAgICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCisgICAgICAgICAgICAs
IG1fYWxsb3dIVFRQQ29va2llcyh0cnVlKQorICAgICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVz
dFVwZGF0ZWQodHJ1ZSkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZh
bHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3Jt
UmVxdWVzdCgpIGNvbnN0OyAKKyAgICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBj
b25zdDsgCisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGltZW91dEludGVydmFs
ID0gNjA7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeSBtX2NhY2hlUG9saWN5OworICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2
YWw7CisgICAgICAgIEtVUkwgbV9tYWluRG9jdW1lbnRVUkw7CisgICAgICAgIFN0cmluZyBtX2h0
dHBNZXRob2Q7CisgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOworICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IG1faHR0cEJvZHk7CisgICAgICAgIGJvb2wgbV9hbGxvd0hU
VFBDb29raWVzOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
OworICAgICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkOworICAgIH07
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzZVJlc291cmNlUmVxdWVzdCYgYSwgY29u
c3QgQmFzZVJlc291cmNlUmVxdWVzdCYgYik7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShC
YXNlUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBCYXNlUmVzb3VyY2VSZXF1ZXN0JiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
QmFzZVJlc291cmNlUmVxdWVzdF9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAyMzU4MSkKKysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjMgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsg
Yy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojppc0VtcHR5KCkgY29uc3QKLXsKLSAgICB1
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1fdXJsLmlzRW1wdHko
KTsgCi19Ci0KLWJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojppc051bGwoKSBjb25zdAotewotICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV91cmwudXJsKCkuaXNO
dWxsKCk7Ci19Ci0KLWNvbnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdDo6dXJsKCkgY29uc3QgCi17
Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX3VybDsK
LX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCi17IAot
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQotICAgIG1fdXJsID0gdXJsOyAKLSAgICAK
LSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kgUmVzb3VyY2VSZXF1ZXN0OjpjYWNoZVBvbGljeSgpIGNvbnN0
Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2Nh
Y2hlUG9saWN5OyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUG9saWN5KFJl
c291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KQotewotICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2NhY2hlUG9saWN5ID0gY2FjaGVQb2xpY3k7Ci0g
ICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Ci19Ci0KLWRvdWJsZSBS
ZXNvdXJjZVJlcXVlc3Q6OnRpbWVvdXRJbnRlcnZhbCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX3RpbWVvdXRJbnRlcnZhbDsgCi19
Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVv
dXRJbnRlcnZhbCkgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAg
IG1fdGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsOyAKLSAgICAKLSAgICBtX3BsYXRm
b3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotY29uc3QgS1VSTCYgUmVzb3VyY2VSZXF1
ZXN0OjptYWluRG9jdW1lbnRVUkwoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVz
dCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9tYWluRG9jdW1lbnRVUkw7IAotfQotCi12b2lkIFJl
c291cmNlUmVxdWVzdDo6c2V0TWFpbkRvY3VtZW50VVJMKGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVu
dFVSTCkKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1fbWFp
bkRvY3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVx
dWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlcXVlc3Q6
Omh0dHBNZXRob2QoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAg
ICAKLSAgICByZXR1cm4gbV9odHRwTWV0aG9kOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OnNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKSAKLXsKLSAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCi0KLSAgICBtX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOwotICAg
IAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1jb25zdCBIVFRQ
SGVhZGVyTWFwJiBSZXNvdXJjZVJlcXVlc3Q6Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAotewot
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQotICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHM7IAotfQotCi1TdHJpbmcgUmVzb3VyY2VSZXF1ZXN0OjpodHRwSGVhZGVyRmllbGQoY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAK
LSAgICAKLSAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsKLX0KLQotdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAot
ICAgIAotICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQobmFtZSwgdmFsdWUpOyAKLSAgICAKLSAg
ICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotRm9ybURhdGEqIFJlc291
cmNlUmVxdWVzdDo6aHR0cEJvZHkoKSBjb25zdCAKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBCb2R5LmdldCgpOyAKLX0KLQotdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5
KQotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2h0dHBCb2R5
ID0gaHR0cEJvZHk7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNl
OwotfSAKLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OmFsbG93SFRUUENvb2tpZXMoKSBjb25zdCAK
LXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1fYWxs
b3dIVFRQQ29va2llczsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRBbGxvd0hUVFBD
b29raWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcykKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCi0gICAgCi0gICAgbV9hbGxvd0hUVFBDb29raWVzID0gYWxsb3dIVFRQQ29va2llczsg
Ci0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSBjb25zdAotewotI2lmIFBM
QVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBpZiAobV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY29uc3RfY2FzdDxSZXNvdXJjZVJl
cXVlc3QqPih0aGlzKS0+ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICBtX3BsYXRmb3Jt
UmVxdWVzdFVwZGF0ZWQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojp1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKE1BQykgfHwg
VVNFKENGTkVUV09SSykKLSAgICBpZiAobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT5kb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRy
dWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFkZEhUVFBIZWFkZXJGaWVs
ZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIAotewotICAgIHVwZGF0
ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOyAKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsIiAr
IHZhbHVlOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6YWRkSFRUUEhlYWRlckZpZWxkcyhj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMpCi17Ci0gICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVyRmllbGRzLmVuZCgpOwotICAgIGZvciAoSFRUUEhl
YWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICBhZGRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vj
b25kKTsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBiKQotewotICAgIGlmIChhLnVybCgpICE9IGIudXJsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhLmNhY2hlUG9saWN5KCkgIT0gYi5jYWNo
ZVBvbGljeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS50aW1lb3V0SW50
ZXJ2YWwoKSAhPSBiLnRpbWVvdXRJbnRlcnZhbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
Ci0gICAgaWYgKGEubWFpbkRvY3VtZW50VVJMKCkgIT0gYi5tYWluRG9jdW1lbnRVUkwoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEuaHR0cE1ldGhvZCgpICE9IGIuaHR0cE1l
dGhvZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5hbGxvd0hUVFBDb29r
aWVzKCkgIT0gYi5hbGxvd0hUVFBDb29raWVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRm9ybURhdGEqIGZvcm1EYXRhQSA9IGEuaHR0cEJv
ZHkoKTsKLSAgICBGb3JtRGF0YSogZm9ybURhdGFCID0gYi5odHRwQm9keSgpOwotICAgIAotICAg
IGlmICghZm9ybURhdGFBKQotICAgICAgICByZXR1cm4gIWZvcm1EYXRhQjsKLSAgICBpZiAoIWZv
cm1EYXRhQikKLSAgICAgICAgcmV0dXJuICFmb3JtRGF0YUE7Ci0gICAgCi0gICAgaWYgKCpmb3Jt
RGF0YUEgIT0gKmZvcm1EYXRhQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFJlc291cmNlUmVxdWVzdDo6aXNDb25kaXRpb25hbCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIChtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU1hdGNo
IikgfHwKLSAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtTW9kaWZp
ZWQtU2luY2UiKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJ
Zi1Ob25lLU1hdGNoIikgfHwKLSAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlu
cygiSWYtUmFuZ2UiKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5z
KCJJZi1Vbm1vZGlmaWVkLVNpbmNlIikpOwotfQotCi19CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0LmgJKHJldmlzaW9uIDIzNTgxKQorKysgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTcgKzAsMCBAQAotLy8gLSotIG1vZGU6
IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCi0jZGVmaW5lIFJlc291cmNlUmVxdWVzdF9oCi0K
LSNpbmNsdWRlICJGb3JtRGF0YS5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJIVFRQ
SGVhZGVyTWFwLmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3MgTlNVUkxSZXF1ZXN0OwotI2Vsc2UKLWNsYXNz
IE5TVVJMUmVxdWVzdDsKLSNlbmRpZgotI2VsaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVS
TFJlcXVlc3RSZWY7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgZW51bSBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB7Ci0gICAgICAgIFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3ksIC8vIG5vcm1hbCBsb2FkCi0gICAgICAgIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyBy
ZWxvYWQKLSAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBv
ciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxvdyBzdGFsZSBkYXRhCi0gICAgICAgIFJldHVybkNhY2hl
RGF0YURvbnRMb2FkLCAvLyByZXN1bHRzIG9mIGEgcG9zdCAtIGFsbG93IHN0YWxlIGRhdGEgYW5k
IG9ubHkgdXNlIGNhY2hlCi0gICAgfTsKLQotICAgIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3Qgewot
Ci0gICAgICAgIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpIAot
ICAgICAgICAgICAgOiBtX3VybCh1cmwuZGVwcmVjYXRlZFN0cmluZygpKQotICAgICAgICAgICAg
LCBtX2NhY2hlUG9saWN5KFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCi0gICAgICAgICAgICAsIG1f
dGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwpCi0gICAgICAgICAgICAsIG1f
aHR0cE1ldGhvZCgiR0VUIikKLSAgICAgICAgICAgICwgbV9hbGxvd0hUVFBDb29raWVzKHRydWUp
Ci0gICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVlKQotICAgICAgICAg
ICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIAotICAgICAgICAg
ICAgOiBtX3VybCh1cmwpCi0gICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3koVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVv
dXRJbnRlcnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAgICAgICAg
ICAgLCBtX2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNvdXJjZVJl
cXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRl
ZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0
Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgCi0gICAgICAgICAg
ICA6IG1fdXJsKHVybCkKLSAgICAgICAgICAgICwgbV9jYWNoZVBvbGljeShwb2xpY3kpCi0gICAg
ICAgICAgICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwpCi0gICAg
ICAgICAgICAsIG1faHR0cE1ldGhvZCgiR0VUIikKLSAgICAgICAgICAgICwgbV9hbGxvd0hUVFBD
b29raWVzKHRydWUpCi0gICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVl
KQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgICAgICA6IG1fY2FjaGVQ
b2xpY3koVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50
ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9k
KCJHRVQiKQotICAgICAgICAgICAgLCBtX2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAg
ICAgICwgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxh
dGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0K
LSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VVJMKGNv
bnN0IEtVUkwmIHVybCk7Ci0KLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgY2FjaGVQb2xpY3koKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRDYWNoZVBvbGljeShSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSk7Ci0gICAgICAgIAotICAgICAgICBk
b3VibGUgdGltZW91dEludGVydmFsKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VGltZW91dElu
dGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpOwotICAgICAgICAKLSAgICAgICAgY29uc3Qg
S1VSTCYgbWFpbkRvY3VtZW50VVJMKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0TWFpbkRvY3Vt
ZW50VVJMKGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgICAgIAotICAgICAgICBj
b25zdCBTdHJpbmcmIGh0dHBNZXRob2QoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRIVFRQTWV0
aG9kKGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBI
VFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBo
dHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICAgICAgdm9pZCBz
ZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKLSAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGRzKGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcyk7Ci0gICAgICAgIAotICAgICAgICBTdHJp
bmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJDb250
ZW50LVR5cGUiKTsgIH0KLSAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJiBodHRwQ29udGVudFR5cGUpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUi
LCBodHRwQ29udGVudFR5cGUpOyB9Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgaHR0cFJlZmVy
cmVyKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJSZWZlcmVyIik7IH0KLSAgICAg
ICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3RyaW5nJiBodHRwUmVmZXJyZXIpIHsgc2V0
SFRUUEhlYWRlckZpZWxkKCJSZWZlcmVyIiwgaHR0cFJlZmVycmVyKTsgfQotICAgICAgICB2b2lk
IGNsZWFySFRUUFJlZmVycmVyKCkgeyBtX2h0dHBIZWFkZXJGaWVsZHMucmVtb3ZlKCJSZWZlcmVy
Iik7IH0KLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBodHRwVXNlckFnZW50KCkgY29uc3QgeyBy
ZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJVc2VyLUFnZW50Iik7IH0KLSAgICAgICAgdm9pZCBzZXRI
VFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYgaHR0cFVzZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVy
RmllbGQoIlVzZXItQWdlbnQiLCBodHRwVXNlckFnZW50KTsgfQotCi0gICAgICAgIFN0cmluZyBo
dHRwQWNjZXB0KCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJBY2NlcHQiKTsgfQot
ICAgICAgICB2b2lkIHNldEhUVFBBY2NlcHQoY29uc3QgU3RyaW5nJiBodHRwQWNjZXB0KSB7IHNl
dEhUVFBIZWFkZXJGaWVsZCgiQWNjZXB0IiwgaHR0cEFjY2VwdCk7IH0KLQotICAgICAgICBGb3Jt
RGF0YSogaHR0cEJvZHkoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRIVFRQQm9keShQYXNzUmVm
UHRyPEZvcm1EYXRhPiBodHRwQm9keSk7Ci0gICAgICAgIAotICAgICAgICBib29sIGFsbG93SFRU
UENvb2tpZXMoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRBbGxvd0hUVFBDb29raWVzKGJvb2wg
YWxsb3dIVFRQQ29va2llcyk7Ci0KLSAgICAgICAgYm9vbCBpc0NvbmRpdGlvbmFsKCkgY29uc3Q7
Ci0gICAgICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KE5T
VVJMUmVxdWVzdCogbnNSZXF1ZXN0KQotICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVzdFVw
ZGF0ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVl
KQotICAgICAgICAgICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpIHsgfQotICAgICAgICAKLSAg
ICAgICAgTlNVUkxSZXF1ZXN0KiBuc1VSTFJlcXVlc3QoKSBjb25zdDsKLSNlbGlmIFVTRShDRk5F
VFdPUkspCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0
KQotICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVlKQotICAgICAgICAgICAgLCBtX2Nm
UmVxdWVzdChjZlJlcXVlc3QpIHsgfQotICAgICAgICAKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVm
IGNmVVJMUmVxdWVzdCgpIGNvbnN0OyAgICAgICAKLSNlbmRpZgotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3Q7IAotICAgICAgICB2b2lkIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0OyAKLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNF
KENGTkVUV09SSykKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwotICAg
ICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0jZW5kaWYKLSAgICAgICAgCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IDYwOwotCi0g
ICAgICAgIEtVUkwgbV91cmw7Ci0KLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
bV9jYWNoZVBvbGljeTsKLSAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOwotICAgICAg
ICBLVVJMIG1fbWFpbkRvY3VtZW50VVJMOwotICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwot
ICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKLSAgICAgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2h0dHBCb2R5OwotICAgICAgICBib29sIG1fYWxsb3dIVFRQQ29va2llczsK
LSAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZDsKLSAgICAgICAg
bXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZDsKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG1fbnNSZXF1ZXN0OwotI2VsaWYgVVNF
KENGTkVUV09SSykKLSAgICAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVl
c3Q7ICAgICAgCi0jZW5kaWYKLSAgICB9OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBiKTsKLSAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFJlc291cmNlUmVxdWVzdCYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0X2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VSZXF1ZXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8vIC0qLSBtb2RlOiBj
Kys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAorCisj
aW5jbHVkZSAiQmFzZVJlc291cmNlUmVxdWVzdC5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5TVVJMUmVx
dWVzdDsKKyNlbHNlCitjbGFzcyBOU1VSTFJlcXVlc3Q7CisjZW5kaWYKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IDogQmFzZVJlc291
cmNlUmVxdWVzdCB7CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJs
KSAKKyAgICAgICAgICAgIDogQmFzZVJlc291cmNlUmVxdWVzdChLVVJMKHVybC5kZXByZWNhdGVk
U3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgICAg
IDogQmFzZVJlc291cmNlUmVxdWVzdCh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBv
bGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICAgICAgOiBCYXNlUmVzb3Vy
Y2VSZXF1ZXN0KHVybCwgcG9saWN5KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRIVFRQUmVm
ZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoKQorICAgICAgICAgICAgOiBCYXNlUmVzb3VyY2VSZXF1ZXN0KEtVUkwoKSwgVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0KiBuc1JlcXVlc3QpCisgICAgICAgICAgICA6
IEJhc2VSZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgLCBtX25zUmVxdWVzdChuc1JlcXVl
c3QpIHsgfQorICAgICAgICAKKyAgICAgICAgTlNVUkxSZXF1ZXN0KiBuc1VSTFJlcXVlc3QoKSBj
b25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBCYXNlUmVzb3VyY2VS
ZXF1ZXN0OworCisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKKyAgICAg
ICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICAKKyAgICAgICAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9uc1JlcXVlc3Q7CisgICAgfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15133</attachid>
            <date>2007-06-19 20:39:26 -0700</date>
            <delta_ts>2007-06-22 12:56:08 -0700</delta_ts>
            <desc>partial patch v2 (mac only)</desc>
            <filename>rr-2.diff</filename>
            <type>text/plain</type>
            <size>46678</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjQ5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMDctMDYt
MTkgIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIGJ1
bGsgb2YgUmVzb3VyY2VSZXF1ZXN0IGludG8gYSBiYXNlIGNsYXNzIG5hbWVkCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2Ugd2l0aCBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBwdXNoZWQg
aW50bworICAgICAgICBSZXNvdXJjZVJlcXVlc3QuICBUaGlzIGFsbG93cyBwb3J0cyB0byBlYXNp
bHkgYWRkIG5ldyBtZW1iZXJzIHRvIGEKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpdGhvdXQg
aGF2aW5nIHRvICNpZmRlZiB0aGUgY29kZSB0aGF0IGlzIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHA6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGltZW91dEludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVudFVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9jdW1lbnRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cE1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJGaWVsZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEhlYWRlckZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRUUENvb2tpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjpodHRwQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0SFRUUENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6Omh0dHBSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Y2xlYXJIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6aHR0cFVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3RCYXNlOjpzZXRIVFRQVXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6Omh0dHBBY2NlcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEFjY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
IT0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KToKKwogMjAwNy0wNi0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIERlY2tlci4KSW5kZXg6IFdlYkNvcmUuZXhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUuZXhwCShyZXZpc2lvbiAyMzU4MSkKKysrIFdlYkNvcmUuZXhw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTgsOCArNTU4LDggQEAgX19aTks3V2ViQ29yZTE0UmVzb3Vy
Y2VIYW5kbGUxMGNvbm5lY3RpbwogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxMWZyYW1l
TG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxNVByb2dyZXNzVHJhY2tlcjE3ZXN0aW1hdGVkUHJvZ3Jl
c3NFdgogX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJuc1VSTFJlcXVlc3RFdgotX19a
Tks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0M3VybEV2Ci1fX1pOSzdXZWJDb3JlMTVSZXNvdXJj
ZVJlcXVlc3Q3aXNFbXB0eUV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlM3Vy
bEV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlN2lzRW1wdHlFdgogX19aTks3
V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzExZ2V0TlNTdHJpbmdFdgogX19aTks3V2ViQ29yZTE2
RGVwcmVjYXRlZFN0cmluZzJhdEVqCiBfX1pOSzdXZWJDb3JlMTZEZXByZWNhdGVkU3RyaW5nM21p
ZEVqagpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM1ODEpCisr
KyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw3ICsxNzMsNiBAQAogCQkxQUNFNTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRTUz
RTUwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCAqLzsgfTsKIAkJMUFDRTUzRjYw
QThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFNTNGNDBBOEQxOTQ3MDAyMjk0N0QgLyog
SlNYTUxTZXJpYWxpemVyLmNwcCAqLzsgfTsKIAkJMUFDRTUzRjcwQThEMTk0NzAwMjI5NDdEIC8q
IEpTWE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFDRTUzRjUwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5oICov
OyB9OwotCQkxQUQ4Q0ZDRTBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRDhDRkNEMEIx
Q0VEODkwMDY5NkRFMCAvKiBSZXNvdXJjZVJlcXVlc3QuY3BwICovOyB9OwogCQkxQUUyQUExRTBB
MUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFBMEEwQTFDREFCMzAwQjQyQjI1IC8q
IEpTSFRNTEFyZWFFbGVtZW50LmNwcCAqLzsgfTsKIAkJMUFFMkFBMUYwQTFDREFCNDAwQjQyQjI1
IC8qIEpTSFRNTEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUUyQUEwQjBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1l
bnQuaCAqLzsgfTsKIAkJMUFFMkFBMjAwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEJhc2VGb250
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUUyQUEwQzBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQmFzZUZvbnRFbGVtZW50LmNwcCAq
LzsgfTsKQEAgLTM0OSw3ICszNDgsNiBAQAogCQk2NTFCNEQ4NTA5QUM4MzM3MDAyOUYxRUYgLyog
RGVwcmVjYXRlZFN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUxQjREODMwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJp
bmdMaXN0LmNwcCAqLzsgfTsKIAkJNjUxQjREODYwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0
ZWRTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTFCNEQ4NDA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCAq
LzsgfTsKIAkJNjUxQjREOEYwOUFDODU5RjAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUx
QjREOEUwOUFDODU5RjAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0TWFjLm1tICovOyB9
OwotCQk2NTIyQkNERjA5QzlEQUE4MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTIyQkNERTA5QzlEQUE4
MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU0RUM2MTEwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNv
cmVGcmFtZUJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU0RUM2MEYwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFtZUJyaWRnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NEVDNjEy
MDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTRFQzYxMDA5Nzc3OEY1MDBEQUI1MkMg
LyogV2ViQ29yZUZyYW1lQnJpZGdlLm1tICovOyB9OwogCQk2NTUwQjY5RDA5OURGMDI3MDA5MEQ3
ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NTBCNjkzMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3Bw
ICovOyB9OwpAQCAtMTU1Myw2ICsxNTUxLDkgQEAKIAkJOTNDRDRGRTMwOTk1RjlFQTAwN0VDQzk3
IC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNDRDRGREMwOTk1RjlFQTAwN0VDQzk3IC8qIFN0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk5M0NENEZFNDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDRDRGREQwOTk1RjlFQTAwN0VD
Qzk3IC8qIFN0cmluZ0ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0NENEZFQzA5OTVGRDJBMDA3RUNDOTcgLyogUGxhdGZvcm1TdHJpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0Q0RkVC
MDk5NUZEMkEwMDdFQ0M5NyAvKiBQbGF0Zm9ybVN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzQ0RERTI4MEMyMzlBNDgwMENENTdBRSAv
KiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q4MkE0
OTBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q4MkE0NzBDMjhDRjFFMDBGRDcw
M0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgKi87IH07CisJCTkzRDgyQTRBMEMyOENGMUUw
MEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q4MkE0ODBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRTIyN0UwMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyMjdEQjBB
RjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovOyB9OwogCQk5M0UyMjdFMTBB
RjU4OUFEMDBENDgzMjQgLyogTWFpblJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyN0RDMEFGNTg5QUQwMEQ0ODMyNCAv
KiBNYWluUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwogCQk5M0UyMjdFMjBBRjU4OUFEMDBENDgz
MjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCAqLzsgfTsKQEAgLTMzODUsNyArMzM4Niw2IEBA
CiAJCTFBQ0U1M0U2MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gWE1MU2VyaWFsaXplci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MU2VyaWFsaXplci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQ0U1M0Y1MEE4RDE5NDcwMDIyOTQ3
RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTWE1MU2VyaWFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUQ4Q0ZD
RDBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBRTJBOUYwMEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1MQXJlYUVsZW1l
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXJlYUVsZW1lbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUUyQTlGMTBBMUNEQTU3MDBCNDJCMjUgLyogSFRN
TEJhc2VGb250RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxCYXNlRm9u
dEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUUyQTlGMjBBMUNE
QTU3MDBCNDJCMjUgLyogSFRNTEJvZHlFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTEJvZHlFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1
NzMsNyArMzU3Myw2IEBACiAJCTY1MUI0RDgzMDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVk
U3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVw
cmVjYXRlZFN0cmluZ0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTFC
NEQ4NDA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MUI0RDhFMDlBQzg1OUYwMDI5RjFFRiAvKiBEZXByZWNh
dGVkU3RyaW5nTGlzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEZXByZWNhdGVkU3RyaW5nTGlzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNjUyMkJDREUwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDhFMjQ4MDlFMUUwNEQwMEFGODAyMCAvKiBEb2N1bWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjU0RUM2MEYwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFt
ZUJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZyYW1l
QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NEVDNjEwMDk3Nzc4RjUw
MERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUZyYW1lQnJpZGdlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDc1Nyw2ICs0NzU2LDkgQEAKIAkJOTNDRDRGREMwOTk1RjlFQTAwN0VD
Qzk3IC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0Q0RkRE
MDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTND
RDRGRUIwOTk1RkQyQTAwN0VDQzk3IC8qIFBsYXRmb3JtU3RyaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q4MkE0NzBDMjhDRjFFMDBGRDcwM0QgLyogUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRDgyQTQ4MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1
bWVudExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IERv
Y3VtZW50TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REMw
QUY1ODlBRDAwRDQ4MzI0IC8qIE1haW5SZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
ZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IE1haW5SZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MTE4LDggKzcxMjAsOCBAQAogCQkJCTY1NkI4NERDMEFFQTFEMzEwMEEwOTVC
NCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNjU2Qjg0REUwQUVBMUQzMTAwQTA5NUI0
IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNjU2Qjg0REYwQUVBMUQzMTAwQTA5
NUI0IC8qIFJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAqLywKLQkJCQk2NTIyQkNERTA5QzlEQUE4
MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8sCi0JCQkJMUFEOENGQ0QwQjFDRUQ4OTAw
Njk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgKi8sCisJCQkJOTNEODJBNDcwQzI4Q0YxRTAw
RkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwICovLAorCQkJCTkzRDgyQTQ4MEMyOENG
MUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8sCiAJCQkJNjU4ODIxNjUwQUY0
Q0RGNzAwRjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLywKIAkJCQkxQTgxODBBNDBCMUQ0
RTQzMDBDRTQ2QzQgLyogUmVzb3VyY2VSZXNwb25zZS5jcHAgKi8sCiAJCQkpOwpAQCAtNzEyOSw2
ICs3MTMxLDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNDRERFMjcwQzIzOUE0ODAw
Q0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oICovLAogCQkJCTY1MTg4ODhBMEFGRjNDMTQwMDE2
NDcyMCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTY1REFEOUZFMEFGRDg2QkYwMENF
NTNFRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5oICovLAogCQkJCTY1REFEOUZGMEFGRDg2QkYwMENF
NTNFRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLywKQEAgLTEwNDI3LDcgKzEwNDMwLDYgQEAK
IAkJCQk5M0VFQzIwMzA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRUVDMjA0MDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlu
a0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1MjJCQ0RGMDlDOURBQTgwMEM5QkE3QSAv
KiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzg0MUY4MDlDRTg1NUMw
MERGRjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBp
biBIZWFkZXJzICovLApAQCAtMTE1ODgsMTEgKzExNTkwLDEzIEBACiAJCQkJQkM2REM3QTEwQzFB
NEJGQTAwNEUyMDE3IC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRkUyRjEyMEMxQjU4MzgwMDIwMjM1RiAvKiBKU1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDM2OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0NEREUyODBDMjM5QTQ4MDBDRDU3QUUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFySW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxQzMwQzI3NERERDAwOUY0RUM5IC8qIEpTU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0VDMDFENzBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4u
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDgyQTRBMEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNjQzLDcgKzExNjQ3LDYgQEAKIAkJ
CW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlw
cm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87
CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdl
dHMgPSAoCiAJCQkJOTNGMTk4QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJ
REQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTEyODg1
LDcgKzEyODg4LDYgQEAKIAkJCQlCMkQ4N0M4OTBCMTI0RTk1MDBCMERFMUUgLyogU1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuQ2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEODdDOEEwQjEyNEU5NTAw
QjBERTFFIC8qIFNWR1BhaW50U2VydmVyU29saWRDZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzM1MkMxOTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMUFEOENGQ0UwQjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNjAyN0NCMzBCMUNDMDNEMDA4ODRCMkQgLyogQ29udGV4dE1l
bnVJdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4MTgwQTUwQjFENEU0MzAwQ0U0NkM0
IC8qIFJlc291cmNlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzMTBCNzYwQjFG
NDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDIzLDYg
KzEzMDI1LDcgQEAKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUMwMUMyMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZv
cm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5M0Q4MkE0OTBDMjhDRjFFMDBGRDcw
M0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNTgxKQorKysgcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2MyArMCww
IEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6Omlz
RW1wdHkoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAg
ICByZXR1cm4gbV91cmwuaXNFbXB0eSgpOyAKLX0KLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6Omlz
TnVsbCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAg
IHJldHVybiBtX3VybC51cmwoKS5pc051bGwoKTsKLX0KLQotY29uc3QgS1VSTCYgUmVzb3VyY2VS
ZXF1ZXN0Ojp1cmwoKSBjb25zdCAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0g
ICAgCi0gICAgcmV0dXJuIG1fdXJsOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0VVJM
KGNvbnN0IEtVUkwmIHVybCkKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotCi0g
ICAgbV91cmwgPSB1cmw7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZh
bHNlOwotfQotCi1jb25zdCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBSZXNvdXJjZVJlcXVl
c3Q6OmNhY2hlUG9saWN5KCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsg
Ci0gICAgCi0gICAgcmV0dXJuIG1fY2FjaGVQb2xpY3k7IAotfQotCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6c2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xp
Y3kpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1fY2FjaGVQ
b2xpY3kgPSBjYWNoZVBvbGljeTsKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQg
PSBmYWxzZTsKLX0KLQotZG91YmxlIFJlc291cmNlUmVxdWVzdDo6dGltZW91dEludGVydmFsKCkg
Y29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJu
IG1fdGltZW91dEludGVydmFsOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFRpbWVv
dXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKSAKLXsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV90aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2
YWw7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1j
b25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCgpIGNvbnN0Ci17Ci0g
ICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX21haW5Eb2N1
bWVudFVSTDsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRNYWluRG9jdW1lbnRVUkwo
Y29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKQoteyAKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCi0gICAgCi0gICAgbV9tYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnRVUkw7IAot
ICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1jb25zdCBT
dHJpbmcmIFJlc291cmNlUmVxdWVzdDo6aHR0cE1ldGhvZCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBNZXRob2Q7IAotfQot
Ci12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QpIAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQotICAgIG1faHR0cE1l
dGhvZCA9IGh0dHBNZXRob2Q7Ci0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0g
ZmFsc2U7Ci19Ci0KLWNvbnN0IEhUVFBIZWFkZXJNYXAmIFJlc291cmNlUmVxdWVzdDo6aHR0cEhl
YWRlckZpZWxkcygpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotCi0g
ICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkczsgCi19Ci0KLVN0cmluZyBSZXNvdXJjZVJlcXVl
c3Q6Omh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVs
ZHMuZ2V0KG5hbWUpOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChu
YW1lLCB2YWx1ZSk7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNl
OwotfQotCi1Gb3JtRGF0YSogUmVzb3VyY2VSZXF1ZXN0OjpodHRwQm9keSgpIGNvbnN0IAoteyAK
LSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1faHR0cEJv
ZHkuZ2V0KCk7IAotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUEJvZHkoUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAotICAgIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsgCi0gICAgCi0gICAgbV9wbGF0Zm9y
bVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Ci19IAotCi1ib29sIFJlc291cmNlUmVxdWVzdDo6YWxs
b3dIVFRQQ29va2llcygpIGNvbnN0IAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAK
LSAgICAKLSAgICByZXR1cm4gbV9hbGxvd0hUVFBDb29raWVzOyAKLX0KLQotdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OnNldEFsbG93SFRUUENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKQotewot
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2FsbG93SFRUUENvb2tp
ZXMgPSBhbGxvd0hUVFBDb29raWVzOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0
ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IGlmIChtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT5kb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpOwotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IHRydWU7Ci0jZW5kaWYKLX0K
LQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0Ci17
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChtX3Jlc291cmNl
UmVxdWVzdFVwZGF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0X2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odGhpcyktPmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKLSNlbmRpZgotfQotCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgcGFpcjxIVFRQ
SGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFk
ZChuYW1lLCB2YWx1ZSk7IAotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0
LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0
OjphZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcykK
LXsKLSAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMu
ZW5kKCk7Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
ckZpZWxkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGFkZEhUVFBIZWFkZXJG
aWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGIpCi17Ci0gICAgaWYg
KGEudXJsKCkgIT0gYi51cmwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEu
Y2FjaGVQb2xpY3koKSAhPSBiLmNhY2hlUG9saWN5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChhLnRpbWVvdXRJbnRlcnZhbCgpICE9IGIudGltZW91dEludGVydmFsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICBpZiAoYS5tYWluRG9jdW1lbnRVUkwoKSAhPSBi
Lm1haW5Eb2N1bWVudFVSTCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5o
dHRwTWV0aG9kKCkgIT0gYi5odHRwTWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChhLmFsbG93SFRUUENvb2tpZXMoKSAhPSBiLmFsbG93SFRUUENvb2tpZXMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIu
aHR0cEhlYWRlckZpZWxkcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGb3JtRGF0
YSogZm9ybURhdGFBID0gYS5odHRwQm9keSgpOwotICAgIEZvcm1EYXRhKiBmb3JtRGF0YUIgPSBi
Lmh0dHBCb2R5KCk7Ci0gICAgCi0gICAgaWYgKCFmb3JtRGF0YUEpCi0gICAgICAgIHJldHVybiAh
Zm9ybURhdGFCOwotICAgIGlmICghZm9ybURhdGFCKQotICAgICAgICByZXR1cm4gIWZvcm1EYXRh
QTsKLSAgICAKLSAgICBpZiAoKmZvcm1EYXRhQSAhPSAqZm9ybURhdGFCKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVzb3VyY2VSZXF1
ZXN0Ojppc0NvbmRpdGlvbmFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1faHR0cEhlYWRlckZp
ZWxkcy5jb250YWlucygiSWYtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmll
bGRzLmNvbnRhaW5zKCJJZi1Nb2RpZmllZC1TaW5jZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBI
ZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU5vbmUtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1SYW5nZSIpIHx8Ci0gICAgICAgICAgICBtX2h0
dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLVVubW9kaWZpZWQtU2luY2UiKSk7Ci19Ci0KLX0K
SW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjM1ODEpCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5
NyArMCwwIEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKLSNkZWZp
bmUgUmVzb3VyY2VSZXF1ZXN0X2gKLQotI2luY2x1ZGUgIkZvcm1EYXRhLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgotI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU1VS
TFJlcXVlc3Q7Ci0jZWxzZQotY2xhc3MgTlNVUkxSZXF1ZXN0OwotI2VuZGlmCi0jZWxpZiBVU0Uo
Q0ZORVRXT1JLKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLSAgICBlbnVtIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHsKLSAgICAg
ICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgLy8gbm9ybWFsIGxvYWQKLSAgICAgICAgUmVsb2Fk
SWdub3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAotICAgICAgICBSZXR1cm5DYWNoZURhdGFFbHNl
TG9hZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5nZSAtIGFsbG93IHN0YWxlIGRh
dGEKLSAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8vIHJlc3VsdHMgb2YgYSBwb3N0
IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUKLSAgICB9OwotCi0gICAgc3Ry
dWN0IFJlc291cmNlUmVxdWVzdCB7Ci0KLSAgICAgICAgCi0gICAgICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBTdHJpbmcmIHVybCkgCi0gICAgICAgICAgICA6IG1fdXJsKHVybC5kZXByZWNhdGVk
U3RyaW5nKCkpCi0gICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3koVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRl
cnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAgICAgICAgICAgLCBt
X2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RV
cGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxz
ZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IEtVUkwmIHVybCkgCi0gICAgICAgICAgICA6IG1fdXJsKHVybCkKLSAgICAgICAgICAgICwgbV9j
YWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAgICAgICAgICAgLCBtX3RpbWVv
dXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQotICAgICAgICAgICAgLCBtX2h0dHBN
ZXRob2QoIkdFVCIpCi0gICAgICAgICAgICAsIG1fYWxsb3dIVFRQQ29va2llcyh0cnVlKQotICAg
ICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KSAKLSAgICAgICAgICAgIDogbV91cmwodXJsKQotICAgICAgICAgICAgLCBtX2Nh
Y2hlUG9saWN5KHBvbGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVs
dFRpbWVvdXRJbnRlcnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAg
ICAgICAgICAgLCBtX2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkK
LSAgICAgICAgICAgIDogbV9jYWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAg
ICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQotICAg
ICAgICAgICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCi0gICAgICAgICAgICAsIG1fYWxsb3dIVFRQ
Q29va2llcyh0cnVlKQotICAgICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1
ZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdDsKLQotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsK
LSAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKLQotICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5
KTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBLVVJMJiBtYWluRG9jdW1lbnRVUkwoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRVUkwoY29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJM
KTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCgpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKTsKLSAg
ICAgICAgCi0gICAgICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBj
b25zdDsKLSAgICAgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICB2b2lkIGFkZEhUVFBIZWFkZXJGaWVs
ZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICB2b2lk
IGFkZEhUVFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKTsK
LSAgICAgICAgCi0gICAgICAgIFN0cmluZyBodHRwQ29udGVudFR5cGUoKSBjb25zdCB7IHJldHVy
biBodHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpOyAgfQotICAgICAgICB2b2lkIHNldEhU
VFBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGh0dHBDb250ZW50VHlwZSkgeyBzZXRIVFRQSGVh
ZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIsIGh0dHBDb250ZW50VHlwZSk7IH0KLSAgICAgICAgCi0g
ICAgICAgIFN0cmluZyBodHRwUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmll
bGQoIlJlZmVyZXIiKTsgfQotICAgICAgICB2b2lkIHNldEhUVFBSZWZlcnJlcihjb25zdCBTdHJp
bmcmIGh0dHBSZWZlcnJlcikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlJlZmVyZXIiLCBodHRwUmVm
ZXJyZXIpOyB9Ci0gICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKSB7IG1faHR0cEhlYWRl
ckZpZWxkcy5yZW1vdmUoIlJlZmVyZXIiKTsgfQotICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0
dHBVc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoIlVzZXItQWdlbnQi
KTsgfQotICAgICAgICB2b2lkIHNldEhUVFBVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBodHRwVXNl
ckFnZW50KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIsIGh0dHBVc2VyQWdlbnQp
OyB9Ci0KLSAgICAgICAgU3RyaW5nIGh0dHBBY2NlcHQoKSBjb25zdCB7IHJldHVybiBodHRwSGVh
ZGVyRmllbGQoIkFjY2VwdCIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRUUEFjY2VwdChjb25zdCBT
dHJpbmcmIGh0dHBBY2NlcHQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJBY2NlcHQiLCBodHRwQWNj
ZXB0KTsgfQotCi0gICAgICAgIEZvcm1EYXRhKiBodHRwQm9keSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KTsKLSAgICAgICAg
Ci0gICAgICAgIGJvb2wgYWxsb3dIVFRQQ29va2llcygpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dEFsbG93SFRUUENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKTsKLQotICAgICAgICBib29s
IGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKLSAgICAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0KiBuc1JlcXVlc3QpCi0gICAgICAgICAg
ICA6IG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9wbGF0
Zm9ybVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fbnNSZXF1ZXN0KG5zUmVx
dWVzdCkgeyB9Ci0gICAgICAgIAotICAgICAgICBOU1VSTFJlcXVlc3QqIG5zVVJMUmVxdWVzdCgp
IGNvbnN0OwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KENG
VVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCi0gICAgICAgICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKHRy
dWUpCi0gICAgICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkgeyB9Ci0gICAgICAgIAot
ICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KCkgY29uc3Q7ICAgICAgIAotI2Vu
ZGlmCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSBj
b25zdDsgCi0gICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7IAotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgICAgICB2b2lkIGRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCk7Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlt
ZW91dEludGVydmFsID0gNjA7Ci0KLSAgICAgICAgS1VSTCBtX3VybDsKLQotICAgICAgICBSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtX2NhY2hlUG9saWN5OwotICAgICAgICBkb3VibGUgbV90
aW1lb3V0SW50ZXJ2YWw7Ci0gICAgICAgIEtVUkwgbV9tYWluRG9jdW1lbnRVUkw7Ci0gICAgICAg
IFN0cmluZyBtX2h0dHBNZXRob2Q7Ci0gICAgICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVy
RmllbGRzOwotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IG1faHR0cEJvZHk7Ci0gICAgICAgIGJv
b2wgbV9hbGxvd0hUVFBDb29raWVzOwotICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJl
cXVlc3RVcGRhdGVkOwotICAgICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4g
bV9uc1JlcXVlc3Q7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsgICAgICAKLSNlbmRpZgotICAgIH07Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIGIpOwotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBh
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaApJbmRleDog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNjQgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJlc291cmNl
UmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVz
dCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmwuaXNFbXB0eSgpOyAKK30KKworYm9vbCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjppc051bGwoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmwudXJsKCkuaXNOdWxsKCk7Cit9CisKK2Nv
bnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdEJhc2U6OnVybCgpIGNvbnN0IAoreworICAgIHVwZGF0
ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sgCisgICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorCisgICAgbV91cmwgPSB1cmw7IAorICAgIAorICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitjb25zdCBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeSBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSgpIGNvbnN0Cit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX2NhY2hl
UG9saWN5OyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBvbGljeShS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSkKK3sKKyAgICB1cGRhdGVSZXNv
dXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9jYWNoZVBvbGljeSA9IGNhY2hlUG9saWN5Owor
ICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitkb3VibGUg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgY29uc3QKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdGltZW91dEludGVydmFs
OyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRUaW1lb3V0SW50ZXJ2YWwoZG91
YmxlIHRpbWVvdXRJbnRlcnZhbCkgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAor
ICAgIAorICAgIG1fdGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsOyAKKyAgICAKKyAg
ICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworY29uc3QgS1VSTCYgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6bWFpbkRvY3VtZW50VVJMKCkgY29uc3QKK3sKKyAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fbWFpbkRvY3VtZW50VVJMOyAK
K30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9jdW1lbnRVUkwoY29uc3Qg
S1VSTCYgbWFpbkRvY3VtZW50VVJMKQoreyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsg
CisgICAgCisgICAgbV9tYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnRVUkw7IAorICAgIAor
ICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitjb25zdCBTdHJpbmcm
IFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBNZXRob2QoKSBjb25zdAoreworICAgIHVwZGF0ZVJl
c291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9odHRwTWV0aG9kOyAKK30KKwor
dm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgaHR0
cE1ldGhvZCkgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorCisgICAgbV9odHRw
TWV0aG9kID0gaHR0cE1ldGhvZDsKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQg
PSBmYWxzZTsKK30KKworY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAorCisgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkczsgCit9CisKK1N0cmluZyBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAor
eworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9odHRw
SGVhZGVyRmllbGRzLmdldChuYW1lKTsKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpz
ZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsgCisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkID0gZmFsc2U7Cit9CisKK0Zvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRw
Qm9keSgpIGNvbnN0IAoreyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisg
ICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0KCk7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KQoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2h0dHBCb2R5ID0gaHR0cEJvZHk7
IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfSAKKworYm9v
bCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29raWVzKCkgY29uc3QgCit7CisgICAg
dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX2FsbG93SFRUUENv
b2tpZXM7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRUUENvb2tp
ZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKKyAgICAKKyAgICBtX2FsbG93SFRUUENvb2tpZXMgPSBhbGxvd0hUVFBDb29raWVzOyAKKyAg
ICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSAKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKKyAg
ICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0dHBIZWFk
ZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCisgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQorICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKK30KKwordm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlckZpZWxkcykKK3sKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBoZWFkZXJGaWVsZHMuZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
IGFkZEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOworfQorCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0QmFzZSYgYikKK3sKKyAgICBpZiAoYS51cmwoKSAhPSBiLnVybCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoYS5jYWNoZVBvbGljeSgpICE9IGIuY2FjaGVQb2xpY3koKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEudGltZW91dEludGVydmFsKCkgIT0g
Yi50aW1lb3V0SW50ZXJ2YWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgIGlmIChh
Lm1haW5Eb2N1bWVudFVSTCgpICE9IGIubWFpbkRvY3VtZW50VVJMKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChhLmh0dHBNZXRob2QoKSAhPSBiLmh0dHBNZXRob2QoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuYWxsb3dIVFRQQ29va2llcygpICE9IGIu
YWxsb3dIVFRQQ29va2llcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5o
dHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEZvcm1EYXRhKiBmb3JtRGF0YUEgPSBhLmh0dHBCb2R5KCk7CisgICAg
Rm9ybURhdGEqIGZvcm1EYXRhQiA9IGIuaHR0cEJvZHkoKTsKKyAgICAKKyAgICBpZiAoIWZvcm1E
YXRhQSkKKyAgICAgICAgcmV0dXJuICFmb3JtRGF0YUI7CisgICAgaWYgKCFmb3JtRGF0YUIpCisg
ICAgICAgIHJldHVybiAhZm9ybURhdGFBOworICAgIAorICAgIGlmICgqZm9ybURhdGFBICE9ICpm
b3JtRGF0YUIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gKG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtTWF0Y2giKSB8fAor
ICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1Nb2RpZmllZC1TaW5j
ZSIpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU5vbmUt
TWF0Y2giKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1S
YW5nZSIpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLVVu
bW9kaWZpZWQtU2luY2UiKSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVl
c3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOworICAg
IG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IHRydWU7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBpZiAobV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdF9jYXN0PFJl
c291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7CisgICAgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKK30KKworY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphc1Jlc291cmNlUmVxdWVzdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlcXVlc3Qq
Pih0aGlzKTsKK30KKworfQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzkgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFz
aWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBS
ZXNvdXJjZVJlcXVlc3RCYXNlX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0QmFzZV9oCisKKyNp
bmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJIVFRQSGVh
ZGVyTWFwLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGVudW0gUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3kgeworICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9saWN5LCAvLyBub3Jt
YWwgbG9hZAorICAgICAgICBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgLy8gcmVsb2FkCisgICAg
ICAgIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCAvLyBiYWNrL2ZvcndhcmQgb3IgZW5jb2Rpbmcg
Y2hhbmdlIC0gYWxsb3cgc3RhbGUgZGF0YQorICAgICAgICBSZXR1cm5DYWNoZURhdGFEb250TG9h
ZCwgLy8gcmVzdWx0cyBvZiBhIHBvc3QgLSBhbGxvdyBzdGFsZSBkYXRhIGFuZCBvbmx5IHVzZSBj
YWNoZQorICAgIH07CisKKyAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0OworCisgICAgLy8gRG8g
bm90IHVzZSB0aGlzIHR5cGUgZGlyZWN0bHkuICBVc2UgUmVzb3VyY2VSZXF1ZXN0IGluc3RlYWQu
CisgICAgc3RydWN0IFJlc291cmNlUmVxdWVzdEJhc2UgeworCisgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1cmwp
OworCisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3kgY2FjaGVQb2xpY3kpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIHRpbWVvdXRJ
bnRlcnZhbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUg
dGltZW91dEludGVydmFsKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEtVUkwmIG1haW5Eb2N1
bWVudFVSTCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE1haW5Eb2N1bWVudFVSTChjb25zdCBL
VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBo
dHRwTWV0aG9kKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJp
bmcmIGh0dHBNZXRob2QpOworICAgICAgICAKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYg
aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OworICAgICAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxk
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIHZv
aWQgYWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgICAgIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJGaWVsZHMpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGh0dHBDb250ZW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIik7ICB9
CisgICAgICAgIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaHR0cENvbnRl
bnRUeXBlKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIiwgaHR0cENvbnRlbnRU
eXBlKTsgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0IHsg
cmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiUmVmZXJlciIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRU
UFJlZmVycmVyKGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhUVFBIZWFkZXJGaWVs
ZCgiUmVmZXJlciIsIGh0dHBSZWZlcnJlcik7IH0KKyAgICAgICAgdm9pZCBjbGVhckhUVFBSZWZl
cnJlcigpIHsgbV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZSgiUmVmZXJlciIpOyB9CisgICAgICAg
IAorICAgICAgICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFk
ZXJGaWVsZCgiVXNlci1BZ2VudCIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRUUFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJVc2VyLUFn
ZW50IiwgaHR0cFVzZXJBZ2VudCk7IH0KKworICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgpIGNv
bnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KKyAgICAgICAgdm9pZCBz
ZXRIVFRQQWNjZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVyRmll
bGQoIkFjY2VwdCIsIGh0dHBBY2NlcHQpOyB9CisKKyAgICAgICAgRm9ybURhdGEqIGh0dHBCb2R5
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4g
aHR0cEJvZHkpOworICAgICAgICAKKyAgICAgICAgYm9vbCBhbGxvd0hUVFBDb29raWVzKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0QWxsb3dIVFRQQ29va2llcyhib29sIGFsbG93SFRUUENvb2tp
ZXMpOworCisgICAgICAgIGJvb2wgaXNDb25kaXRpb25hbCgpIGNvbnN0OworICAgICAgICAKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMgaW5p
dGlhbGl6ZWQgZnJvbSBhIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0Cisg
ICAgICAgIFJlc291cmNlUmVxdWVzdEJhc2UoKQorICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVx
dWVzdFVwZGF0ZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRl
ZCh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3RC
YXNlKGNvbnN0IEtVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQor
ICAgICAgICAgICAgOiBtX3VybCh1cmwpCisgICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3kocG9s
aWN5KQorICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVy
dmFsKQorICAgICAgICAgICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCisgICAgICAgICAgICAsIG1f
YWxsb3dIVFRQQ29va2llcyh0cnVlKQorICAgICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVw
ZGF0ZWQodHJ1ZSkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNl
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpIGNvbnN0OyAKKyAgICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25z
dDsgCisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGltZW91dEludGVydmFsID0g
NjA7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBtX2NhY2hlUG9saWN5OworICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2YWw7
CisgICAgICAgIEtVUkwgbV9tYWluRG9jdW1lbnRVUkw7CisgICAgICAgIFN0cmluZyBtX2h0dHBN
ZXRob2Q7CisgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOworICAgICAg
ICBSZWZQdHI8Rm9ybURhdGE+IG1faHR0cEJvZHk7CisgICAgICAgIGJvb2wgbV9hbGxvd0hUVFBD
b29raWVzOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkOwor
ICAgICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhc1Jlc291cmNlUmVxdWVzdCgp
IGNvbnN0OworICAgIH07CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYik7CisgICAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShSZXNvdXJjZVJlcXVlc3RCYXNlJiBhLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3RCYXNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0QmFzZV9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvLyAt
Ki0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1
ZXN0X2gKKworI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdEJhc2UuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZkZWYgX19PQkpDX18KK0BjbGFz
cyBOU1VSTFJlcXVlc3Q7CisjZWxzZQorY2xhc3MgTlNVUkxSZXF1ZXN0OworI2VuZGlmCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3RydWN0IFJlc291cmNlUmVxdWVzdCA6
IFJlc291cmNlUmVxdWVzdEJhc2UgeworCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBT
dHJpbmcmIHVybCkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCh1cmwu
ZGVwcmVjYXRlZFN0cmluZygpKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgCisg
ICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKKyAgICAgICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKKyAgICAgICAgeworICAgICAgICAgICAg
c2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0KCkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJM
KCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCogbnNSZXF1ZXN0KQorICAg
ICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKKyAgICAgICAgICAgICwgbV9uc1JlcXVl
c3QobnNSZXF1ZXN0KSB7IH0KKyAgICAgICAgCisgICAgICAgIE5TVVJMUmVxdWVzdCogbnNVUkxS
ZXF1ZXN0KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0QmFzZTsKKworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCk7CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgCisg
ICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG1fbnNSZXF1ZXN0OworICAgIH07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdF9oCg==
</data>
<flag name="review"
          id="6234"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15187</attachid>
            <date>2007-06-22 12:56:08 -0700</date>
            <delta_ts>2007-06-26 01:31:41 -0700</delta_ts>
            <desc>partial patch v2.1 (mac only)</desc>
            <filename>rr-2.1.diff</filename>
            <type>text/plain</type>
            <size>46692</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjQ5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMDctMDYt
MTkgIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIGJ1
bGsgb2YgUmVzb3VyY2VSZXF1ZXN0IGludG8gYSBiYXNlIGNsYXNzIG5hbWVkCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2Ugd2l0aCBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBwdXNoZWQg
aW50bworICAgICAgICBSZXNvdXJjZVJlcXVlc3QuICBUaGlzIGFsbG93cyBwb3J0cyB0byBlYXNp
bHkgYWRkIG5ldyBtZW1iZXJzIHRvIGEKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpdGhvdXQg
aGF2aW5nIHRvICNpZmRlZiB0aGUgY29kZSB0aGF0IGlzIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHA6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGltZW91dEludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVudFVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9jdW1lbnRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cE1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJGaWVsZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEhlYWRlckZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRUUENvb2tpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjpodHRwQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0SFRUUENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6Omh0dHBSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Y2xlYXJIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6aHR0cFVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3RCYXNlOjpzZXRIVFRQVXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6Omh0dHBBY2NlcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEFjY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
IT0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KToKKwogMjAwNy0wNi0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIERlY2tlci4KSW5kZXg6IFdlYkNvcmUuZXhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUuZXhwCShyZXZpc2lvbiAyMzU4MSkKKysrIFdlYkNvcmUuZXhw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTgsOCArNTU4LDggQEAgX19aTks3V2ViQ29yZTE0UmVzb3Vy
Y2VIYW5kbGUxMGNvbm5lY3RpbwogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxMWZyYW1l
TG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxNVByb2dyZXNzVHJhY2tlcjE3ZXN0aW1hdGVkUHJvZ3Jl
c3NFdgogX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJuc1VSTFJlcXVlc3RFdgotX19a
Tks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0M3VybEV2Ci1fX1pOSzdXZWJDb3JlMTVSZXNvdXJj
ZVJlcXVlc3Q3aXNFbXB0eUV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlM3Vy
bEV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlN2lzRW1wdHlFdgogX19aTks3
V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzExZ2V0TlNTdHJpbmdFdgogX19aTks3V2ViQ29yZTE2
RGVwcmVjYXRlZFN0cmluZzJhdEVqCiBfX1pOSzdXZWJDb3JlMTZEZXByZWNhdGVkU3RyaW5nM21p
ZEVqagpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM1ODEpCisr
KyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw3ICsxNzMsNiBAQAogCQkxQUNFNTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRTUz
RTUwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCAqLzsgfTsKIAkJMUFDRTUzRjYw
QThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFNTNGNDBBOEQxOTQ3MDAyMjk0N0QgLyog
SlNYTUxTZXJpYWxpemVyLmNwcCAqLzsgfTsKIAkJMUFDRTUzRjcwQThEMTk0NzAwMjI5NDdEIC8q
IEpTWE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFDRTUzRjUwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5oICov
OyB9OwotCQkxQUQ4Q0ZDRTBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRDhDRkNEMEIx
Q0VEODkwMDY5NkRFMCAvKiBSZXNvdXJjZVJlcXVlc3QuY3BwICovOyB9OwogCQkxQUUyQUExRTBB
MUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFBMEEwQTFDREFCMzAwQjQyQjI1IC8q
IEpTSFRNTEFyZWFFbGVtZW50LmNwcCAqLzsgfTsKIAkJMUFFMkFBMUYwQTFDREFCNDAwQjQyQjI1
IC8qIEpTSFRNTEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUUyQUEwQjBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1l
bnQuaCAqLzsgfTsKIAkJMUFFMkFBMjAwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEJhc2VGb250
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUUyQUEwQzBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQmFzZUZvbnRFbGVtZW50LmNwcCAq
LzsgfTsKQEAgLTM0OSw3ICszNDgsNiBAQAogCQk2NTFCNEQ4NTA5QUM4MzM3MDAyOUYxRUYgLyog
RGVwcmVjYXRlZFN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUxQjREODMwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJp
bmdMaXN0LmNwcCAqLzsgfTsKIAkJNjUxQjREODYwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0
ZWRTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTFCNEQ4NDA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCAq
LzsgfTsKIAkJNjUxQjREOEYwOUFDODU5RjAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUx
QjREOEUwOUFDODU5RjAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0TWFjLm1tICovOyB9
OwotCQk2NTIyQkNERjA5QzlEQUE4MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTIyQkNERTA5QzlEQUE4
MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU0RUM2MTEwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNv
cmVGcmFtZUJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU0RUM2MEYwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFtZUJyaWRnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NEVDNjEy
MDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTRFQzYxMDA5Nzc3OEY1MDBEQUI1MkMg
LyogV2ViQ29yZUZyYW1lQnJpZGdlLm1tICovOyB9OwogCQk2NTUwQjY5RDA5OURGMDI3MDA5MEQ3
ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NTBCNjkzMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3Bw
ICovOyB9OwpAQCAtMTU1Myw2ICsxNTUxLDkgQEAKIAkJOTNDRDRGRTMwOTk1RjlFQTAwN0VDQzk3
IC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNDRDRGREMwOTk1RjlFQTAwN0VDQzk3IC8qIFN0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk5M0NENEZFNDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDRDRGREQwOTk1RjlFQTAwN0VD
Qzk3IC8qIFN0cmluZ0ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0NENEZFQzA5OTVGRDJBMDA3RUNDOTcgLyogUGxhdGZvcm1TdHJpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0Q0RkVC
MDk5NUZEMkEwMDdFQ0M5NyAvKiBQbGF0Zm9ybVN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzQ0RERTI4MEMyMzlBNDgwMENENTdBRSAv
KiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q4MkE0
OTBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q4MkE0NzBDMjhDRjFFMDBGRDcw
M0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgKi87IH07CisJCTkzRDgyQTRBMEMyOENGMUUw
MEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q4MkE0ODBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRTIyN0UwMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyMjdEQjBB
RjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovOyB9OwogCQk5M0UyMjdFMTBB
RjU4OUFEMDBENDgzMjQgLyogTWFpblJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyN0RDMEFGNTg5QUQwMEQ0ODMyNCAv
KiBNYWluUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwogCQk5M0UyMjdFMjBBRjU4OUFEMDBENDgz
MjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCAqLzsgfTsKQEAgLTMzODUsNyArMzM4Niw2IEBA
CiAJCTFBQ0U1M0U2MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gWE1MU2VyaWFsaXplci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MU2VyaWFsaXplci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQ0U1M0Y1MEE4RDE5NDcwMDIyOTQ3
RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTWE1MU2VyaWFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUQ4Q0ZD
RDBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBRTJBOUYwMEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1MQXJlYUVsZW1l
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXJlYUVsZW1lbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUUyQTlGMTBBMUNEQTU3MDBCNDJCMjUgLyogSFRN
TEJhc2VGb250RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxCYXNlRm9u
dEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUUyQTlGMjBBMUNE
QTU3MDBCNDJCMjUgLyogSFRNTEJvZHlFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTEJvZHlFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1
NzMsNyArMzU3Myw2IEBACiAJCTY1MUI0RDgzMDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVk
U3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVw
cmVjYXRlZFN0cmluZ0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTFC
NEQ4NDA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MUI0RDhFMDlBQzg1OUYwMDI5RjFFRiAvKiBEZXByZWNh
dGVkU3RyaW5nTGlzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEZXByZWNhdGVkU3RyaW5nTGlzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNjUyMkJDREUwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDhFMjQ4MDlFMUUwNEQwMEFGODAyMCAvKiBEb2N1bWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjU0RUM2MEYwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFt
ZUJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZyYW1l
QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NEVDNjEwMDk3Nzc4RjUw
MERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUZyYW1lQnJpZGdlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDc1Nyw2ICs0NzU2LDkgQEAKIAkJOTNDRDRGREMwOTk1RjlFQTAwN0VD
Qzk3IC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0Q0RkRE
MDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTND
RDRGRUIwOTk1RkQyQTAwN0VDQzk3IC8qIFBsYXRmb3JtU3RyaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q4MkE0NzBDMjhDRjFFMDBGRDcwM0QgLyogUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRDgyQTQ4MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1
bWVudExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IERv
Y3VtZW50TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REMw
QUY1ODlBRDAwRDQ4MzI0IC8qIE1haW5SZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
ZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IE1haW5SZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MTE4LDggKzcxMjAsOCBAQAogCQkJCTY1NkI4NERDMEFFQTFEMzEwMEEwOTVC
NCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNjU2Qjg0REUwQUVBMUQzMTAwQTA5NUI0
IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNjU2Qjg0REYwQUVBMUQzMTAwQTA5
NUI0IC8qIFJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAqLywKLQkJCQk2NTIyQkNERTA5QzlEQUE4
MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8sCi0JCQkJMUFEOENGQ0QwQjFDRUQ4OTAw
Njk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgKi8sCisJCQkJOTNEODJBNDcwQzI4Q0YxRTAw
RkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwICovLAorCQkJCTkzRDgyQTQ4MEMyOENG
MUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8sCiAJCQkJNjU4ODIxNjUwQUY0
Q0RGNzAwRjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLywKIAkJCQkxQTgxODBBNDBCMUQ0
RTQzMDBDRTQ2QzQgLyogUmVzb3VyY2VSZXNwb25zZS5jcHAgKi8sCiAJCQkpOwpAQCAtNzEyOSw2
ICs3MTMxLDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNDRERFMjcwQzIzOUE0ODAw
Q0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oICovLAogCQkJCTY1MTg4ODhBMEFGRjNDMTQwMDE2
NDcyMCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTY1REFEOUZFMEFGRDg2QkYwMENF
NTNFRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5oICovLAogCQkJCTY1REFEOUZGMEFGRDg2QkYwMENF
NTNFRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLywKQEAgLTEwNDI3LDcgKzEwNDMwLDYgQEAK
IAkJCQk5M0VFQzIwMzA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRUVDMjA0MDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlu
a0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1MjJCQ0RGMDlDOURBQTgwMEM5QkE3QSAv
KiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzg0MUY4MDlDRTg1NUMw
MERGRjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBp
biBIZWFkZXJzICovLApAQCAtMTE1ODgsMTEgKzExNTkwLDEzIEBACiAJCQkJQkM2REM3QTEwQzFB
NEJGQTAwNEUyMDE3IC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRkUyRjEyMEMxQjU4MzgwMDIwMjM1RiAvKiBKU1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDM2OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0NEREUyODBDMjM5QTQ4MDBDRDU3QUUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFySW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxQzMwQzI3NERERDAwOUY0RUM5IC8qIEpTU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0VDMDFENzBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4u
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDgyQTRBMEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNjQzLDcgKzExNjQ3LDYgQEAKIAkJ
CW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlw
cm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87
CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdl
dHMgPSAoCiAJCQkJOTNGMTk4QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJ
REQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTEyODg1
LDcgKzEyODg4LDYgQEAKIAkJCQlCMkQ4N0M4OTBCMTI0RTk1MDBCMERFMUUgLyogU1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuQ2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEODdDOEEwQjEyNEU5NTAw
QjBERTFFIC8qIFNWR1BhaW50U2VydmVyU29saWRDZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzM1MkMxOTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMUFEOENGQ0UwQjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNjAyN0NCMzBCMUNDMDNEMDA4ODRCMkQgLyogQ29udGV4dE1l
bnVJdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4MTgwQTUwQjFENEU0MzAwQ0U0NkM0
IC8qIFJlc291cmNlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzMTBCNzYwQjFG
NDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDIzLDYg
KzEzMDI1LDcgQEAKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUMwMUMyMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZv
cm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5M0Q4MkE0OTBDMjhDRjFFMDBGRDcw
M0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNTgxKQorKysgcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2MyArMCww
IEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6Omlz
RW1wdHkoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAg
ICByZXR1cm4gbV91cmwuaXNFbXB0eSgpOyAKLX0KLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6Omlz
TnVsbCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAg
IHJldHVybiBtX3VybC51cmwoKS5pc051bGwoKTsKLX0KLQotY29uc3QgS1VSTCYgUmVzb3VyY2VS
ZXF1ZXN0Ojp1cmwoKSBjb25zdCAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0g
ICAgCi0gICAgcmV0dXJuIG1fdXJsOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0VVJM
KGNvbnN0IEtVUkwmIHVybCkKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotCi0g
ICAgbV91cmwgPSB1cmw7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZh
bHNlOwotfQotCi1jb25zdCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBSZXNvdXJjZVJlcXVl
c3Q6OmNhY2hlUG9saWN5KCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsg
Ci0gICAgCi0gICAgcmV0dXJuIG1fY2FjaGVQb2xpY3k7IAotfQotCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6c2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xp
Y3kpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1fY2FjaGVQ
b2xpY3kgPSBjYWNoZVBvbGljeTsKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQg
PSBmYWxzZTsKLX0KLQotZG91YmxlIFJlc291cmNlUmVxdWVzdDo6dGltZW91dEludGVydmFsKCkg
Y29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJu
IG1fdGltZW91dEludGVydmFsOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFRpbWVv
dXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKSAKLXsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV90aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2
YWw7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1j
b25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCgpIGNvbnN0Ci17Ci0g
ICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX21haW5Eb2N1
bWVudFVSTDsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRNYWluRG9jdW1lbnRVUkwo
Y29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKQoteyAKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCi0gICAgCi0gICAgbV9tYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnRVUkw7IAot
ICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1jb25zdCBT
dHJpbmcmIFJlc291cmNlUmVxdWVzdDo6aHR0cE1ldGhvZCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBNZXRob2Q7IAotfQot
Ci12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QpIAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQotICAgIG1faHR0cE1l
dGhvZCA9IGh0dHBNZXRob2Q7Ci0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0g
ZmFsc2U7Ci19Ci0KLWNvbnN0IEhUVFBIZWFkZXJNYXAmIFJlc291cmNlUmVxdWVzdDo6aHR0cEhl
YWRlckZpZWxkcygpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotCi0g
ICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkczsgCi19Ci0KLVN0cmluZyBSZXNvdXJjZVJlcXVl
c3Q6Omh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVs
ZHMuZ2V0KG5hbWUpOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChu
YW1lLCB2YWx1ZSk7IAotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNl
OwotfQotCi1Gb3JtRGF0YSogUmVzb3VyY2VSZXF1ZXN0OjpodHRwQm9keSgpIGNvbnN0IAoteyAK
LSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1faHR0cEJv
ZHkuZ2V0KCk7IAotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0SFRUUEJvZHkoUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAotICAgIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsgCi0gICAgCi0gICAgbV9wbGF0Zm9y
bVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Ci19IAotCi1ib29sIFJlc291cmNlUmVxdWVzdDo6YWxs
b3dIVFRQQ29va2llcygpIGNvbnN0IAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAK
LSAgICAKLSAgICByZXR1cm4gbV9hbGxvd0hUVFBDb29raWVzOyAKLX0KLQotdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OnNldEFsbG93SFRUUENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKQotewot
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2FsbG93SFRUUENvb2tp
ZXMgPSBhbGxvd0hUVFBDb29raWVzOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0
ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IGlmIChtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT5kb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpOwotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IHRydWU7Ci0jZW5kaWYKLX0K
LQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0Ci17
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChtX3Jlc291cmNl
UmVxdWVzdFVwZGF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0X2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odGhpcyktPmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKLSNlbmRpZgotfQotCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgcGFpcjxIVFRQ
SGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFk
ZChuYW1lLCB2YWx1ZSk7IAotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0
LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0
OjphZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcykK
LXsKLSAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMu
ZW5kKCk7Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
ckZpZWxkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGFkZEhUVFBIZWFkZXJG
aWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGIpCi17Ci0gICAgaWYg
KGEudXJsKCkgIT0gYi51cmwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEu
Y2FjaGVQb2xpY3koKSAhPSBiLmNhY2hlUG9saWN5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChhLnRpbWVvdXRJbnRlcnZhbCgpICE9IGIudGltZW91dEludGVydmFsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICBpZiAoYS5tYWluRG9jdW1lbnRVUkwoKSAhPSBi
Lm1haW5Eb2N1bWVudFVSTCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5o
dHRwTWV0aG9kKCkgIT0gYi5odHRwTWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChhLmFsbG93SFRUUENvb2tpZXMoKSAhPSBiLmFsbG93SFRUUENvb2tpZXMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIu
aHR0cEhlYWRlckZpZWxkcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGb3JtRGF0
YSogZm9ybURhdGFBID0gYS5odHRwQm9keSgpOwotICAgIEZvcm1EYXRhKiBmb3JtRGF0YUIgPSBi
Lmh0dHBCb2R5KCk7Ci0gICAgCi0gICAgaWYgKCFmb3JtRGF0YUEpCi0gICAgICAgIHJldHVybiAh
Zm9ybURhdGFCOwotICAgIGlmICghZm9ybURhdGFCKQotICAgICAgICByZXR1cm4gIWZvcm1EYXRh
QTsKLSAgICAKLSAgICBpZiAoKmZvcm1EYXRhQSAhPSAqZm9ybURhdGFCKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVzb3VyY2VSZXF1
ZXN0Ojppc0NvbmRpdGlvbmFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1faHR0cEhlYWRlckZp
ZWxkcy5jb250YWlucygiSWYtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmll
bGRzLmNvbnRhaW5zKCJJZi1Nb2RpZmllZC1TaW5jZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBI
ZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU5vbmUtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1SYW5nZSIpIHx8Ci0gICAgICAgICAgICBtX2h0
dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLVVubW9kaWZpZWQtU2luY2UiKSk7Ci19Ci0KLX0K
SW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjM1ODEpCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5
NyArMCwwIEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKLSNkZWZp
bmUgUmVzb3VyY2VSZXF1ZXN0X2gKLQotI2luY2x1ZGUgIkZvcm1EYXRhLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgotI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU1VS
TFJlcXVlc3Q7Ci0jZWxzZQotY2xhc3MgTlNVUkxSZXF1ZXN0OwotI2VuZGlmCi0jZWxpZiBVU0Uo
Q0ZORVRXT1JLKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLSAgICBlbnVtIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHsKLSAgICAg
ICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgLy8gbm9ybWFsIGxvYWQKLSAgICAgICAgUmVsb2Fk
SWdub3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAotICAgICAgICBSZXR1cm5DYWNoZURhdGFFbHNl
TG9hZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5nZSAtIGFsbG93IHN0YWxlIGRh
dGEKLSAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8vIHJlc3VsdHMgb2YgYSBwb3N0
IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUKLSAgICB9OwotCi0gICAgc3Ry
dWN0IFJlc291cmNlUmVxdWVzdCB7Ci0KLSAgICAgICAgCi0gICAgICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBTdHJpbmcmIHVybCkgCi0gICAgICAgICAgICA6IG1fdXJsKHVybC5kZXByZWNhdGVk
U3RyaW5nKCkpCi0gICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3koVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRl
cnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAgICAgICAgICAgLCBt
X2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RV
cGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxz
ZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IEtVUkwmIHVybCkgCi0gICAgICAgICAgICA6IG1fdXJsKHVybCkKLSAgICAgICAgICAgICwgbV9j
YWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAgICAgICAgICAgLCBtX3RpbWVv
dXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQotICAgICAgICAgICAgLCBtX2h0dHBN
ZXRob2QoIkdFVCIpCi0gICAgICAgICAgICAsIG1fYWxsb3dIVFRQQ29va2llcyh0cnVlKQotICAg
ICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KSAKLSAgICAgICAgICAgIDogbV91cmwodXJsKQotICAgICAgICAgICAgLCBtX2Nh
Y2hlUG9saWN5KHBvbGljeSkKLSAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVs
dFRpbWVvdXRJbnRlcnZhbCkKLSAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAg
ICAgICAgICAgLCBtX2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkK
LSAgICAgICAgICAgIDogbV9jYWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAg
ICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQotICAg
ICAgICAgICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCi0gICAgICAgICAgICAsIG1fYWxsb3dIVFRQ
Q29va2llcyh0cnVlKQotICAgICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1
ZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdDsKLQotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsK
LSAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKLQotICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5
KTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBLVVJMJiBtYWluRG9jdW1lbnRVUkwoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRVUkwoY29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJM
KTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCgpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKTsKLSAg
ICAgICAgCi0gICAgICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBj
b25zdDsKLSAgICAgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICB2b2lkIGFkZEhUVFBIZWFkZXJGaWVs
ZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICB2b2lk
IGFkZEhUVFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKTsK
LSAgICAgICAgCi0gICAgICAgIFN0cmluZyBodHRwQ29udGVudFR5cGUoKSBjb25zdCB7IHJldHVy
biBodHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpOyAgfQotICAgICAgICB2b2lkIHNldEhU
VFBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGh0dHBDb250ZW50VHlwZSkgeyBzZXRIVFRQSGVh
ZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIsIGh0dHBDb250ZW50VHlwZSk7IH0KLSAgICAgICAgCi0g
ICAgICAgIFN0cmluZyBodHRwUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmll
bGQoIlJlZmVyZXIiKTsgfQotICAgICAgICB2b2lkIHNldEhUVFBSZWZlcnJlcihjb25zdCBTdHJp
bmcmIGh0dHBSZWZlcnJlcikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlJlZmVyZXIiLCBodHRwUmVm
ZXJyZXIpOyB9Ci0gICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKSB7IG1faHR0cEhlYWRl
ckZpZWxkcy5yZW1vdmUoIlJlZmVyZXIiKTsgfQotICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0
dHBVc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoIlVzZXItQWdlbnQi
KTsgfQotICAgICAgICB2b2lkIHNldEhUVFBVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBodHRwVXNl
ckFnZW50KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIsIGh0dHBVc2VyQWdlbnQp
OyB9Ci0KLSAgICAgICAgU3RyaW5nIGh0dHBBY2NlcHQoKSBjb25zdCB7IHJldHVybiBodHRwSGVh
ZGVyRmllbGQoIkFjY2VwdCIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRUUEFjY2VwdChjb25zdCBT
dHJpbmcmIGh0dHBBY2NlcHQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJBY2NlcHQiLCBodHRwQWNj
ZXB0KTsgfQotCi0gICAgICAgIEZvcm1EYXRhKiBodHRwQm9keSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KTsKLSAgICAgICAg
Ci0gICAgICAgIGJvb2wgYWxsb3dIVFRQQ29va2llcygpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dEFsbG93SFRUUENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKTsKLQotICAgICAgICBib29s
IGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKLSAgICAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0KiBuc1JlcXVlc3QpCi0gICAgICAgICAg
ICA6IG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9wbGF0
Zm9ybVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAsIG1fbnNSZXF1ZXN0KG5zUmVx
dWVzdCkgeyB9Ci0gICAgICAgIAotICAgICAgICBOU1VSTFJlcXVlc3QqIG5zVVJMUmVxdWVzdCgp
IGNvbnN0OwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KENG
VVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCi0gICAgICAgICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKHRy
dWUpCi0gICAgICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkgeyB9Ci0gICAgICAgIAot
ICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KCkgY29uc3Q7ICAgICAgIAotI2Vu
ZGlmCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSBj
b25zdDsgCi0gICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7IAotCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgICAgICB2b2lkIGRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCk7Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsKLSNlbmRpZgotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlt
ZW91dEludGVydmFsID0gNjA7Ci0KLSAgICAgICAgS1VSTCBtX3VybDsKLQotICAgICAgICBSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtX2NhY2hlUG9saWN5OwotICAgICAgICBkb3VibGUgbV90
aW1lb3V0SW50ZXJ2YWw7Ci0gICAgICAgIEtVUkwgbV9tYWluRG9jdW1lbnRVUkw7Ci0gICAgICAg
IFN0cmluZyBtX2h0dHBNZXRob2Q7Ci0gICAgICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVy
RmllbGRzOwotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IG1faHR0cEJvZHk7Ci0gICAgICAgIGJv
b2wgbV9hbGxvd0hUVFBDb29raWVzOwotICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJl
cXVlc3RVcGRhdGVkOwotICAgICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4g
bV9uc1JlcXVlc3Q7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsgICAgICAKLSNlbmRpZgotICAgIH07Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIGIpOwotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBh
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaApJbmRleDog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNjUgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3RCYXNlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAoreworICAgIHJldHVybiAq
c3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyk7Cit9CisKK2Jvb2wgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX3VybC5pc0VtcHR5KCk7IAorfQorCitib29s
IFJlc291cmNlUmVxdWVzdEJhc2U6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX3VybC51cmwoKS5pc051bGwoKTsKK30K
KworY29uc3QgS1VSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCit7CisgICAg
dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX3VybDsKK30KKwor
dm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQoreyAKKyAg
ICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisKKyAgICBtX3VybCA9IHVybDsgCisgICAgCisg
ICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK2NvbnN0IFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5IFJlc291cmNlUmVxdWVzdEJhc2U6OmNhY2hlUG9saWN5KCkgY29u
c3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1f
Y2FjaGVQb2xpY3k7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldENhY2hlUG9s
aWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KQoreworICAgIHVwZGF0
ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2NhY2hlUG9saWN5ID0gY2FjaGVQb2xp
Y3k7CisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK2Rv
dWJsZSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSBjb25zdAoreworICAg
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV90aW1lb3V0SW50
ZXJ2YWw7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKSAKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsgCisgICAgCisgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWw7IAorICAg
IAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitjb25zdCBLVVJM
JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjptYWluRG9jdW1lbnRVUkwoKSBjb25zdAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9tYWluRG9jdW1lbnRV
Ukw7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldE1haW5Eb2N1bWVudFVSTChj
b25zdCBLVVJMJiBtYWluRG9jdW1lbnRVUkwpCit7IAorICAgIHVwZGF0ZVJlc291cmNlUmVxdWVz
dCgpOyAKKyAgICAKKyAgICBtX21haW5Eb2N1bWVudFVSTCA9IG1haW5Eb2N1bWVudFVSTDsgCisg
ICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK2NvbnN0IFN0
cmluZyYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cE1ldGhvZCgpIGNvbnN0Cit7CisgICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX2h0dHBNZXRob2Q7IAor
fQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5n
JiBodHRwTWV0aG9kKSAKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisKKyAgICBt
X2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOworICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZCA9IGZhbHNlOworfQorCitjb25zdCBIVFRQSGVhZGVyTWFwJiBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpodHRwSGVhZGVyRmllbGRzKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCisKKyAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzOyAKK30KKworU3RyaW5nIFJl
c291cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBt
X2h0dHBIZWFkZXJGaWVsZHMuZ2V0KG5hbWUpOworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQobmFtZSwgdmFsdWUpOyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVx
dWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworRm9ybURhdGEqIFJlc291cmNlUmVxdWVzdEJhc2U6
Omh0dHBCb2R5KCkgY29uc3QgCit7IAorICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAg
ICAKKyAgICByZXR1cm4gbV9odHRwQm9keS5nZXQoKTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit7Cisg
ICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIG1faHR0cEJvZHkgPSBodHRw
Qm9keTsgCisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9IAor
Citib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmFsbG93SFRUUENvb2tpZXMoKSBjb25zdCAKK3sK
KyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fYWxsb3dI
VFRQQ29va2llczsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QWxsb3dIVFRQ
Q29va2llcyhib29sIGFsbG93SFRUUENvb2tpZXMpCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAorICAgIAorICAgIG1fYWxsb3dIVFRQQ29va2llcyA9IGFsbG93SFRUUENvb2tpZXM7
IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCit2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OworICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faHR0
cEhlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOyAKKyAgICBpZiAoIXJlc3VsdC5zZWNvbmQp
CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsIiArIHZhbHVlOworfQorCit2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRl
ck1hcCYgaGVhZGVyRmllbGRzKQoreworICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGhlYWRlckZpZWxkcy5lbmQoKTsKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgYWRkSFRUUEhlYWRlckZpZWxkKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7Cit9CisKK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJiBhLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3RCYXNlJiBiKQoreworICAgIGlmIChhLnVybCgpICE9IGIudXJsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmNhY2hlUG9saWN5KCkgIT0gYi5jYWNoZVBvbGlj
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS50aW1lb3V0SW50ZXJ2YWwo
KSAhPSBiLnRpbWVvdXRJbnRlcnZhbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAg
aWYgKGEubWFpbkRvY3VtZW50VVJMKCkgIT0gYi5tYWluRG9jdW1lbnRVUkwoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuaHR0cE1ldGhvZCgpICE9IGIuaHR0cE1ldGhvZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5hbGxvd0hUVFBDb29raWVzKCkg
IT0gYi5hbGxvd0hUVFBDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRm9ybURhdGEqIGZvcm1EYXRhQSA9IGEuaHR0cEJvZHkoKTsK
KyAgICBGb3JtRGF0YSogZm9ybURhdGFCID0gYi5odHRwQm9keSgpOworICAgIAorICAgIGlmICgh
Zm9ybURhdGFBKQorICAgICAgICByZXR1cm4gIWZvcm1EYXRhQjsKKyAgICBpZiAoIWZvcm1EYXRh
QikKKyAgICAgICAgcmV0dXJuICFmb3JtRGF0YUE7CisgICAgCisgICAgaWYgKCpmb3JtRGF0YUEg
IT0gKmZvcm1EYXRhQikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzQ29uZGl0aW9uYWwoKSBjb25z
dAoreworICAgIHJldHVybiAobV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1NYXRjaCIp
IHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU1vZGlmaWVk
LVNpbmNlIikgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYt
Tm9uZS1NYXRjaCIpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMo
IklmLVJhbmdlIikgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygi
SWYtVW5tb2RpZmllZC1TaW5jZSIpKTsKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1
cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSBjb25zdAoreworICAgIGlmIChtX3BsYXRmb3JtUmVxdWVz
dFVwZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjb25zdF9jYXN0PFJlc291cmNl
UmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7
CisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKK30KKwordm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAoreworICAgIGlmICht
X3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0X2Nh
c3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsKKyAgICBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOworfQorCit9
CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gMCkK
KysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzOSBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSot
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlUmVxdWVzdEJh
c2VfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RCYXNlX2gKKworI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisgICAgZW51bSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB7
CisgICAgICAgIFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksIC8vIG5vcm1hbCBsb2FkCisgICAgICAg
IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyByZWxvYWQKKyAgICAgICAgUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBvciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxvdyBz
dGFsZSBkYXRhCisgICAgICAgIFJldHVybkNhY2hlRGF0YURvbnRMb2FkLCAvLyByZXN1bHRzIG9m
IGEgcG9zdCAtIGFsbG93IHN0YWxlIGRhdGEgYW5kIG9ubHkgdXNlIGNhY2hlCisgICAgfTsKKwor
ICAgIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3Q7CisKKyAgICAvLyBEbyBub3QgdXNlIHRoaXMgdHlw
ZSBkaXJlY3RseS4gIFVzZSBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKyAgICBzdHJ1Y3QgUmVz
b3VyY2VSZXF1ZXN0QmFzZSB7CisKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmIHVybCk7CisKKyAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBv
bGljeSk7CisgICAgICAgIAorICAgICAgICBkb3VibGUgdGltZW91dEludGVydmFsKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwp
OworICAgICAgICAKKyAgICAgICAgY29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50VVJMKGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVu
dFVSTCk7CisgICAgICAgIAorICAgICAgICBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCk7
CisgICAgICAgIAorICAgICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRz
KCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBu
YW1lKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVy
RmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAg
dm9pZCBhZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxk
cyk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKTsgIH0KKyAgICAgICAgdm9pZCBz
ZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBodHRwQ29udGVudFR5cGUpIHsgc2V0SFRU
UEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiLCBodHRwQ29udGVudFR5cGUpOyB9CisgICAgICAg
IAorICAgICAgICBTdHJpbmcgaHR0cFJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRl
ckZpZWxkKCJSZWZlcmVyIik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3Qg
U3RyaW5nJiBodHRwUmVmZXJyZXIpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJSZWZlcmVyIiwgaHR0
cFJlZmVycmVyKTsgfQorICAgICAgICB2b2lkIGNsZWFySFRUUFJlZmVycmVyKCkgeyBtX2h0dHBI
ZWFkZXJGaWVsZHMucmVtb3ZlKCJSZWZlcmVyIik7IH0KKyAgICAgICAgCisgICAgICAgIFN0cmlu
ZyBodHRwVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJVc2VyLUFn
ZW50Iik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYgaHR0
cFVzZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlVzZXItQWdlbnQiLCBodHRwVXNlckFn
ZW50KTsgfQorCisgICAgICAgIFN0cmluZyBodHRwQWNjZXB0KCkgY29uc3QgeyByZXR1cm4gaHR0
cEhlYWRlckZpZWxkKCJBY2NlcHQiKTsgfQorICAgICAgICB2b2lkIHNldEhUVFBBY2NlcHQoY29u
c3QgU3RyaW5nJiBodHRwQWNjZXB0KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXB0IiwgaHR0
cEFjY2VwdCk7IH0KKworICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHkoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSk7CisgICAg
ICAgIAorICAgICAgICBib29sIGFsbG93SFRUUENvb2tpZXMoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRBbGxvd0hUVFBDb29raWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcyk7CisKKyAgICAgICAg
Ym9vbCBpc0NvbmRpdGlvbmFsKCkgY29uc3Q7CisgICAgICAgIAorICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgLy8gVXNlZCB3aGVuIFJlc291cmNlUmVxdWVzdCBpcyBpbml0aWFsaXplZCBmcm9tIGEg
cGxhdGZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcXVlc3QKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0QmFzZSgpCisgICAgICAgICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZChmYWxz
ZSkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKHRydWUpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdEJhc2UoY29uc3QgS1VSTCYg
dXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpCisgICAgICAgICAgICA6IG1f
dXJsKHVybCkKKyAgICAgICAgICAgICwgbV9jYWNoZVBvbGljeShwb2xpY3kpCisgICAgICAgICAg
ICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwpCisgICAgICAgICAg
ICAsIG1faHR0cE1ldGhvZCgiR0VUIikKKyAgICAgICAgICAgICwgbV9hbGxvd0hUVFBDb29raWVz
KHRydWUpCisgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVlKQorICAg
ICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3Q7IAor
ICAgICAgICB2b2lkIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0OyAKKworICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSA2MDsKKworICAgICAgICBL
VVJMIG1fdXJsOworCisgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1fY2FjaGVQ
b2xpY3k7CisgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsKKyAgICAgICAgS1VSTCBt
X21haW5Eb2N1bWVudFVSTDsKKyAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhvZDsKKyAgICAgICAg
SFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CisgICAgICAgIFJlZlB0cjxGb3JtRGF0
YT4gbV9odHRwQm9keTsKKyAgICAgICAgYm9vbCBtX2FsbG93SFRUUENvb2tpZXM7CisgICAgICAg
IG11dGFibGUgYm9vbCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQ7CisgICAgICAgIG11dGFibGUg
Ym9vbCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQ7CisKKyAgICBwcml2YXRlOgorICAgICAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGFzUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CisgICAgfTsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJiBhLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3RCYXNlJiBiKTsKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFJl
c291cmNlUmVxdWVzdEJhc2UmIGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGIpIHsgcmV0
dXJuICEoYSA9PSBiKTsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBS
ZXNvdXJjZVJlcXVlc3RCYXNlX2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVx
dWVzdC5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1
ZXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMt
YmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBSZXNvdXJjZVJlcXVlc3RfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNVUkxSZXF1ZXN0OworI2Vsc2UKK2NsYXNzIE5TVVJM
UmVxdWVzdDsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgUmVz
b3VyY2VSZXF1ZXN0IDogUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CisKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKHVybC5kZXByZWNhdGVkU3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
S1VSTCYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAor
ICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICB7
CisgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0KiBu
c1JlcXVlc3QpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQorICAgICAgICAg
ICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpIHsgfQorICAgICAgICAKKyAgICAgICAgTlNVUkxS
ZXF1ZXN0KiBuc1VSTFJlcXVlc3QoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlOworCisgICAgICAgIHZvaWQgZG9VcGRhdGVQ
bGF0Zm9ybVJlcXVlc3QoKTsKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OworICAgICAgICAKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9uc1JlcXVlc3Q7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VS
ZXF1ZXN0X2gK
</data>
<flag name="review"
          id="6264"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15240</attachid>
            <date>2007-06-26 01:31:41 -0700</date>
            <delta_ts>2007-06-26 01:50:04 -0700</delta_ts>
            <desc>complete patch</desc>
            <filename>rr-2.2.diff</filename>
            <type>text/plain</type>
            <size>57719</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzg4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMDctMDYt
MjYgIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIGJ1
bGsgb2YgUmVzb3VyY2VSZXF1ZXN0IGludG8gYSBiYXNlIGNsYXNzIG5hbWVkCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2Ugd2l0aCBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBwdXNoZWQg
aW50bworICAgICAgICBSZXNvdXJjZVJlcXVlc3QuICBUaGlzIGFsbG93cyBwb3J0cyB0byBlYXNp
bHkgYWRkIG5ldyBtZW1iZXJzIHRvIGEKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpdGhvdXQg
aGF2aW5nIHRvICNpZmRlZiB0aGUgY29kZSB0aGF0IGlzIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHA6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldFVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGltZW91dEludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVu
dFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9j
dW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cE1l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJG
aWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEhlYWRl
ckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBI
ZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRw
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRU
UENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRU
UEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFk
ZEhUVFBIZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpodHRwQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0SFRUUENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6Omh0dHBSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6Y2xlYXJIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cFVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQVXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBBY2NlcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEFjY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVl
c3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisKIDIwMDctMDYtMjYgIEp1c3RpbiBHYXJjaWEgIDxq
dXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huLgpJbmRl
eDogV2ViQ29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5leHAJKHJldmlzaW9uIDIzNzg4
KQorKysgV2ViQ29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw5ICs1NzEsOSBAQCBfX1pO
SzdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEwY29ubmVjdGlvCiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUxvYWRlcjExZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE1UHJvZ3Jlc3NUcmFja2Vy
MTdlc3RpbWF0ZWRQcm9ncmVzc0V2CiBfX1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxMm5z
VVJMUmVxdWVzdEV2Ci1fX1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxNmh0dHBIZWFkZXJG
aWVsZHNFdgotX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0M3VybEV2Ci1fX1pOSzdXZWJD
b3JlMTVSZXNvdXJjZVJlcXVlc3Q3aXNFbXB0eUV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJl
cXVlc3RCYXNlMTZodHRwSGVhZGVyRmllbGRzRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVx
dWVzdEJhc2UzdXJsRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U3aXNFbXB0
eUV2CiBfX1pOSzdXZWJDb3JlMTZEZXByZWNhdGVkU3RyaW5nMTFnZXROU1N0cmluZ0V2CiBfX1pO
SzdXZWJDb3JlMTZEZXByZWNhdGVkU3RyaW5nMmF0RWoKIF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0
ZWRTdHJpbmczbWlkRWpqCkluZGV4OiBXZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
LnBybwkocmV2aXNpb24gMjM3ODgpCisrKyBXZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAt
NjE5LDcgKzYxOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAgXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIFwKLSAgICBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5jcHAgXAorICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZS5jcHAgXAogICAgIHBsYXRmb3JtL1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBcCiAgICAgcGxhdGZv
cm0vU2Nyb2xsQmFyLmNwcCBcCkluZGV4OiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMjM3
ODgpCisrKyBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDE2MCwxMSArNDE2MCwxMSBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZVJlcXVlc3QuY3BwIgor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlUmVxdWVzdC5oIgorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCkBAIC00MjAzLDYgKzQyMDMsMTAgQEAKIAkJCQkJCT4KIAkJ
CQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXGNmXFJlc291cmNlUmVxdWVzdC5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkluZGV4OiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzc4OCkKKysrIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw2IEBACiAJCTFB
Q0U1M0VCMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFNTNFNTBBOEQxOEU3MDAyMjk0N0Qg
LyogWE1MU2VyaWFsaXplci5oICovOyB9OwogCQkxQUNFNTNGNjBBOEQxOTQ3MDAyMjk0N0QgLyog
SlNYTUxTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3Bw
ICovOyB9OwogCQkxQUNFNTNGNzBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFNTNGNTBB
OEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmggKi87IH07Ci0JCTFBRDhDRkNFMEIx
Q0VEODkwMDY5NkRFMCAvKiBSZXNvdXJjZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEOENGQ0QwQjFDRUQ4OTAwNjk2REUwIC8qIFJl
c291cmNlUmVxdWVzdC5jcHAgKi87IH07CiAJCTFBRTJBQTFFMEExQ0RBQjQwMEI0MkIyNSAvKiBK
U0hUTUxBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUUyQUEwQTBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1lbnQu
Y3BwICovOyB9OwogCQkxQUUyQUExRjBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJB
QTBCMEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxBcmVhRWxlbWVudC5oICovOyB9OwogCQkxQUUy
QUEyMDBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQmFzZUZvbnRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBQTBDMEExQ0RBQjMw
MEI0MkIyNSAvKiBKU0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMzUzLDcgKzM1
Miw2IEBACiAJCTY1MUI0RDg1MDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTFC
NEQ4MzA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuY3BwICovOyB9Owog
CQk2NTFCNEQ4NjA5QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MUI0RDg0MDlBQzgz
MzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdC5oICovOyB9OwogCQk2NTFCNEQ4RjA5
QUM4NTlGMDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTFCNEQ4RTA5QUM4NTlGMDAyOUYx
RUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMubW0gKi87IH07Ci0JCTY1MjJCQ0RGMDlDOURB
QTgwMEM5QkE3QSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MjJCQ0RFMDlDOURBQTgwMEM5QkE3QSAvKiBSZXNvdXJj
ZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2NTRFQzYxMTA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTRFQzYwRjA5Nzc3
OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU0RUM2MTIwOTc3NzhGNTAwREFCNTJDIC8q
IFdlYkNvcmVGcmFtZUJyaWRnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NEVDNjEwMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlk
Z2UubW0gKi87IH07CiAJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MEI2
OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi87IH07CkBAIC0xNTU1LDYg
KzE1NTMsOSBAQAogCQk5M0NENEZFMzA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NENEZEQzA5
OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTkzQ0Q0RkU0MDk5NUY5
RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0NENEZERDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQ0Q0
RkVDMDk5NUZEMkEwMDdFQ0M5NyAvKiBQbGF0Zm9ybVN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDRDRGRUIwOTk1RkQyQTAwN0VDQzk3IC8q
IFBsYXRmb3JtU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTNDRERFMjgwQzIzOUE0ODAwQ0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDRERFMjcw
QzIzOUE0ODAwQ0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDgyQTQ5MEMyOENGMUUwMEZENzAzRCAv
KiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDgyQTQ3MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcCAqLzsgfTsKKwkJOTNEODJBNEEwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNl
UmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRDgyQTQ4MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFMjI3RTAw
QUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBE
b2N1bWVudExvYWRlci5jcHAgKi87IH07CiAJCTkzRTIyN0UxMEFGNTg5QUQwMEQ0ODMyNCAvKiBN
YWluUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNFMjI3REMwQUY1ODlBRDAwRDQ4MzI0IC8qIE1haW5SZXNvdXJjZUxvYWRl
ci5jcHAgKi87IH07CiAJCTkzRTIyN0UyMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwICovOyB9OwpAQCAtMzM5OSw3ICszNDAwLDYgQEAKIAkJMUFDRTUzRTYwQThEMThF
NzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBY
TUxTZXJpYWxpemVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDRTUzRjQw
QThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxTZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFDRTUzRjUwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxTZXJpYWxpemVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBRDhDRkNEMEIxQ0VEODkwMDY5NkRFMCAv
KiBSZXNvdXJjZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFF
MkE5RjAwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxBcmVhRWxlbWVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEhUTUxBcmVhRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBRTJBOUYxMEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1MQmFzZUZvbnRFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEJhc2VGb250RWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRTJBOUYyMEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1M
Qm9keUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQm9keUVsZW1lbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU4Nyw3ICszNTg3LDYgQEAKIAkJ
NjUxQjREODMwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXByZWNhdGVkU3RyaW5nTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MUI0RDg0MDlBQzgzMzcwMDI5RjFF
RiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVwcmVjYXRlZFN0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjUxQjREOEUwOUFDODU5RjAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERlcHJlY2F0ZWRTdHJp
bmdMaXN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTIyQkNERTA5QzlE
QUE4MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3VtZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRG9jdW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTRFQzYwRjA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVCcmlkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0RUM2MTAwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVG
cmFtZUJyaWRnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb3JlRnJhbWVCcmlkZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzY5
LDYgKzQ3NjgsOSBAQAogCQk5M0NENEZEQzA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDRDRGREQwOTk1RjlFQTAwN0VDQzk3IC8q
IFN0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NENEZFQjA5OTVGRDJBMDA3RUND
OTcgLyogUGxhdGZvcm1TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNDRERFMjcw
QzIzOUE0ODAwQ0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRDgyQTQ3MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNEODJBNDgwQzI4Q0YxRTAw
RkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMjdEQzBBRjU4OUFEMDBENDgzMjQgLyog
TWFpblJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBw
YXRoID0gTWFpblJlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMzksOCAr
NzE0MSw4IEBACiAJCQkJNjU2Qjg0REMwQUVBMUQzMTAwQTA5NUI0IC8qIFJlc291cmNlSGFuZGxl
LmNwcCAqLywKIAkJCQk2NTZCODRERTBBRUExRDMxMDBBMDk1QjQgLyogUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCAqLywKIAkJCQk2NTZCODRERjBBRUExRDMxMDBBMDk1QjQgLyogUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oICovLAotCQkJCTY1MjJCQ0RFMDlDOURBQTgwMEM5QkE3QSAvKiBSZXNvdXJj
ZVJlcXVlc3QuaCAqLywKLQkJCQkxQUQ4Q0ZDRDBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VS
ZXF1ZXN0LmNwcCAqLywKKwkJCQk5M0Q4MkE0NzBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAgKi8sCisJCQkJOTNEODJBNDgwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291
cmNlUmVxdWVzdEJhc2UuaCAqLywKIAkJCQk2NTg4MjE2NTBBRjRDREY3MDBGMDFEMUYgLyogUmVz
b3VyY2VSZXNwb25zZS5oICovLAogCQkJCTFBODE4MEE0MEIxRDRFNDMwMENFNDZDNCAvKiBSZXNv
dXJjZVJlc3BvbnNlLmNwcCAqLywKIAkJCSk7CkBAIC03MTUwLDYgKzcxNTIsNyBAQAogCQk2NTZC
ODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk5M0NEREUyNzBDMjM5QTQ4MDBDRDU3QUUgLyogUmVzb3VyY2VS
ZXF1ZXN0LmggKi8sCiAJCQkJNjUxODg4OEEwQUZGM0MxNDAwMTY0NzIwIC8qIFJlc291cmNlRXJy
b3JNYWMubW0gKi8sCiAJCQkJNjVEQUQ5RkUwQUZEODZCRjAwQ0U1M0VEIC8qIEZvcm1EYXRhU3Ry
ZWFtTWFjLmggKi8sCiAJCQkJNjVEQUQ5RkYwQUZEODZCRjAwQ0U1M0VEIC8qIEZvcm1EYXRhU3Ry
ZWFtTWFjLm1tICovLApAQCAtMTA0NTQsNyArMTA0NTcsNiBAQAogCQkJCTkzRUVDMjAzMDlDMjg3
NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFRUMy
MDQwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQwQjA1NTY4MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNjUyMkJDREYwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDODQxRjgwOUNFODU1QzAwREZGNUU1IC8qIERPTUltcGxl
bWVudGF0aW9uRnJvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MEY0MDlEMTJCMjAwMDBF
NjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODE1MTA5
RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTYxNiwxMSArMTE2MTgsMTMgQEAKIAkJCQlCQzZEQzdBMTBDMUE0QkZBMDA0RTIwMTcgLyogSlNI
VE1MQWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRTJGMTIwQzFCNTgzODAw
MjAyMzVGIC8qIEpTUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAw
NUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQ0RERTI4MEMyMzlBNDgwMENE
NTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTI0RUU4MEMy
NjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEYwMDBD
MjY0NDdBMDA5RTIzNDkgLyogSlNCYXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFC
RTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFD
MzBDMjc0REREMDA5RjRFQzkgLyogSlNTY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMw
MUQ3MEMyNzRFQjQwMDlGNEVDOSAvKiBQbGF0Zm9ybVNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTNEODJBNEEwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDOTREMTRGMEMyNzVDNjgwMDZCQzYxNyAvKiBKU0hpc3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOTREMTU0MEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzk0RDE1NzBDMjc1Q0FCMDA2QkM2MTcgLyogR2xvYmFsSGlz
dG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTY3NCw3ICsxMTY3OCw2IEBACiAJCQltYWluR3Jv
dXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovOwogCQkJcHJvZHVjdFJl
Zkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwogCQkJcHJv
amVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0gKAog
CQkJCTkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICovLAogCQkJCUREMDQxRkJF
MDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC0xMjkxNyw3ICsxMjky
MCw2IEBACiAJCQkJQjJEODdDODkwQjEyNEU5NTAwQjBERTFFIC8qIFNWR1BhaW50U2VydmVyUGF0
dGVybkNnLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDg3QzhBMEIxMjRFOTUwMEIwREUxRSAv
KiBTVkdQYWludFNlcnZlclNvbGlkQ2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczNTJDMTkw
QjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTFBRDhDRkNFMEIxQ0VEODkwMDY5NkRFMCAvKiBSZXNvdXJjZVJlcXVlc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDYwMjdDQjMwQjFDQzAzRDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBODE4MEE1MEIxRDRFNDMwMENFNDZDNCAvKiBSZXNv
dXJjZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMzEwQjc2MEIxRjQ2QTIwMEQ1
NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMzA1Niw2ICsxMzA1OCw3
IEBACiAJCQkJQkNFQzAxQkQwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VDMDFDMjBDMjc0REREMDA5RjRFQzkgLyogSlNTY3JlZW4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM5NEQxMDgwQzI3NEY4ODAwNkJDNjE3IC8qIFBsYXRmb3JtU2NyZWVu
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNEODJBNDkwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJl
c291cmNlUmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NEQxNEUwQzI3NUM2
ODAwNkJDNjE3IC8qIEpTSGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDE1MzBD
Mjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDE1
OTBDMjc1Q0I2MDA2QkM2MTcgLyogR2xvYmFsSGlzdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjM3ODgpCisr
KyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjYzICswLDAgQEAKLS8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIFJlc291cmNl
UmVxdWVzdDo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAotICAgIAotICAgIHJldHVybiBtX3VybC5pc0VtcHR5KCk7IAotfQotCi1ib29sIFJlc291cmNl
UmVxdWVzdDo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsg
Ci0gICAgCi0gICAgcmV0dXJuIG1fdXJsLnVybCgpLmlzTnVsbCgpOwotfQotCi1jb25zdCBLVVJM
JiBSZXNvdXJjZVJlcXVlc3Q6OnVybCgpIGNvbnN0IAotewotICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV91cmw7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQoteyAKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCi0KLSAgICBtX3VybCA9IHVybDsgCi0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkID0gZmFsc2U7Ci19Ci0KLWNvbnN0IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IFJl
c291cmNlUmVxdWVzdDo6Y2FjaGVQb2xpY3koKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNl
UmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9jYWNoZVBvbGljeTsgCi19Ci0KLXZvaWQg
UmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGlj
eSBjYWNoZVBvbGljeSkKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0g
ICAgbV9jYWNoZVBvbGljeSA9IGNhY2hlUG9saWN5OwotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1
ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi1kb3VibGUgUmVzb3VyY2VSZXF1ZXN0Ojp0aW1lb3V0
SW50ZXJ2YWwoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAK
LSAgICByZXR1cm4gbV90aW1lb3V0SW50ZXJ2YWw7IAotfQotCi12b2lkIFJlc291cmNlUmVxdWVz
dDo6c2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpIAotewotICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX3RpbWVvdXRJbnRlcnZhbCA9IHRp
bWVvdXRJbnRlcnZhbDsgCi0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFs
c2U7Ci19Ci0KLWNvbnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdDo6bWFpbkRvY3VtZW50VVJMKCkg
Y29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJu
IG1fbWFpbkRvY3VtZW50VVJMOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldE1haW5E
b2N1bWVudFVSTChjb25zdCBLVVJMJiBtYWluRG9jdW1lbnRVUkwpCi17IAotICAgIHVwZGF0ZVJl
c291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX21haW5Eb2N1bWVudFVSTCA9IG1haW5Eb2N1
bWVudFVSTDsgCi0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Ci19
Ci0KLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXF1ZXN0OjpodHRwTWV0aG9kKCkgY29uc3QKLXsK
LSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1faHR0cE1l
dGhvZDsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRIVFRQTWV0aG9kKGNvbnN0IFN0
cmluZyYgaHR0cE1ldGhvZCkgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotCi0g
ICAgbV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZDsKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVz
dFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXF1
ZXN0OjpodHRwSGVhZGVyRmllbGRzKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCi0KLSAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzOyAKLX0KLQotU3RyaW5nIFJl
c291cmNlUmVxdWVzdDo6aHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
LXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJuIG1faHR0
cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRI
VFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQot
ewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsgCi0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7Ci19Ci0KLUZvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3Q6Omh0dHBCb2R5KCkg
Y29uc3QgCi17IAotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1
cm4gbV9odHRwQm9keS5nZXQoKTsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRIVFRQ
Qm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSkKLXsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV9odHRwQm9keSA9IGh0dHBCb2R5OyAKLSAgICAKLSAg
ICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0gCi0KLWJvb2wgUmVzb3VyY2VS
ZXF1ZXN0OjphbGxvd0hUVFBDb29raWVzKCkgY29uc3QgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2FsbG93SFRUUENvb2tpZXM7IAotfQotCi12
b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0QWxsb3dIVFRQQ29va2llcyhib29sIGFsbG93SFRUUENv
b2tpZXMpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1fYWxs
b3dIVFRQQ29va2llcyA9IGFsbG93SFRUUENvb2tpZXM7IAotICAgIAotICAgIG1fcGxhdGZvcm1S
ZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5F
VFdPUkspCi0gICAgaWYgKG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyktPmRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCk7Ci0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsK
LSNlbmRpZgotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgaWYg
KG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Rf
Y2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsK
LSAgICBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQg
UmVzb3VyY2VSZXF1ZXN0OjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKLSAg
ICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0dHBIZWFk
ZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKLX0KLQotdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmFkZEhUVFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVyRmllbGRzKQotewotICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhl
YWRlckZpZWxkcy5lbmQoKTsKLSAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgYWRk
SFRUUEhlYWRlckZpZWxkKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7Ci19Ci0KLWJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYikK
LXsKLSAgICBpZiAoYS51cmwoKSAhPSBiLnVybCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoYS5jYWNoZVBvbGljeSgpICE9IGIuY2FjaGVQb2xpY3koKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGEudGltZW91dEludGVydmFsKCkgIT0gYi50aW1lb3V0SW50
ZXJ2YWwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgIGlmIChhLm1haW5Eb2N1bWVu
dFVSTCgpICE9IGIubWFpbkRvY3VtZW50VVJMKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChhLmh0dHBNZXRob2QoKSAhPSBiLmh0dHBNZXRob2QoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKGEuYWxsb3dIVFRQQ29va2llcygpICE9IGIuYWxsb3dIVFRQQ29v
a2llcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5odHRwSGVhZGVyRmll
bGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIEZvcm1EYXRhKiBmb3JtRGF0YUEgPSBhLmh0dHBCb2R5KCk7Ci0gICAgRm9ybURhdGEqIGZv
cm1EYXRhQiA9IGIuaHR0cEJvZHkoKTsKLSAgICAKLSAgICBpZiAoIWZvcm1EYXRhQSkKLSAgICAg
ICAgcmV0dXJuICFmb3JtRGF0YUI7Ci0gICAgaWYgKCFmb3JtRGF0YUIpCi0gICAgICAgIHJldHVy
biAhZm9ybURhdGFBOwotICAgIAotICAgIGlmICgqZm9ybURhdGFBICE9ICpmb3JtRGF0YUIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBS
ZXNvdXJjZVJlcXVlc3Q6OmlzQ29uZGl0aW9uYWwoKSBjb25zdAotewotICAgIHJldHVybiAobV9o
dHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1NYXRjaCIpIHx8Ci0gICAgICAgICAgICBtX2h0
dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLU1vZGlmaWVkLVNpbmNlIikgfHwKLSAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtTm9uZS1NYXRjaCIpIHx8Ci0gICAg
ICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklmLVJhbmdlIikgfHwKLSAgICAg
ICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtVW5tb2RpZmllZC1TaW5jZSIp
KTsKLX0KLQotfQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAy
Mzc4OCkKKysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTk3ICswLDAgQEAKLS8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0
IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZXNvdXJjZVJlcXVl
c3RfaAotI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAotCi0jaW5jbHVkZSAiRm9ybURhdGEuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotCi0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpZmRlZiBfX09CSkNfXwot
QGNsYXNzIE5TVVJMUmVxdWVzdDsKLSNlbHNlCi1jbGFzcyBOU1VSTFJlcXVlc3Q7Ci0jZW5kaWYK
LSNlbGlmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwotI2VuZGlmCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGVudW0gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgewotICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9saWN5LCAvLyBub3JtYWwgbG9hZAotICAg
ICAgICBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgLy8gcmVsb2FkCi0gICAgICAgIFJldHVybkNh
Y2hlRGF0YUVsc2VMb2FkLCAvLyBiYWNrL2ZvcndhcmQgb3IgZW5jb2RpbmcgY2hhbmdlIC0gYWxs
b3cgc3RhbGUgZGF0YQotICAgICAgICBSZXR1cm5DYWNoZURhdGFEb250TG9hZCwgLy8gcmVzdWx0
cyBvZiBhIHBvc3QgLSBhbGxvdyBzdGFsZSBkYXRhIGFuZCBvbmx5IHVzZSBjYWNoZQotICAgIH07
Ci0KLSAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IHsKLQotICAgICAgICAKLSAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAgICAgICAgICAgIDogbV91cmwodXJs
LmRlcHJlY2F0ZWRTdHJpbmcoKSkKLSAgICAgICAgICAgICwgbV9jYWNoZVBvbGljeShVc2VQcm90
b2NvbENhY2hlUG9saWN5KQotICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0
VGltZW91dEludGVydmFsKQotICAgICAgICAgICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCi0gICAg
ICAgICAgICAsIG1fYWxsb3dIVFRQQ29va2llcyh0cnVlKQotICAgICAgICAgICAgLCBtX3Jlc291
cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKLSAgICAgICAgICAgIDogbV91cmwodXJsKQotICAgICAg
ICAgICAgLCBtX2NhY2hlUG9saWN5KFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCi0gICAgICAgICAg
ICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwpCi0gICAgICAgICAg
ICAsIG1faHR0cE1ldGhvZCgiR0VUIikKLSAgICAgICAgICAgICwgbV9hbGxvd0hUVFBDb29raWVz
KHRydWUpCi0gICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVlKQotICAg
ICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpIAotICAgICAgICAgICAgOiBtX3VybCh1cmwpCi0gICAgICAg
ICAgICAsIG1fY2FjaGVQb2xpY3kocG9saWN5KQotICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRl
cnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQotICAgICAgICAgICAgLCBtX2h0dHBNZXRob2Qo
IkdFVCIpCi0gICAgICAgICAgICAsIG1fYWxsb3dIVFRQQ29va2llcyh0cnVlKQotICAgICAgICAg
ICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwgbV9wbGF0
Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBtX2NhY2hlUG9saWN5KFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCi0gICAgICAgICAgICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50
ZXJ2YWwpCi0gICAgICAgICAgICAsIG1faHR0cE1ldGhvZCgiR0VUIikKLSAgICAgICAgICAgICwg
bV9hbGxvd0hUVFBDb29raWVzKHRydWUpCi0gICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZCh0cnVlKQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFs
c2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7
Ci0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotCi0gICAgICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1cmwpOwotCi0gICAg
ICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7
Ci0gICAgICAgIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
Y2FjaGVQb2xpY3kpOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCgp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dElu
dGVydmFsKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVSTCgp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldE1haW5Eb2N1bWVudFVSTChjb25zdCBLVVJMJiBtYWlu
RG9jdW1lbnRVUkwpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9k
KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRl
ckZpZWxkcygpIGNvbnN0OwotICAgICAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0
cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgYWRkSFRU
UEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgICAgIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJGaWVsZHMpOwotICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0dHBDb250ZW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIik7ICB9Ci0gICAgICAg
IHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaHR0cENvbnRlbnRUeXBlKSB7
IHNldEhUVFBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIiwgaHR0cENvbnRlbnRUeXBlKTsgfQot
ICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIGh0
dHBIZWFkZXJGaWVsZCgiUmVmZXJlciIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRUUFJlZmVycmVy
KGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiUmVmZXJl
ciIsIGh0dHBSZWZlcnJlcik7IH0KLSAgICAgICAgdm9pZCBjbGVhckhUVFBSZWZlcnJlcigpIHsg
bV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZSgiUmVmZXJlciIpOyB9Ci0gICAgICAgIAotICAgICAg
ICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgi
VXNlci1BZ2VudCIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRUUFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJVc2VyLUFnZW50IiwgaHR0
cFVzZXJBZ2VudCk7IH0KLQotICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgpIGNvbnN0IHsgcmV0
dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KLSAgICAgICAgdm9pZCBzZXRIVFRQQWNj
ZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIkFjY2Vw
dCIsIGh0dHBBY2NlcHQpOyB9Ci0KLSAgICAgICAgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29uc3Q7
Ci0gICAgICAgIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkp
OwotICAgICAgICAKLSAgICAgICAgYm9vbCBhbGxvd0hUVFBDb29raWVzKCkgY29uc3Q7Ci0gICAg
ICAgIHZvaWQgc2V0QWxsb3dIVFRQQ29va2llcyhib29sIGFsbG93SFRUUENvb2tpZXMpOwotCi0g
ICAgICAgIGJvb2wgaXNDb25kaXRpb25hbCgpIGNvbnN0OwotICAgICAgICAKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QqIG5zUmVxdWVzdCkK
LSAgICAgICAgICAgIDogbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAgICAg
ICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwgbV9uc1Jl
cXVlc3QobnNSZXF1ZXN0KSB7IH0KLSAgICAgICAgCi0gICAgICAgIE5TVVJMUmVxdWVzdCogbnNV
UkxSZXF1ZXN0KCkgY29uc3Q7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKLSAgICAgICAgICAgIDogbV9yZXNv
dXJjZVJlcXVlc3RVcGRhdGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVz
dFVwZGF0ZWQodHJ1ZSkKLSAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KSB7IH0K
LSAgICAgICAgCi0gICAgICAgIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoKSBjb25zdDsg
ICAgICAgCi0jZW5kaWYKLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3Jt
UmVxdWVzdCgpIGNvbnN0OyAKLSAgICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBj
b25zdDsgCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgICAgIHZv
aWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOwotI2VuZGlmCi0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgaW50
IGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSA2MDsKLQotICAgICAgICBLVVJMIG1fdXJsOwotCi0g
ICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1fY2FjaGVQb2xpY3k7Ci0gICAgICAg
IGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsKLSAgICAgICAgS1VSTCBtX21haW5Eb2N1bWVudFVS
TDsKLSAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhvZDsKLSAgICAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsK
LSAgICAgICAgYm9vbCBtX2FsbG93SFRUUENvb2tpZXM7Ci0gICAgICAgIG11dGFibGUgYm9vbCBt
X3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQ7Ci0gICAgICAgIG11dGFibGUgYm9vbCBtX3BsYXRmb3Jt
UmVxdWVzdFVwZGF0ZWQ7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBSZXRhaW5QdHI8TlNV
UkxSZXF1ZXN0PiBtX25zUmVxdWVzdDsKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIFJl
dGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IG1fY2ZSZXF1ZXN0OyAgICAgIAotI2VuZGlmCi0gICAg
fTsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgYik7Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShSZXNvdXJj
ZVJlcXVlc3QmIGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVxdWVz
dF9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlz
aW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI2NSBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZz
ZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdEJhc2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphc1Jlc291cmNlUmVxdWVzdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlcXVlc3QqPih0aGlzKTsKK30K
KworYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKTsg
Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICB1
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdXJsLnVybCgpLmlz
TnVsbCgpOworfQorCitjb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25z
dCAKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1f
dXJsOworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldFVSTChjb25zdCBLVVJMJiB1
cmwpCit7IAorICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKworICAgIG1fdXJsID0gdXJs
OyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y2FjaGVQ
b2xpY3koKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAg
ICByZXR1cm4gbV9jYWNoZVBvbGljeTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
c2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kpCit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIG1fY2FjaGVQb2xpY3kg
PSBjYWNoZVBvbGljeTsKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxz
ZTsKK30KKworZG91YmxlIFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpIGNv
bnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBt
X3RpbWVvdXRJbnRlcnZhbDsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGlt
ZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpIAoreworICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX3RpbWVvdXRJbnRlcnZhbCA9IHRpbWVvdXRJbnRl
cnZhbDsgCisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisK
K2NvbnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVudFVSTCgpIGNvbnN0
Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX21h
aW5Eb2N1bWVudFVSTDsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0TWFpbkRv
Y3VtZW50VVJMKGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3sgCisgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIG1fbWFpbkRvY3VtZW50VVJMID0gbWFpbkRvY3Vt
ZW50VVJMOyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30K
KworY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwTWV0aG9kKCkgY29uc3QK
K3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1faHR0
cE1ldGhvZDsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUE1ldGhvZChj
b25zdCBTdHJpbmcmIGh0dHBNZXRob2QpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKKworICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7CisgICAgCisgICAgbV9wbGF0Zm9y
bVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIFJlc291
cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHVwZGF0ZVJl
c291cmNlUmVxdWVzdCgpOyAKKworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHM7IAorfQor
CitTdHJpbmcgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisg
ICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAg
CisgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7IAorICAgIAorICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitGb3JtRGF0YSogUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6aHR0cEJvZHkoKSBjb25zdCAKK3sgCisgICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX2h0dHBCb2R5LmdldCgpOyAKK30KKwordm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRw
Qm9keSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9odHRw
Qm9keSA9IGh0dHBCb2R5OyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBm
YWxzZTsKK30gCisKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWxsb3dIVFRQQ29va2llcygp
IGNvbnN0IAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1
cm4gbV9hbGxvd0hUVFBDb29raWVzOyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpz
ZXRBbGxvd0hUVFBDb29raWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcykKK3sKKyAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9hbGxvd0hUVFBDb29raWVzID0gYWxsb3dI
VFRQQ29va2llczsgCisgICAgCisgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7
Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgCit7CisgICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7CisgICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7IAorICAgIGlmICghcmVz
dWx0LnNlY29uZCkKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7
Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkcyhjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMpCit7CisgICAgSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gaGVhZGVyRmllbGRzLmVuZCgpOworICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBhZGRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25k
KTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGIpCit7CisgICAgaWYgKGEudXJsKCkgIT0gYi51cmwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuY2FjaGVQb2xpY3koKSAhPSBi
LmNhY2hlUG9saWN5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLnRpbWVv
dXRJbnRlcnZhbCgpICE9IGIudGltZW91dEludGVydmFsKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAKKyAgICBpZiAoYS5tYWluRG9jdW1lbnRVUkwoKSAhPSBiLm1haW5Eb2N1bWVudFVSTCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5odHRwTWV0aG9kKCkgIT0gYi5o
dHRwTWV0aG9kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmFsbG93SFRU
UENvb2tpZXMoKSAhPSBiLmFsbG93SFRUUENvb2tpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhlYWRlckZpZWxkcygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGb3JtRGF0YSogZm9ybURhdGFBID0gYS5o
dHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBmb3JtRGF0YUIgPSBiLmh0dHBCb2R5KCk7CisgICAg
CisgICAgaWYgKCFmb3JtRGF0YUEpCisgICAgICAgIHJldHVybiAhZm9ybURhdGFCOworICAgIGlm
ICghZm9ybURhdGFCKQorICAgICAgICByZXR1cm4gIWZvcm1EYXRhQTsKKyAgICAKKyAgICBpZiAo
KmZvcm1EYXRhQSAhPSAqZm9ybURhdGFCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNDb25kaXRp
b25hbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMo
IklmLU1hdGNoIikgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygi
SWYtTW9kaWZpZWQtU2luY2UiKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNv
bnRhaW5zKCJJZi1Ob25lLU1hdGNoIikgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxk
cy5jb250YWlucygiSWYtUmFuZ2UiKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRz
LmNvbnRhaW5zKCJJZi1Vbm1vZGlmaWVkLVNpbmNlIikpOworfQorCit2b2lkIFJlc291cmNlUmVx
dWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0Cit7CisgICAgaWYgKG1fcGxh
dGZvcm1SZXF1ZXN0VXBkYXRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGNvbnN0X2Nh
c3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVQbGF0Zm9y
bVJlcXVlc3QoKTsKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOworfQorCit2
b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0Cit7
CisgICAgaWYgKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRy
dWU7Cit9CisKK30KSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShy
ZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTM5IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9m
ZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZV9oCisjZGVmaW5lIFJlc291cmNlUmVxdWVzdEJhc2VfaAorCisjaW5jbHVk
ZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1h
cC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBlbnVtIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHsKKyAgICAgICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgLy8gbm9ybWFsIGxv
YWQKKyAgICAgICAgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAorICAgICAgICBS
ZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5n
ZSAtIGFsbG93IHN0YWxlIGRhdGEKKyAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8v
IHJlc3VsdHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUK
KyAgICB9OworCisgICAgc3RydWN0IFJlc291cmNlUmVxdWVzdDsKKworICAgIC8vIERvIG5vdCB1
c2UgdGhpcyB0eXBlIGRpcmVjdGx5LiAgVXNlIFJlc291cmNlUmVxdWVzdCBpbnN0ZWFkLgorICAg
IHN0cnVjdCBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKKworICAgICAgICBib29sIGlzTnVsbCgpIGNv
bnN0OworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgICAgICBjb25zdCBLVVJM
JiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKwor
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IGNhY2hlUG9saWN5KTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2
YWwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVv
dXRJbnRlcnZhbCk7CisgICAgICAgIAorICAgICAgICBjb25zdCBLVVJMJiBtYWluRG9jdW1lbnRV
UkwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRVUkwoY29uc3QgS1VSTCYg
bWFpbkRvY3VtZW50VVJMKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFN0cmluZyYgaHR0cE1l
dGhvZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBo
dHRwTWV0aG9kKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGh0dHBI
ZWFkZXJGaWVsZHMoKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgICAgICB2b2lkIGFk
ZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OworICAgICAgICB2b2lkIGFkZEhUVFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVyRmllbGRzKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBodHRwQ29udGVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpOyAgfQorICAg
ICAgICB2b2lkIHNldEhUVFBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGh0dHBDb250ZW50VHlw
ZSkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIsIGh0dHBDb250ZW50VHlwZSk7
IH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZyBodHRwUmVmZXJyZXIoKSBjb25zdCB7IHJldHVy
biBodHRwSGVhZGVyRmllbGQoIlJlZmVyZXIiKTsgfQorICAgICAgICB2b2lkIHNldEhUVFBSZWZl
cnJlcihjb25zdCBTdHJpbmcmIGh0dHBSZWZlcnJlcikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlJl
ZmVyZXIiLCBodHRwUmVmZXJyZXIpOyB9CisgICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIo
KSB7IG1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUoIlJlZmVyZXIiKTsgfQorICAgICAgICAKKyAg
ICAgICAgU3RyaW5nIGh0dHBVc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmll
bGQoIlVzZXItQWdlbnQiKTsgfQorICAgICAgICB2b2lkIHNldEhUVFBVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiBodHRwVXNlckFnZW50KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIs
IGh0dHBVc2VyQWdlbnQpOyB9CisKKyAgICAgICAgU3RyaW5nIGh0dHBBY2NlcHQoKSBjb25zdCB7
IHJldHVybiBodHRwSGVhZGVyRmllbGQoIkFjY2VwdCIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRU
UEFjY2VwdChjb25zdCBTdHJpbmcmIGh0dHBBY2NlcHQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJB
Y2NlcHQiLCBodHRwQWNjZXB0KTsgfQorCisgICAgICAgIEZvcm1EYXRhKiBodHRwQm9keSgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBC
b2R5KTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgYWxsb3dIVFRQQ29va2llcygpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldEFsbG93SFRUUENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKTsK
KworICAgICAgICBib29sIGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKKyAgICAgICAgCisgICAgcHJv
dGVjdGVkOgorICAgICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VSZXF1ZXN0IGlzIGluaXRpYWxp
emVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWVzdAorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKKyAgICAgICAgICAgIDogbV9yZXNvdXJjZVJlcXVlc3RV
cGRhdGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQodHJ1
ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZShj
b25zdCBLVVJMJiB1cmwsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKKyAgICAg
ICAgICAgIDogbV91cmwodXJsKQorICAgICAgICAgICAgLCBtX2NhY2hlUG9saWN5KHBvbGljeSkK
KyAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCkK
KyAgICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQorICAgICAgICAgICAgLCBtX2FsbG93
SFRUUENvb2tpZXModHJ1ZSkKKyAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
KHRydWUpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB1cGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
KSBjb25zdDsgCisgICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7IAor
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IDYwOwor
CisgICAgICAgIEtVUkwgbV91cmw7CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgbV9jYWNoZVBvbGljeTsKKyAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOworICAg
ICAgICBLVVJMIG1fbWFpbkRvY3VtZW50VVJMOworICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9k
OworICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKKyAgICAgICAgUmVm
UHRyPEZvcm1EYXRhPiBtX2h0dHBCb2R5OworICAgICAgICBib29sIG1fYWxsb3dIVFRQQ29va2ll
czsKKyAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZDsKKyAgICAg
ICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZDsKKworICAgIHByaXZhdGU6
CisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25z
dDsKKyAgICB9OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVxdWVzdEJh
c2UmIGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGIpOworICAgIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFz
ZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdEJhc2VfaApJbmRleDogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLy8gLSotIG1vZGU6
IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCisjZGVmaW5lIFJlc291cmNlUmVxdWVzdF9oCisK
KyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RS
ZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3Qg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiB1cmwpIAorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwodXJs
LmRlcHJlY2F0ZWRTdHJpbmcoKSksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIAor
ICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgCisgICAgICAgICAgICA6
IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJlc291cmNlUmVxdWVzdCgpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VS
TCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQor
ICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKKyAgICAgICAgICAgICwgbV9jZlJl
cXVlc3QoY2ZSZXF1ZXN0KSB7IH0KKyAgICAgICAgCisgICAgICAgIENGVVJMUmVxdWVzdFJlZiBj
ZlVSTFJlcXVlc3QoKSBjb25zdDsgICAgICAgCisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKKworICAgICAgICB2b2lkIGRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCk7CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsK
KyAgICAgICAgCisgICAgICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IG1fY2ZSZXF1ZXN0
OyAgICAgIAorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJl
c291cmNlUmVxdWVzdF9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVz
dC5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVz
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UmVzb3VyY2VSZXF1ZXN0X2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKKworI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3Ry
dWN0IFJlc291cmNlUmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdEJhc2UgeworCisgICAgICAgIFJl
c291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkgCisgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UoS1VSTCh1cmwuZGVwcmVjYXRlZFN0cmluZygpKSwgVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IEtVUkwmIHVybCkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJs
LCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKKyAg
ICAgICAgeworICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKKyAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKKworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KCkge30KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1
ZXN0X2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lv
biAwKQorKysgcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODIgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0
IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlcXVl
c3RfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oIgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lmZGVmIF9fT0JKQ19f
CitAY2xhc3MgTlNVUkxSZXF1ZXN0OworI2Vsc2UKK2NsYXNzIE5TVVJMUmVxdWVzdDsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IDog
UmVzb3VyY2VSZXF1ZXN0QmFzZSB7CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKHVybC5k
ZXByZWNhdGVkU3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICAgICAgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICB7CisgICAgICAgICAgICBz
ZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwo
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0KiBuc1JlcXVlc3QpCisgICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQorICAgICAgICAgICAgLCBtX25zUmVxdWVz
dChuc1JlcXVlc3QpIHsgfQorICAgICAgICAKKyAgICAgICAgTlNVUkxSZXF1ZXN0KiBuc1VSTFJl
cXVlc3QoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3RCYXNlOworCisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
KTsKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICAKKyAg
ICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9uc1JlcXVlc3Q7CisgICAgfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0X2gKSW5kZXg6
IHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxh
dGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMCkKKysrIHBsYXRm
b3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjcgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAorI2RlZmluZSBS
ZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSB7CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
dXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKHVybC5kZXByZWNh
dGVkU3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNl
UHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlOworCisg
ICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7fQorICAgICAgICB2b2lkIGRv
VXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15241</attachid>
            <date>2007-06-26 01:50:04 -0700</date>
            <delta_ts>2007-06-26 19:33:44 -0700</delta_ts>
            <desc>complete patch (that actually works!)</desc>
            <filename>rr-2.3.diff</filename>
            <type>text/plain</type>
            <size>58051</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzg4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMDctMDYt
MjYgIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIGJ1
bGsgb2YgUmVzb3VyY2VSZXF1ZXN0IGludG8gYSBiYXNlIGNsYXNzIG5hbWVkCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2Ugd2l0aCBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBwdXNoZWQg
aW50bworICAgICAgICBSZXNvdXJjZVJlcXVlc3QuICBUaGlzIGFsbG93cyBwb3J0cyB0byBlYXNp
bHkgYWRkIG5ldyBtZW1iZXJzIHRvIGEKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpdGhvdXQg
aGF2aW5nIHRvICNpZmRlZiB0aGUgY29kZSB0aGF0IGlzIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHA6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldFVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGltZW91dEludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVu
dFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9j
dW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cE1l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBIZWFkZXJG
aWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEhlYWRl
ckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBI
ZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRw
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRU
UENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRU
UEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFk
ZEhUVFBIZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpodHRwQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0SFRUUENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6Omh0dHBSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6Y2xlYXJIVFRQUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cFVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQVXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBBY2NlcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEFjY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVl
c3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisKIDIwMDctMDYtMjYgIEp1c3RpbiBHYXJjaWEgIDxq
dXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huLgpJbmRl
eDogV2ViQ29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5leHAJKHJldmlzaW9uIDIzNzg4
KQorKysgV2ViQ29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBfX1pO
N1dlYkNvcmU5VGltZXJCYXNlNXN0YXJ0RWRkCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlQzJFdgog
X19aTjdXZWJDb3JlOVRpbWVyQmFzZUQyRXYKIF9fWk43V2ViQ29yZTlwYWdlQ2FjaGVFdgotX19a
TjdXZWJDb3JlZXFFUktOU18xNVJlc291cmNlUmVxdWVzdEVTMl8KK19fWk43V2ViQ29yZWVxRVJL
TlNfMTlSZXNvdXJjZVJlcXVlc3RCYXNlRVMyXwogX19aTjdXZWJDb3JlZXFFUktOU180S1VSTEVT
Ml8KIF9fWk5LN1dlYkNvcmUxMFN0cmluZ0ltcGxjdlA4TlNTdHJpbmdFdgogX19aTks3V2ViQ29y
ZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgpAQCAtNTcxLDkgKzU3MSw5IEBAIF9fWk5LN1dlYkNvcmUx
NFJlc291cmNlSGFuZGxlMTBjb25uZWN0aW8KIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTVQcm9ncmVzc1RyYWNrZXIxN2VzdGltYXRl
ZFByb2dyZXNzRXYKIF9fWk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEybnNVUkxSZXF1ZXN0
RXYKLV9fWk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDE2aHR0cEhlYWRlckZpZWxkc0V2Ci1f
X1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QzdXJsRXYKLV9fWk5LN1dlYkNvcmUxNVJlc291
cmNlUmVxdWVzdDdpc0VtcHR5RXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2Ux
Nmh0dHBIZWFkZXJGaWVsZHNFdgorX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1
cmxFdgorX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTdpc0VtcHR5RXYKIF9fWk5L
N1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmcxMWdldE5TU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUx
NkRlcHJlY2F0ZWRTdHJpbmcyYXRFagogX19aTks3V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzNt
aWRFamoKSW5kZXg6IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZp
c2lvbiAyMzc4OCkKKysrIFdlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MTksNyArNjE5
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgXAotICAgIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0LmNwcCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmNwcCBcCiAg
ICAgcGxhdGZvcm0vUmVndWxhckV4cHJlc3Npb24uY3BwIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxC
YXIuY3BwIFwKSW5kZXg6IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAyMzc4OCkKKysrIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTYwLDExICs0
MTYwLDExIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlUmVxdWVzdC5jcHAiCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcUmVzb3VyY2VSZXF1ZXN0LmgiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKQEAgLTQyMDMsNiArNDIwMywxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
UmVzb3VyY2VSZXF1ZXN0LmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIzNzg4KQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDYgQEAKIAkJMUFDRTUzRUIwQThE
MThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0U1M0U1MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJp
YWxpemVyLmggKi87IH07CiAJCTFBQ0U1M0Y2MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlh
bGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFDRTUzRjQwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5jcHAgKi87IH07CiAJ
CTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0U1M0Y1MEE4RDE5NDcwMDIy
OTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLzsgfTsKLQkJMUFEOENGQ0UwQjFDRUQ4OTAwNjk2
REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUQ4Q0ZDRDBCMUNFRDg5MDA2OTZERTAgLyogUmVzb3VyY2VSZXF1
ZXN0LmNwcCAqLzsgfTsKIAkJMUFFMkFBMUUwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEFyZWFF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTJBQTBBMEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxBcmVhRWxlbWVudC5jcHAgKi87IH07
CiAJCTFBRTJBQTFGMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxBcmVhRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFBMEIwQTFDREFC
MzAwQjQyQjI1IC8qIEpTSFRNTEFyZWFFbGVtZW50LmggKi87IH07CiAJCTFBRTJBQTIwMEExQ0RB
QjQwMEI0MkIyNSAvKiBKU0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFBMEMwQTFDREFCMzAwQjQyQjI1IC8q
IEpTSFRNTEJhc2VGb250RWxlbWVudC5jcHAgKi87IH07CkBAIC0zNTMsNyArMzUyLDYgQEAKIAkJ
NjUxQjREODUwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MUI0RDgzMDlBQzgz
MzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdC5jcHAgKi87IH07CiAJCTY1MUI0RDg2
MDlBQzgzMzcwMDI5RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxQjREODQwOUFDODMzNzAwMjlGMUVG
IC8qIERlcHJlY2F0ZWRTdHJpbmdMaXN0LmggKi87IH07CiAJCTY1MUI0RDhGMDlBQzg1OUYwMDI5
RjFFRiAvKiBEZXByZWNhdGVkU3RyaW5nTGlzdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MUI0RDhFMDlBQzg1OUYwMDI5RjFFRiAvKiBEZXBy
ZWNhdGVkU3RyaW5nTGlzdE1hYy5tbSAqLzsgfTsKLQkJNjUyMkJDREYwOUM5REFBODAwQzlCQTdB
IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjUyMkJDREUwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NEVD
NjExMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NEVDNjBGMDk3Nzc4RjUwMERBQjUy
QyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2NTRFQzYxMjA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZy
YW1lQnJpZGdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU0RUM2MTAwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFtZUJyaWRnZS5tbSAqLzsg
fTsKIAkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUwQjY5MzA5OURGMDI3
MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTE1NTUsNiArMTU1Myw5IEBA
CiAJCTkzQ0Q0RkUzMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0Q0RkRDMDk5NUY5RUEwMDdF
Q0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJOTNDRDRGRTQwOTk1RjlFQTAwN0VDQzk3
IC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQ0Q0RkREMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDRDRGRUMwOTk1RkQy
QTAwN0VDQzk3IC8qIFBsYXRmb3JtU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NENEZFQjA5OTVGRDJBMDA3RUNDOTcgLyogUGxhdGZvcm1T
dHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5M0NEREUyODBDMjM5QTQ4MDBDRDU3QUUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NEREUyNzBDMjM5QTQ4MDBD
RDU3QUUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNEODJBNDkwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNl
UmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNEODJBNDcwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3Bw
ICovOyB9OworCQk5M0Q4MkE0QTBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEODJB
NDgwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0UyMjdFMDBBRjU4OUFEMDBE
NDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNFMjI3REIwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9h
ZGVyLmNwcCAqLzsgfTsKIAkJOTNFMjI3RTEwQUY1ODlBRDAwRDQ4MzI0IC8qIE1haW5SZXNvdXJj
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0UyMjdEQzBBRjU4OUFEMDBENDgzMjQgLyogTWFpblJlc291cmNlTG9hZGVyLmNwcCAqLzsg
fTsKIAkJOTNFMjI3RTIwQUY1ODlBRDAwRDQ4MzI0IC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAg
Ki87IH07CkBAIC0zMzk5LDcgKzM0MDAsNiBAQAogCQkxQUNFNTNFNjBBOEQxOEU3MDAyMjk0N0Qg
LyogWE1MU2VyaWFsaXplci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTFNlcmlhbGl6
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNFNTNGNDBBOEQxOTQ3MDAy
Mjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1hNTFNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUNFNTNGNTBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTFNlcmlhbGl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFEOENGQ0QwQjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNl
UmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJj
ZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUUyQTlGMDBBMUNE
QTU3MDBCNDJCMjUgLyogSFRNTEFyZWFFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTEFyZWFFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFF
MkE5RjEwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxCYXNlRm9udEVsZW1lbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBIVE1MQmFzZUZvbnRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFFMkE5RjIwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxCb2R5RWxlbWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxCb2R5RWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTg3LDcgKzM1ODcsNiBAQAogCQk2NTFCNEQ4MzA5
QUM4MzM3MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxQjREODQwOUFDODMzNzAwMjlGMUVGIC8qIERlcHJl
Y2F0ZWRTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXBy
ZWNhdGVkU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTFCNEQ4
RTA5QUM4NTlGMDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1MjJCQ0RFMDlDOURBQTgwMEM5QkE3
QSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQ4RTI0
ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NEVDNjBGMDk3
Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTRFQzYxMDA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVGcmFt
ZUJyaWRnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NjksNiArNDc2OCw5
IEBACiAJCTkzQ0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0NENEZERDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0Q0RkVCMDk5NUZEMkEwMDdFQ0M5NyAvKiBQbGF0
Zm9ybVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVN0
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0NEREUyNzBDMjM5QTQ4MDBD
RDU3QUUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNE
ODJBNDcwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdEJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q4MkE0ODBDMjhDRjFFMDBGRDcwM0QgLyog
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Uy
MjdEQjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEb2N1bWVudExvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0RDMEFGNTg5QUQwMEQ0ODMyNCAvKiBNYWluUmVzb3Vy
Y2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBNYWlu
UmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMjdE
RDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEzOSw4ICs3MTQxLDggQEAK
IAkJCQk2NTZCODREQzBBRUExRDMxMDBBMDk1QjQgLyogUmVzb3VyY2VIYW5kbGUuY3BwICovLAog
CQkJCTY1NkI4NERFMEFFQTFEMzEwMEEwOTVCNCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oICov
LAogCQkJCTY1NkI4NERGMEFFQTFEMzEwMEEwOTVCNCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFs
LmggKi8sCi0JCQkJNjUyMkJDREUwOUM5REFBODAwQzlCQTdBIC8qIFJlc291cmNlUmVxdWVzdC5o
ICovLAotCQkJCTFBRDhDRkNEMEIxQ0VEODkwMDY5NkRFMCAvKiBSZXNvdXJjZVJlcXVlc3QuY3Bw
ICovLAorCQkJCTkzRDgyQTQ3MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCAqLywKKwkJCQk5M0Q4MkE0ODBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oICovLAogCQkJCTY1ODgyMTY1MEFGNENERjcwMEYwMUQxRiAvKiBSZXNvdXJjZVJlc3Bv
bnNlLmggKi8sCiAJCQkJMUE4MTgwQTQwQjFENEU0MzAwQ0U0NkM0IC8qIFJlc291cmNlUmVzcG9u
c2UuY3BwICovLAogCQkJKTsKQEAgLTcxNTAsNiArNzE1Miw3IEBACiAJCTY1NkI4NEU3MEFFQTFE
QUUwMEEwOTVCNCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTkzQ0RERTI3MEMyMzlBNDgwMENENTdBRSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAq
LywKIAkJCQk2NTE4ODg4QTBBRkYzQzE0MDAxNjQ3MjAgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAq
LywKIAkJCQk2NURBRDlGRTBBRkQ4NkJGMDBDRTUzRUQgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAq
LywKIAkJCQk2NURBRDlGRjBBRkQ4NkJGMDBDRTUzRUQgLyogRm9ybURhdGFTdHJlYW1NYWMubW0g
Ki8sCkBAIC0xMDQ1NCw3ICsxMDQ1Nyw2IEBACiAJCQkJOTNFRUMyMDMwOUMyODc3NzAwQzUxNUQx
IC8qIENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0VFQzIwNDA5QzI4Nzc3
MDBDNTE1RDEgLyogQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBCMDU1Njgw
OUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk2NTIyQkNERjA5QzlEQUE4MDBDOUJBN0EgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0M4NDFGODA5Q0U4NTVDMDBERkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25G
cm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENT
U1Byb3BlcnR5TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBF
NjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gSGVhZGVycyAqLywKQEAgLTExNjE2LDExICsx
MTYxOCwxMyBAQAogCQkJCUJDNkRDN0ExMEMxQTRCRkEwMDRFMjAxNyAvKiBKU0hUTUxBbGxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyog
SlNSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYgLyog
UmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNDRERFMjgwQzIzOUE0ODAwQ0Q1N0FFIC8qIFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2NDFDRDAwOUUy
MzQ5IC8qIEJhckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTI0RjAwMEMyNjQ0N0EwMDlF
MjM0OSAvKiBKU0JhckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUJFMEMyNzREQUMw
MDlGNEVDOSAvKiBTY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUMzMEMyNzREREQw
MDlGNEVDOSAvKiBKU1NjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxRDcwQzI3NEVC
NDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q4MkE0
QTBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM5NEQxNEYwQzI3NUM2ODAwNkJDNjE3IC8qIEpTSGlzdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM5NEQxNTQwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOTREMTU3MEMyNzVDQUIwMDZCQzYxNyAvKiBHbG9iYWxIaXN0b3J5LmggaW4g
SGVhZGVycyAqLywKQEAgLTExNjc0LDcgKzExNjc4LDYgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdE
NjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAw
MzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0
aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4
QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAw
MTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTEyOTE3LDcgKzEyOTIwLDYgQEAKIAkJ
CQlCMkQ4N0M4OTBCMTI0RTk1MDBCMERFMUUgLyogU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEODdDOEEwQjEyNEU5NTAwQjBERTFFIC8qIFNWR1BhaW50
U2VydmVyU29saWRDZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFEOENGQ0Uw
QjFDRUQ4OTAwNjk2REUwIC8qIFJlc291cmNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNjAyN0NCMzBCMUNDMDNEMDA4ODRCMkQgLyogQ29udGV4dE1lbnVJdGVtTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE4MTgwQTUwQjFENEU0MzAwQ0U0NkM0IC8qIFJlc291cmNlUmVzcG9u
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzMTBCNzYwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMDU2LDYgKzEzMDU4LDcgQEAKIAkJCQlC
Q0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRUMwMUMyMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMubW0gaW4g
U291cmNlcyAqLywKKwkJCQk5M0Q4MkE0OTBDMjhDRjFFMDBGRDcwM0QgLyogUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDE0RTBDMjc1QzY4MDA2QkM2MTcg
LyogSlNIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTREMTUzMEMyNzVDOEIwMDZC
QzYxNyAvKiBIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTREMTU5MEMyNzVDQjYw
MDZCQzYxNyAvKiBHbG9iYWxIaXN0b3J5TWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzc4OCkKKysrIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjMgKzAs
MCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojpp
c0VtcHR5KCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0g
ICAgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKTsgCi19Ci0KLWJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojpp
c051bGwoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAg
ICByZXR1cm4gbV91cmwudXJsKCkuaXNOdWxsKCk7Ci19Ci0KLWNvbnN0IEtVUkwmIFJlc291cmNl
UmVxdWVzdDo6dXJsKCkgY29uc3QgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAot
ICAgIAotICAgIHJldHVybiBtX3VybDsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFVS
TChjb25zdCBLVVJMJiB1cmwpCi17IAotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQot
ICAgIG1fdXJsID0gdXJsOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBm
YWxzZTsKLX0KLQotY29uc3QgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgUmVzb3VyY2VSZXF1
ZXN0OjpjYWNoZVBvbGljeSgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
IAotICAgIAotICAgIHJldHVybiBtX2NhY2hlUG9saWN5OyAKLX0KLQotdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OnNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9s
aWN5KQotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBtX2NhY2hl
UG9saWN5ID0gY2FjaGVQb2xpY3k7Ci0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
ID0gZmFsc2U7Ci19Ci0KLWRvdWJsZSBSZXNvdXJjZVJlcXVlc3Q6OnRpbWVvdXRJbnRlcnZhbCgp
IGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVy
biBtX3RpbWVvdXRJbnRlcnZhbDsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRUaW1l
b3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkgCi17Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1fdGltZW91dEludGVydmFsID0gdGltZW91dEludGVy
dmFsOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQot
Y29uc3QgS1VSTCYgUmVzb3VyY2VSZXF1ZXN0OjptYWluRG9jdW1lbnRVUkwoKSBjb25zdAotewot
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9tYWluRG9j
dW1lbnRVUkw7IAotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0TWFpbkRvY3VtZW50VVJM
KGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVSTCkKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAotICAgIAotICAgIG1fbWFpbkRvY3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMOyAK
LSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0KLQotY29uc3Qg
U3RyaW5nJiBSZXNvdXJjZVJlcXVlc3Q6Omh0dHBNZXRob2QoKSBjb25zdAotewotICAgIHVwZGF0
ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9odHRwTWV0aG9kOyAKLX0K
LQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBodHRw
TWV0aG9kKSAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0KLSAgICBtX2h0dHBN
ZXRob2QgPSBodHRwTWV0aG9kOwotICAgIAotICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9
IGZhbHNlOwotfQotCi1jb25zdCBIVFRQSGVhZGVyTWFwJiBSZXNvdXJjZVJlcXVlc3Q6Omh0dHBI
ZWFkZXJGaWVsZHMoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLQot
ICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHM7IAotfQotCi1TdHJpbmcgUmVzb3VyY2VSZXF1
ZXN0OjpodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9odHRwSGVhZGVyRmll
bGRzLmdldChuYW1lKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBIZWFkZXJG
aWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgdXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQo
bmFtZSwgdmFsdWUpOyAKLSAgICAKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxz
ZTsKLX0KLQotRm9ybURhdGEqIFJlc291cmNlUmVxdWVzdDo6aHR0cEJvZHkoKSBjb25zdCAKLXsg
Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIHJldHVybiBtX2h0dHBC
b2R5LmdldCgpOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5KFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KQotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKLSAgICAKLSAgICBtX2h0dHBCb2R5ID0gaHR0cEJvZHk7IAotICAgIAotICAgIG1fcGxhdGZv
cm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfSAKLQotYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OmFs
bG93SFRUUENvb2tpZXMoKSBjb25zdCAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsg
Ci0gICAgCi0gICAgcmV0dXJuIG1fYWxsb3dIVFRQQ29va2llczsgCi19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0OjpzZXRBbGxvd0hUVFBDb29raWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcykKLXsK
LSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV9hbGxvd0hUVFBDb29r
aWVzID0gYWxsb3dIVFRQQ29va2llczsgCi0gICAgCi0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVQbGF0Zm9ybVJl
cXVlc3QoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBpZiAobV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QoKTsKLSAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOwotI2VuZGlmCi19
Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAot
ewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBpZiAobV9yZXNvdXJj
ZVJlcXVlc3RVcGRhdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdF9jYXN0PFJlc291
cmNlUmVxdWVzdCo+KHRoaXMpLT5kb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fcmVz
b3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIAotewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIHBhaXI8SFRU
UEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5h
ZGQobmFtZSwgdmFsdWUpOyAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kICs9ICIsIiArIHZhbHVlOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVz
dDo6YWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMp
Ci17Ci0gICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVyRmllbGRz
LmVuZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFk
ZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBhZGRIVFRQSGVhZGVy
RmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBiKQotewotICAgIGlm
IChhLnVybCgpICE9IGIudXJsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChh
LmNhY2hlUG9saWN5KCkgIT0gYi5jYWNoZVBvbGljeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoYS50aW1lb3V0SW50ZXJ2YWwoKSAhPSBiLnRpbWVvdXRJbnRlcnZhbCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gCi0gICAgaWYgKGEubWFpbkRvY3VtZW50VVJMKCkgIT0g
Yi5tYWluRG9jdW1lbnRVUkwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEu
aHR0cE1ldGhvZCgpICE9IGIuaHR0cE1ldGhvZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoYS5hbGxvd0hUVFBDb29raWVzKCkgIT0gYi5hbGxvd0hUVFBDb29raWVzKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBi
Lmh0dHBIZWFkZXJGaWVsZHMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRm9ybURh
dGEqIGZvcm1EYXRhQSA9IGEuaHR0cEJvZHkoKTsKLSAgICBGb3JtRGF0YSogZm9ybURhdGFCID0g
Yi5odHRwQm9keSgpOwotICAgIAotICAgIGlmICghZm9ybURhdGFBKQotICAgICAgICByZXR1cm4g
IWZvcm1EYXRhQjsKLSAgICBpZiAoIWZvcm1EYXRhQikKLSAgICAgICAgcmV0dXJuICFmb3JtRGF0
YUE7Ci0gICAgCi0gICAgaWYgKCpmb3JtRGF0YUEgIT0gKmZvcm1EYXRhQikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFJlc291cmNlUmVx
dWVzdDo6aXNDb25kaXRpb25hbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX2h0dHBIZWFkZXJG
aWVsZHMuY29udGFpbnMoIklmLU1hdGNoIikgfHwKLSAgICAgICAgICAgIG1faHR0cEhlYWRlckZp
ZWxkcy5jb250YWlucygiSWYtTW9kaWZpZWQtU2luY2UiKSB8fAotICAgICAgICAgICAgbV9odHRw
SGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1Ob25lLU1hdGNoIikgfHwKLSAgICAgICAgICAgIG1f
aHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtUmFuZ2UiKSB8fAotICAgICAgICAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1Vbm1vZGlmaWVkLVNpbmNlIikpOwotfQotCi19
CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDIzNzg4KQorKysg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OTcgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCi0jZGVm
aW5lIFJlc291cmNlUmVxdWVzdF9oCi0KLSNpbmNsdWRlICJGb3JtRGF0YS5oIgotI2luY2x1ZGUg
IktVUkwuaCIKLSNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0KLSNpZiBQTEFURk9STShNQUMp
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3MgTlNV
UkxSZXF1ZXN0OwotI2Vsc2UKLWNsYXNzIE5TVVJMUmVxdWVzdDsKLSNlbmRpZgotI2VsaWYgVVNF
KENGTkVUV09SSykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIGNvbnN0IHN0
cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0gICAgZW51bSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB7Ci0gICAg
ICAgIFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksIC8vIG5vcm1hbCBsb2FkCi0gICAgICAgIFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyByZWxvYWQKLSAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRWxz
ZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBvciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxvdyBzdGFsZSBk
YXRhCi0gICAgICAgIFJldHVybkNhY2hlRGF0YURvbnRMb2FkLCAvLyByZXN1bHRzIG9mIGEgcG9z
dCAtIGFsbG93IHN0YWxlIGRhdGEgYW5kIG9ubHkgdXNlIGNhY2hlCi0gICAgfTsKLQotICAgIHN0
cnVjdCBSZXNvdXJjZVJlcXVlc3QgewotCi0gICAgICAgIAotICAgICAgICBSZXNvdXJjZVJlcXVl
c3QoY29uc3QgU3RyaW5nJiB1cmwpIAotICAgICAgICAgICAgOiBtX3VybCh1cmwuZGVwcmVjYXRl
ZFN0cmluZygpKQotICAgICAgICAgICAgLCBtX2NhY2hlUG9saWN5KFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCi0gICAgICAgICAgICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1bHRUaW1lb3V0SW50
ZXJ2YWwpCi0gICAgICAgICAgICAsIG1faHR0cE1ldGhvZCgiR0VUIikKLSAgICAgICAgICAgICwg
bV9hbGxvd0hUVFBDb29raWVzKHRydWUpCi0gICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZCh0cnVlKQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFs
c2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25z
dCBLVVJMJiB1cmwpIAotICAgICAgICAgICAgOiBtX3VybCh1cmwpCi0gICAgICAgICAgICAsIG1f
Y2FjaGVQb2xpY3koVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKLSAgICAgICAgICAgICwgbV90aW1l
b3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCkKLSAgICAgICAgICAgICwgbV9odHRw
TWV0aG9kKCJHRVQiKQotICAgICAgICAgICAgLCBtX2FsbG93SFRUUENvb2tpZXModHJ1ZSkKLSAg
ICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKHRydWUpCi0gICAgICAgICAgICAs
IG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkgCi0gICAgICAgICAgICA6IG1fdXJsKHVybCkKLSAgICAgICAgICAgICwgbV9j
YWNoZVBvbGljeShwb2xpY3kpCi0gICAgICAgICAgICAsIG1fdGltZW91dEludGVydmFsKGRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwpCi0gICAgICAgICAgICAsIG1faHR0cE1ldGhvZCgiR0VUIikKLSAg
ICAgICAgICAgICwgbV9hbGxvd0hUVFBDb29raWVzKHRydWUpCi0gICAgICAgICAgICAsIG1fcmVz
b3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVlKQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVz
dFVwZGF0ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihy
ZWZlcnJlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCgp
Ci0gICAgICAgICAgICA6IG1fY2FjaGVQb2xpY3koVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKLSAg
ICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCkKLSAg
ICAgICAgICAgICwgbV9odHRwTWV0aG9kKCJHRVQiKQotICAgICAgICAgICAgLCBtX2FsbG93SFRU
UENvb2tpZXModHJ1ZSkKLSAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKHRy
dWUpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7
Ci0gICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmIHVybCk7Ci0KLSAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGlj
eSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgdGltZW91dEludGVydmFsKCkgY29uc3Q7Ci0g
ICAgICAgIHZvaWQgc2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpOwot
ICAgICAgICAKLSAgICAgICAgY29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKCkgY29uc3Q7Ci0g
ICAgICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50VVJMKGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVS
TCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QoKSBjb25zdDsK
LSAgICAgICAgdm9pZCBzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCk7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkg
Y29uc3Q7Ci0gICAgICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmll
bGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICAgICAgdm9p
ZCBhZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcyk7
Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKTsgIH0KLSAgICAgICAgdm9pZCBzZXRI
VFRQQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBodHRwQ29udGVudFR5cGUpIHsgc2V0SFRUUEhl
YWRlckZpZWxkKCJDb250ZW50LVR5cGUiLCBodHRwQ29udGVudFR5cGUpOyB9Ci0gICAgICAgIAot
ICAgICAgICBTdHJpbmcgaHR0cFJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZp
ZWxkKCJSZWZlcmVyIik7IH0KLSAgICAgICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3Ry
aW5nJiBodHRwUmVmZXJyZXIpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJSZWZlcmVyIiwgaHR0cFJl
ZmVycmVyKTsgfQotICAgICAgICB2b2lkIGNsZWFySFRUUFJlZmVycmVyKCkgeyBtX2h0dHBIZWFk
ZXJGaWVsZHMucmVtb3ZlKCJSZWZlcmVyIik7IH0KLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBo
dHRwVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJVc2VyLUFnZW50
Iik7IH0KLSAgICAgICAgdm9pZCBzZXRIVFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYgaHR0cFVz
ZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlVzZXItQWdlbnQiLCBodHRwVXNlckFnZW50
KTsgfQotCi0gICAgICAgIFN0cmluZyBodHRwQWNjZXB0KCkgY29uc3QgeyByZXR1cm4gaHR0cEhl
YWRlckZpZWxkKCJBY2NlcHQiKTsgfQotICAgICAgICB2b2lkIHNldEhUVFBBY2NlcHQoY29uc3Qg
U3RyaW5nJiBodHRwQWNjZXB0KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXB0IiwgaHR0cEFj
Y2VwdCk7IH0KLQotICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHkoKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSk7Ci0gICAgICAg
IAotICAgICAgICBib29sIGFsbG93SFRUUENvb2tpZXMoKSBjb25zdDsKLSAgICAgICAgdm9pZCBz
ZXRBbGxvd0hUVFBDb29raWVzKGJvb2wgYWxsb3dIVFRQQ29va2llcyk7Ci0KLSAgICAgICAgYm9v
bCBpc0NvbmRpdGlvbmFsKCkgY29uc3Q7Ci0gICAgICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCogbnNSZXF1ZXN0KQotICAgICAgICAg
ICAgOiBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcGxh
dGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVlKQotICAgICAgICAgICAgLCBtX25zUmVxdWVzdChuc1Jl
cXVlc3QpIHsgfQotICAgICAgICAKLSAgICAgICAgTlNVUkxSZXF1ZXN0KiBuc1VSTFJlcXVlc3Qo
KSBjb25zdDsKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChD
RlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQotICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVz
dFVwZGF0ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0
cnVlKQotICAgICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpIHsgfQotICAgICAgICAK
LSAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdCgpIGNvbnN0OyAgICAgICAKLSNl
bmRpZgotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkg
Y29uc3Q7IAotICAgICAgICB2b2lkIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0OyAKLQot
I2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICAgICAgdm9pZCBkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpOwotICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCA9IDYwOwotCi0gICAgICAgIEtVUkwgbV91cmw7Ci0KLSAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgbV9jYWNoZVBvbGljeTsKLSAgICAgICAgZG91YmxlIG1f
dGltZW91dEludGVydmFsOwotICAgICAgICBLVVJMIG1fbWFpbkRvY3VtZW50VVJMOwotICAgICAg
ICBTdHJpbmcgbV9odHRwTWV0aG9kOwotICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRl
ckZpZWxkczsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2h0dHBCb2R5OwotICAgICAgICBi
b29sIG1fYWxsb3dIVFRQQ29va2llczsKLSAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VS
ZXF1ZXN0VXBkYXRlZDsKLSAgICAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZDsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+
IG1fbnNSZXF1ZXN0OwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgUmV0YWluUHRyPENG
VVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVlc3Q7ICAgICAgCi0jZW5kaWYKLSAgICB9OwotCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiBiKTsKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFJlc291cmNlUmVxdWVzdCYg
YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0X2gKSW5kZXg6
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMCkKKysr
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjY1IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0K
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291
cmNlUmVxdWVzdEJhc2U6OmFzUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
KnN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVxdWVzdCo+KHRoaXMpOworfQorCitib29sIFJl
c291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNl
UmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmwuaXNFbXB0eSgpOyAKK30KKworYm9v
bCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc051bGwoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmwudXJsKCkuaXNOdWxsKCk7Cit9
CisKK2NvbnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdEJhc2U6OnVybCgpIGNvbnN0IAoreworICAg
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV91cmw7Cit9CisK
K3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sgCisg
ICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorCisgICAgbV91cmwgPSB1cmw7IAorICAgIAor
ICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitjb25zdCBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjYWNoZVBvbGljeSgpIGNv
bnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBt
X2NhY2hlUG9saWN5OyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRDYWNoZVBv
bGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSkKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9jYWNoZVBvbGljeSA9IGNhY2hlUG9s
aWN5OworICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitk
b3VibGUgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgY29uc3QKK3sKKyAg
ICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fdGltZW91dElu
dGVydmFsOyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRUaW1lb3V0SW50ZXJ2
YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7IAorICAgIAorICAgIG1fdGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsOyAKKyAg
ICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKworY29uc3QgS1VS
TCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6bWFpbkRvY3VtZW50VVJMKCkgY29uc3QKK3sKKyAgICB1
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1fbWFpbkRvY3VtZW50
VVJMOyAKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRNYWluRG9jdW1lbnRVUkwo
Y29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKQoreyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoKTsgCisgICAgCisgICAgbV9tYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnRVUkw7IAor
ICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCitjb25zdCBT
dHJpbmcmIFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBNZXRob2QoKSBjb25zdAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4gbV9odHRwTWV0aG9kOyAK
K30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmlu
ZyYgaHR0cE1ldGhvZCkgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorCisgICAg
bV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZDsKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVw
ZGF0ZWQgPSBmYWxzZTsKK30KKworY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7IAorCisgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkczsgCit9CisKK1N0cmluZyBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICByZXR1cm4g
bV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2h0
dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsgCisgICAgCisgICAgbV9wbGF0Zm9ybVJl
cXVlc3RVcGRhdGVkID0gZmFsc2U7Cit9CisKK0Zvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpodHRwQm9keSgpIGNvbnN0IAoreyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisg
ICAgCisgICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0KCk7IAorfQorCit2b2lkIFJlc291cmNlUmVx
dWVzdEJhc2U6OnNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5KQorewor
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2h0dHBCb2R5ID0gaHR0
cEJvZHk7IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfSAK
KworYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphbGxvd0hUVFBDb29raWVzKCkgY29uc3QgCit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVybiBtX2FsbG93
SFRUUENvb2tpZXM7IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFsbG93SFRU
UENvb2tpZXMoYm9vbCBhbGxvd0hUVFBDb29raWVzKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKKyAgICAKKyAgICBtX2FsbG93SFRUUENvb2tpZXMgPSBhbGxvd0hUVFBDb29raWVz
OyAKKyAgICAKKyAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKK30KKwordm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSAKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsKKyAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0
dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCisgICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKK30KKwordm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlckZpZWxkcykKK3sKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgIGFkZEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOworfQorCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSYgYikKK3sKKyAgICBpZiAoYS51cmwoKSAhPSBiLnVybCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5jYWNoZVBvbGljeSgpICE9IGIuY2FjaGVQb2xp
Y3koKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEudGltZW91dEludGVydmFs
KCkgIT0gYi50aW1lb3V0SW50ZXJ2YWwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAg
IGlmIChhLm1haW5Eb2N1bWVudFVSTCgpICE9IGIubWFpbkRvY3VtZW50VVJMKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmh0dHBNZXRob2QoKSAhPSBiLmh0dHBNZXRob2Qo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuYWxsb3dIVFRQQ29va2llcygp
ICE9IGIuYWxsb3dIVFRQQ29va2llcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIEZvcm1EYXRhKiBmb3JtRGF0YUEgPSBhLmh0dHBCb2R5KCk7
CisgICAgRm9ybURhdGEqIGZvcm1EYXRhQiA9IGIuaHR0cEJvZHkoKTsKKyAgICAKKyAgICBpZiAo
IWZvcm1EYXRhQSkKKyAgICAgICAgcmV0dXJuICFmb3JtRGF0YUI7CisgICAgaWYgKCFmb3JtRGF0
YUIpCisgICAgICAgIHJldHVybiAhZm9ybURhdGFBOworICAgIAorICAgIGlmICgqZm9ybURhdGFB
ICE9ICpmb3JtRGF0YUIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0NvbmRpdGlvbmFsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucygiSWYtTWF0Y2gi
KSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1Nb2RpZmll
ZC1TaW5jZSIpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoIklm
LU5vbmUtTWF0Y2giKSB8fAorICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRhaW5z
KCJJZi1SYW5nZSIpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMo
IklmLVVubW9kaWZpZWQtU2luY2UiKSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF0Zm9ybVJlcXVl
c3RVcGRhdGVkKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgp
OworICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IHRydWU7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBpZiAo
bV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdF9j
YXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7CisgICAgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKK30KKwor
fQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDAp
CisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMzkgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RC
YXNlX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0QmFzZV9oCisKKyNpbmNsdWRlICJGb3JtRGF0
YS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGVudW0gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
eworICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9saWN5LCAvLyBub3JtYWwgbG9hZAorICAgICAg
ICBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgLy8gcmVsb2FkCisgICAgICAgIFJldHVybkNhY2hl
RGF0YUVsc2VMb2FkLCAvLyBiYWNrL2ZvcndhcmQgb3IgZW5jb2RpbmcgY2hhbmdlIC0gYWxsb3cg
c3RhbGUgZGF0YQorICAgICAgICBSZXR1cm5DYWNoZURhdGFEb250TG9hZCwgLy8gcmVzdWx0cyBv
ZiBhIHBvc3QgLSBhbGxvdyBzdGFsZSBkYXRhIGFuZCBvbmx5IHVzZSBjYWNoZQorICAgIH07CisK
KyAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0OworCisgICAgLy8gRG8gbm90IHVzZSB0aGlzIHR5
cGUgZGlyZWN0bHkuICBVc2UgUmVzb3VyY2VSZXF1ZXN0IGluc3RlYWQuCisgICAgc3RydWN0IFJl
c291cmNlUmVxdWVzdEJhc2UgeworCisgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1cmwpOworCisgICAgICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQ
b2xpY3kpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFs
KTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEtVUkwmIG1haW5Eb2N1bWVudFVSTCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldE1haW5Eb2N1bWVudFVSTChjb25zdCBLVVJMJiBtYWluRG9jdW1l
bnRVUkwpOworICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBNZXRob2Qp
OworICAgICAgICAKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxk
cygpIGNvbnN0OworICAgICAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYg
bmFtZSkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIHZvaWQgYWRkSFRUUEhlYWRl
ckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAg
IHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVs
ZHMpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGh0dHBDb250ZW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIik7ICB9CisgICAgICAgIHZvaWQg
c2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaHR0cENvbnRlbnRUeXBlKSB7IHNldEhU
VFBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIiwgaHR0cENvbnRlbnRUeXBlKTsgfQorICAgICAg
ICAKKyAgICAgICAgU3RyaW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFk
ZXJGaWVsZCgiUmVmZXJlciIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRUUFJlZmVycmVyKGNvbnN0
IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiUmVmZXJlciIsIGh0
dHBSZWZlcnJlcik7IH0KKyAgICAgICAgdm9pZCBjbGVhckhUVFBSZWZlcnJlcigpIHsgbV9odHRw
SGVhZGVyRmllbGRzLnJlbW92ZSgiUmVmZXJlciIpOyB9CisgICAgICAgIAorICAgICAgICBTdHJp
bmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiVXNlci1B
Z2VudCIpOyB9CisgICAgICAgIHZvaWQgc2V0SFRUUFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGh0
dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJVc2VyLUFnZW50IiwgaHR0cFVzZXJB
Z2VudCk7IH0KKworICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgpIGNvbnN0IHsgcmV0dXJuIGh0
dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQQWNjZXB0KGNv
bnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIkFjY2VwdCIsIGh0
dHBBY2NlcHQpOyB9CisKKyAgICAgICAgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpOworICAg
ICAgICAKKyAgICAgICAgYm9vbCBhbGxvd0hUVFBDb29raWVzKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0QWxsb3dIVFRQQ29va2llcyhib29sIGFsbG93SFRUUENvb2tpZXMpOworCisgICAgICAg
IGJvb2wgaXNDb25kaXRpb25hbCgpIGNvbnN0OworICAgICAgICAKKyAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBh
IHBsYXRmb3JtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0CisgICAgICAgIFJlc291cmNl
UmVxdWVzdEJhc2UoKQorICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQoZmFs
c2UpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlKGNvbnN0IEtVUkwm
IHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQorICAgICAgICAgICAgOiBt
X3VybCh1cmwpCisgICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3kocG9saWN5KQorICAgICAgICAg
ICAgLCBtX3RpbWVvdXRJbnRlcnZhbChkZWZhdWx0VGltZW91dEludGVydmFsKQorICAgICAgICAg
ICAgLCBtX2h0dHBNZXRob2QoIkdFVCIpCisgICAgICAgICAgICAsIG1fYWxsb3dIVFRQQ29va2ll
cyh0cnVlKQorICAgICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKKyAg
ICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0OyAK
KyAgICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsgCisKKyAgICAgICAg
c3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGltZW91dEludGVydmFsID0gNjA7CisKKyAgICAgICAg
S1VSTCBtX3VybDsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtX2NhY2hl
UG9saWN5OworICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2YWw7CisgICAgICAgIEtVUkwg
bV9tYWluRG9jdW1lbnRVUkw7CisgICAgICAgIFN0cmluZyBtX2h0dHBNZXRob2Q7CisgICAgICAg
IEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOworICAgICAgICBSZWZQdHI8Rm9ybURh
dGE+IG1faHR0cEJvZHk7CisgICAgICAgIGJvb2wgbV9hbGxvd0hUVFBDb29raWVzOworICAgICAg
ICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkOworICAgICAgICBtdXRhYmxl
IGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhc1Jlc291cmNlUmVxdWVzdCgpIGNvbnN0OworICAgIH07
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYik7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShS
ZXNvdXJjZVJlcXVlc3RCYXNlJiBhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
UmVzb3VyY2VSZXF1ZXN0QmFzZV9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UmVzb3VyY2VSZXF1ZXN0X2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKKworI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdEJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5
cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3RydWN0IFJlc291cmNlUmVxdWVzdCA6IFJlc291cmNl
UmVxdWVzdEJhc2UgeworCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCh1cmwuZGVwcmVjYXRl
ZFN0cmluZygpKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgCisgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBw
b2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0SFRUUFJl
ZmVycmVyKHJlZmVycmVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KCkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCisgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQorICAgICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJl
cXVlc3QpIHsgfQorICAgICAgICAKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVz
dCgpIGNvbnN0OyAgICAgICAKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3RCYXNlOworCisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKTsKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICAK
KyAgICAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVlc3Q7ICAgICAgCisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1
ZXN0X2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlz
aW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0
OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJl
cXVlc3RfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgUmVzb3Vy
Y2VSZXF1ZXN0IDogUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CisKKyAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZShLVVJMKHVybC5kZXByZWNhdGVkU3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VS
TCYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3Rv
Y29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNl
UmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAg
ICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICB7Cisg
ICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVl
c3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAg
ICB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3RCYXNlOworCisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7
fQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KKyAgICB9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaApJbmRl
eDogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDApCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MiBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCisjZGVm
aW5lIFJlc291cmNlUmVxdWVzdF9oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgi
CisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBO
U1VSTFJlcXVlc3Q7CisjZWxzZQorY2xhc3MgTlNVUkxSZXF1ZXN0OworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3QgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlIHsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwp
IAorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwodXJsLmRlcHJlY2F0ZWRT
dHJpbmcoKSksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIAorICAgICAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9s
aWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UodXJsLCBwb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJlc291cmNlUmVx
dWVzdCgpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QqIG5zUmVxdWVzdCkKKyAgICAgICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZSgpCisgICAgICAgICAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVz
dCkgeyB9CisgICAgICAgIAorICAgICAgICBOU1VSTFJlcXVlc3QqIG5zVVJMUmVxdWVzdCgpIGNv
bnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVz
dEJhc2U7CisKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOworICAgICAg
ICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIAorICAgICAgICBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiBtX25zUmVxdWVzdDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaApJbmRleDogcGxhdGZvcm0v
bmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3
b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29y
ay9xdC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLy8g
LSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCisjZGVmaW5lIFJlc291cmNlUmVx
dWVzdF9oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3QgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlIHsKKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpIAorICAg
ICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwodXJsLmRlcHJlY2F0ZWRTdHJpbmco
KSksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIAorICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0g
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJh
c2UodXJsLCBwb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihy
ZWZlcnJlcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJlc291cmNlUmVxdWVzdCgp
CisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2U7CisKKyAgICAgICAgdm9p
ZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHt9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZVJlcXVlc3QoKSB7fQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFJlc291cmNlUmVxdWVzdF9oCg==
</data>
<flag name="review"
          id="6295"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>