<?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>162919</bug_id>
          
          <creation_ts>2016-10-04 10:44:06 -0700</creation_ts>
          <short_desc>Generate passing union types as part of a functions variadic arguments</short_desc>
          <delta_ts>2016-10-08 12:10:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>rawinder.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236245</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 10:44:06 -0700</bug_when>
    <thetext>Autogenerate passing union types as part of a functions variadic arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236259</commentid>
    <comment_count>1</comment_count>
      <attachid>290620</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 10:55:38 -0700</bug_when>
    <thetext>Created attachment 290620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236295</commentid>
    <comment_count>2</comment_count>
      <attachid>290627</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 11:40:45 -0700</bug_when>
    <thetext>Created attachment 290627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236303</commentid>
    <comment_count>3</comment_count>
      <attachid>290628</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 11:52:47 -0700</bug_when>
    <thetext>Created attachment 290628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236325</commentid>
    <comment_count>4</comment_count>
      <attachid>290636</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 12:47:46 -0700</bug_when>
    <thetext>Created attachment 290636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236339</commentid>
    <comment_count>5</comment_count>
      <attachid>290639</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 13:46:34 -0700</bug_when>
    <thetext>Created attachment 290639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236397</commentid>
    <comment_count>6</comment_count>
      <attachid>290655</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-04 15:33:38 -0700</bug_when>
    <thetext>Created attachment 290655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236448</commentid>
    <comment_count>7</comment_count>
      <attachid>290655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 16:39:28 -0700</bug_when>
    <thetext>Comment on attachment 290655
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        * bindings/js/JSCharacterDataCustom.cpp: Removed.

Fails to build on Windows:
C:\cygwin\home\buildbot\WebKit\Source\WebCore\bindings\js\JSBindingsAllInOne.cpp(44): fatal error C1083: Cannot open include file: &apos;JSCharacterDataCustom.cpp&apos;: No such file or directory [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236455</commentid>
    <comment_count>8</comment_count>
      <attachid>290655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 16:48:58 -0700</bug_when>
    <thetext>Comment on attachment 290655
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:79
&gt; +    static Optional&lt;T&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)

I am not sure we need this, all convert() functions can already fail.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:129
&gt; +    static Optional&lt;Ref&lt;T&gt;&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)

Why do we need the concept of &apos;Failable&quot;?

We previously converted interface types using convertWrapperType(). The way we check for failure is usually by checking if an exception was thrown via &quot;state&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236459</commentid>
    <comment_count>9</comment_count>
      <attachid>290655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 17:00:04 -0700</bug_when>
    <thetext>Comment on attachment 290655
Patch

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

Looks great otherwise.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:637
&gt; +            push @flattenedMemberTypes, $object-&gt;GetFlattenedMemberTypes($memberType)

I think we usually use the version with the parentheses in this script: push().

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:639
&gt; +            push @flattenedMemberTypes, $memberType;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236715</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-05 10:56:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 290655 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290655&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMConvert.h:79
&gt; &gt; +    static Optional&lt;T&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)
&gt; 
&gt; I am not sure we need this, all convert() functions can already fail.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMConvert.h:129
&gt; &gt; +    static Optional&lt;Ref&lt;T&gt;&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)
&gt; 
&gt; Why do we need the concept of &apos;Failable&quot;?
&gt; 
&gt; We previously converted interface types using convertWrapperType(). The way
&gt; we check for failure is usually by checking if an exception was thrown via
&gt; &quot;state&quot;.

The issue is that I need to be able to return a Ref&lt;T&gt; from the convert function, since that is what the implementation files want in this case, but in the case that they fail, I cannot return a Ref&lt;T&gt;. So, returning an Optional&lt;Ref&lt;T&gt;&gt; is the way to go, and if I am doing that, I need to make it generic, so all converts must return an Optional&lt;Foo&gt;. 

Another way to go would be to have the convert function return a RefPtr&lt;T&gt; and have another static function on Converter that can transform the RefPtr&lt;T&gt; into a Ref&lt;T&gt; if there was no exception (and for non interface types, just pass the result through). Do you have a preference for either?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236737</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-05 11:37:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 290655 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=290655&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSDOMConvert.h:79
&gt; &gt; &gt; +    static Optional&lt;T&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)
&gt; &gt; 
&gt; &gt; I am not sure we need this, all convert() functions can already fail.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSDOMConvert.h:129
&gt; &gt; &gt; +    static Optional&lt;Ref&lt;T&gt;&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)
&gt; &gt; 
&gt; &gt; Why do we need the concept of &apos;Failable&quot;?
&gt; &gt; 
&gt; &gt; We previously converted interface types using convertWrapperType(). The way
&gt; &gt; we check for failure is usually by checking if an exception was thrown via
&gt; &gt; &quot;state&quot;.
&gt; 
&gt; The issue is that I need to be able to return a Ref&lt;T&gt; from the convert
&gt; function, since that is what the implementation files want in this case, but
&gt; in the case that they fail, I cannot return a Ref&lt;T&gt;. So, returning an
&gt; Optional&lt;Ref&lt;T&gt;&gt; is the way to go, and if I am doing that, I need to make it
&gt; generic, so all converts must return an Optional&lt;Foo&gt;. 
&gt; 
&gt; Another way to go would be to have the convert function return a RefPtr&lt;T&gt;
&gt; and have another static function on Converter that can transform the
&gt; RefPtr&lt;T&gt; into a Ref&lt;T&gt; if there was no exception (and for non interface
&gt; types, just pass the result through). Do you have a preference for either?

My preference would be to rely on convertWrapperType() which returns a raw pointer.

I don&apos;t think the implementation really needs a Ref&lt;&gt;. We can call convertWrapperType() with the right IsNullable parameter.
Then the calling code just needs to check if it threw an exception.

Why would the convert&lt;&gt; function ref the object? I understand that your call site currently eventually wants to ref it but in general we pass raw pointers (or C++ references when not nullable) to the implementation to avoid ref counting churn. We then let the implementation decide if it wants to ref it or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236754</commentid>
    <comment_count>12</comment_count>
      <attachid>290739</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-05 12:36:01 -0700</bug_when>
    <thetext>Created attachment 290739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236760</commentid>
    <comment_count>13</comment_count>
      <attachid>290739</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-05 12:45:47 -0700</bug_when>
    <thetext>Comment on attachment 290739
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:132
&gt; +    static Optional&lt;Ref&lt;T&gt;&gt; convertFailable(JSC::ExecState&amp; state, JSC::JSValue value)

Still using convertFailable? All convert functions can already fail and there is already a convert function for wrapper types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237268</commentid>
    <comment_count>14</comment_count>
      <attachid>290852</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-06 12:51:20 -0700</bug_when>
    <thetext>Created attachment 290852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237273</commentid>
    <comment_count>15</comment_count>
      <attachid>290739</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-06 12:52:42 -0700</bug_when>
    <thetext>Comment on attachment 290739
Patch

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

r=me but I think you should consider the comment Chris made about convertFailable.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:666
&gt; +        if ($memberType-&gt;isNullable) {
&gt; +            $count++;
&gt; +        }

I like one-liner if for this kind of thing in perl.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:670
&gt; +        if ($memberType-&gt;isUnion) {
&gt; +            $count += $object-&gt;GetNumberOfNullableMemberTypes($memberType);
&gt; +        }

Ditto.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:683
&gt; +    if ($numberOfNullableMembers &gt; 1) {
&gt; +        assert(&quot;Union types must only have 0 or 1 nullable types.&quot;);
&gt; +    }

Ditto.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:689
&gt; +    if ($numberOfNullableMembers == 1) {
&gt; +        push(@idlUnionMemberTypes, &quot;IDLNull&quot;);
&gt; +    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237275</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-06 12:53:32 -0700</bug_when>
    <thetext>Sorry, my review comments (trivial tiny things) showed up just as you posted your new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237994</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-08 12:09:46 -0700</bug_when>
    <thetext>Committed r206956: &lt;http://trac.webkit.org/changeset/206956&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290620</attachid>
            <date>2016-10-04 10:55:38 -0700</date>
            <delta_ts>2016-10-04 11:40:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004105228.patch</filename>
            <type>text/plain</type>
            <size>66222</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFT
dHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1lZGlh
U3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQoKSk7CisgICAgICAgIG1lZGlhU3RyZWFt
SWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBzZW5kZXIgPSBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1l
ZGlhU3RyZWFtLWJhc2VkIEFQSSAobW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykK
ICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFj
az4mJiwgY29uc3QgVmVjdG9yPFJlZjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcyOSw4ICsyNzI5LDYgQEAKIAkJN0Mx
RTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRTk3MjYxQTlGOTgzNDAw
N0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdG
OThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAv
KiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAz
OEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmggKi87IH07Ci0JCTdDMzNGMzVBMUI0QTA0NDgwMDUwMkNBRiAvKiBK
U0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3Vt
ZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwICovOyB9OwogCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTI3NjQsOCArMjc2Miw2IEBACiAJCTdD
Nzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTdD
Nzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovOyB9OwogCQk3Qzgz
REU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyog
U3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDOTFBMzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05v
ZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovOyB9
OwotCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhFMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovOyB9OwogCQk3QzkzRjM0OTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk3QzkzRjM0QTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBp
bGVyLmNwcCAqLzsgfTsKQEAgLTk4MjUsOCArOTgyMSw2IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQw
MDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMzRjM1
QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk4NzIsOCArOTg2Niw2IEBACiAJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAv
KiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2Myw4ICsyMTA1NSw2
IEBACiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5o
ICovLAogCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2su
Y3BwICovLAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJh
Y2suaCAqLywKLQkJCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
Y3BwICovLAotCQkJCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5o
ICovLAogCQkJCUNCMzhGRDU1MUNEMjFENUIwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnlD
dXN0b20uY3BwICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKQEAgLTIxMTE2LDcgKzIxMTA2LDYgQEAKIAkJ
CQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLywKLQkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyog
SlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTdDRUYyNjE4MUQ2QTky
RTMwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCkBAIC0yMTEzOCw3ICsyMTEyNyw2
IEBACiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmgg
Ki8sCiAJCQkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRU
eXBlQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNET01N
aW1lVHlwZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QTBENzQ2NUU3MDA2NDQyRTkg
LyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEIwRDc0NjVFNzAw
NjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCAqLywKQEAgLTI1MjEwLDcgKzI1MTk4LDYg
QEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNOb2RlTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M5MUEzOTAxQjQ5OEFCRTAwM0Y5RUZBIC8q
IEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAz
QjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E2MTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFFQzFFMjkxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTkwLDcgKzI4NTc3LDYgQEAKIAkJCQlGREEx
NUVBMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUYzMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U0NoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzM0YzNUExQjRBMDQ0ODAw
NTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY2Miw3ICsyODY0OCw2IEBACiAJCQkJ
N0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA1RjFDMDJCNDQ0MDA2QTFBMDAgLyogSlNEb2N1bWVu
dFRpbWVsaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1MDlEMUNDNjAwMDBCRTMy
NSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1RTFCNEEw
NENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2MzA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEN0MwMEQyOUE0NjMwMEI5OTE4RiAvKiBK
U0RPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkyNCw3ICsyODkwOSw2
IEBACiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMkMyMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcwMDVDOTBBMiAv
KiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDOTFBMzhGMUI0OThB
QkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUw
M0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxRUMxRTI4MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDaGFyYWN0ZXJEYXRhLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1Zh
bHVlIEpTQ2hhcmFjdGVyRGF0YTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFm
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0
ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdp
dGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDQ2ICszNDEsNiBAQCB0ZW1wbGF0
ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgVmFyaWFk
aWNIZWxwZXJCYXNlIHsKLSAgICB1c2luZyBJdGVtID0gRE9NQ2xhc3M7Ci0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxET01D
bGFzcz4gVHJhaXRzVHlwZTsKLSAgICAgICAgRE9NQ2xhc3MgaW5kZXhWYWx1ZTsKLSAgICAgICAg
aWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShzdGF0ZSwganNWYWx1ZSwgaW5kZXhWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7
Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+Ci1zdHJ1Y3QgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhSlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQnVpbHRp
bj46OnR5cGU+IHsKLSAgICB1c2luZyBDbGFzcyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsK
LSAgICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47Ci0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgYXV0byogdmFsdWUgPSBKU0NsYXNzOjp0b1dyYXBw
ZWQoanNWYWx1ZSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+KCp2YWx1ZSk7Ci0gICAgfQotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+Ci1zdHJ1Y3Qg
VmFyaWFkaWNIZWxwZXIgOiBwdWJsaWMgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNs
YXNzPiB7Ci0gICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyQmFzZTxKU0Ns
YXNzLCBET01DbGFzcz46Okl0ZW07Ci0gICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OwotCi0gICAgc3RydWN0IFJlc3VsdCB7Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4Owot
ICAgICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKLSAgICB9OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpS
ZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9IDAp
OwogCiAvLyBJbmxpbmUgZnVuY3Rpb25zIGFuZCB0ZW1wbGF0ZSBkZWZpbml0aW9ucy4KIApAQCAt
ODkzLDI0ICs4NTMsNiBAQCBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWlj
CiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBwcm9wZXJ0eU5h
bWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpSZXN1bHQgdG9B
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qgc3RhcnRJbmRleCkKLXsKLSAg
ICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwotICAgIGlmIChzdGFydElu
ZGV4ID4gbGVuZ3RoKQotICAgICAgICByZXR1cm4geyAwLCBOdWxsb3B0IH07Ci0KLSAgICB0eXBl
bmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29udGFpbmVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChp
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0
IH07Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh2YWx1ZS52YWx1ZSgp
KSk7Ci0gICAgfQotICAgIHJldHVybiB7IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0K
IHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIw
Njc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw0NSArNzMsNzUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSlNUPiBpbmxpbgogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0Q29udmVydGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIERlcml2ZWQ+IHN0cnVjdCBCYXNlQ29udmVydGVyIHsKICAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gT3B0aW9uYWw8VD47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gY29udmVydEZhaWxh
YmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBEZXJpdmVkOjpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51
bGxvcHQpOworCisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlPiBzdHJ1Y3QgQ29udmVydGVyIDog
RGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFi
bGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4gewog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGJvb2w+IDogRGVmYXVsdENvbnZlcnRl
cjxib29sPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBCYXNlQ29udmVy
dGVyPGJvb2wsIENvbnZlcnRlcjxib29sPj4gewogICAgIHN0YXRpYyBib29sIGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsdWUudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPFN0cmluZz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAg
IHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFu
IGFuIG9wdGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxTdHJpbmc+IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxTdHJpbmc+
PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IERlZmF1bHRDb252
ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsgLy8gVXNl
IG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50Lgor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERPTVN0cmluZz4gOiBCYXNlQ29udmVydGVy
PFN0cmluZywgQ29udmVydGVyPElETERPTVN0cmluZz4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExVU1ZTdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsKLSAgICB1c2lu
ZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8gbWVhbiBhbiBv
cHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMVVNWU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0ZXI8SURMRE9N
U3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAgICAgc3RhdGlj
IFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlVG9VU1ZTdHJpbmcoJnN0YXRlLCB2YWx1ZSk7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPEpTQzo6SlNWYWx1ZT4g
OiBEZWZhdWx0Q29udmVydGVyPEpTQzo6SlNWYWx1ZT4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IDogQmFzZUNvbnZlcnRlcjxSZWY8VD4s
IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9
IFJlZlB0cjxUPjsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1lIEpTRE9NV3JhcHBl
ckNvbnZlcnRlclRyYWl0czxUPjo6V3JhcHBlckNsYXNzOworCisgICAgc3RhdGljIE9wdGlvbmFs
PFJlZjxUPj4gY29udmVydEZhaWxhYmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byBv
YmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICAgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVy
biAqb2JqZWN0OworICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxKU0M6
OkpTVmFsdWU+IDogQmFzZUNvbnZlcnRlcjxKU0M6OkpTVmFsdWUsIENvbnZlcnRlcjxKU0M6OkpT
VmFsdWU+PiB7CiAgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IEpTQzo6SlNWYWx1ZTsgLy8gVXNl
IGpzVW5kZWZpbmVkKCkgdG8gbWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQu
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQogICAgIHsKQEAgLTExOSwxNCArMTQ5LDE0IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxKU0M6OkpTVmFsdWUKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFZlY3RvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFZlY3Rv
cjxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+
IDogQmFzZUNvbnZlcnRlcjxWZWN0b3I8VD4sIENvbnZlcnRlcjxWZWN0b3I8VD4+PiB7CiAgICAg
c3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4oc3RhdGUs
IHZhbHVlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90
PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8aW50OF90PiA6IEJhc2VDb252ZXJ0ZXI8aW50OF90LCBDb252ZXJ0ZXI8aW50OF90Pj4gewog
ICAgIHN0YXRpYyBpbnQ4X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24p
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE0MSw3ICsxNzEs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlCiAgICAgfQogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRGVmYXVsdENvbnZlcnRl
cjx1aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDhfdD4gOiBCYXNl
Q29udmVydGVyPHVpbnQ4X3QsIENvbnZlcnRlcjx1aW50OF90Pj4gewogICAgIHN0YXRpYyB1aW50
OF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0xNTYsNyArMTg2LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MTZfdD4gewor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDE2X3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQx
Nl90LCBDb252ZXJ0ZXI8aW50MTZfdD4+IHsKICAgICBzdGF0aWMgaW50MTZfdCBjb252ZXJ0KEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29u
ZmlndXJhdGlvbikgewpAQCAtMTcxLDcgKzIwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxpbnQxNl90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8dWludDE2X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50MTZfdD4gewordGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQxNl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDE2X3QsIENvbnZl
cnRlcjx1aW50MTZfdD4+IHsKICAgICBzdGF0aWMgdWludDE2X3QgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRp
b24pIHsKQEAgLTE4Niw3ICsyMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWlu
dDE2X3Q+IDogCiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMy
X3Q+IDogRGVmYXVsdENvbnZlcnRlcjxpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJ0ZXI8aW50MzJfdD4gOiBCYXNlQ29udmVydGVyPGludDMyX3QsIENvbnZlcnRlcjxpbnQzMl90
Pj4gewogICAgIHN0YXRpYyBpbnQzMl90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0yMDEs
NyArMjMxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRAogICAg
IH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiBEZWZhdWx0
Q29udmVydGVyPHVpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMy
X3Q+IDogQmFzZUNvbnZlcnRlcjx1aW50MzJfdCwgQ29udmVydGVyPHVpbnQzMl90Pj4gewogICAg
IHN0YXRpYyB1aW50MzJfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMjE2LDcgKzI0Niw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiAKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBEZWZhdWx0Q29udmVydGVy
PGludDY0X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEJhc2VD
b252ZXJ0ZXI8aW50NjRfdCwgQ29udmVydGVyPGludDY0X3Q+PiB7CiAgICAgc3RhdGljIGludDY0
X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBpZiAodmFsdWUuaXNJbnQzMigpKQpAQCAtMjM0LDcgKzI2NCw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8dWludDY0X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50NjRfdD4gewordGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDY0
X3QsIENvbnZlcnRlcjx1aW50NjRfdD4+IHsKICAgICBzdGF0aWMgdWludDY0X3QgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUu
aXNVSW50MzIoKSkKQEAgLTI1Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8dWludDY0X3Q+IDogCiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IENvbnZlcnRlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZT46OnR5cGU+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBCYXNlQ29udmVydGVyPFQs
IENvbnZlcnRlcjxUPj4gewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAg
IHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwpAQCAtMzA0LDcgKzMzNCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIExpc3QsIGJvb2wgY29uZGl0aW9uPgogdXNpbmcgQ29uZGl0aW9u
YWxGcm9udCA9IHR5cGVuYW1lIERldGFpbDo6Q29uZGl0aW9uYWxGcm9udDxMaXN0LCBjb25kaXRp
b24+Ojp0eXBlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotc3RydWN0IENvbnZlcnRlcjxJ
RExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+
OjpJbXBsZW1lbnRhdGlvblR5cGU+CitzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6
IEJhc2VDb252ZXJ0ZXI8dHlwZW5hbWUgSURMVW5pb248VC4uLj46OkltcGxlbWVudGF0aW9uVHlw
ZSwgQ29udmVydGVyPElETFVuaW9uPFQuLi4+Pj4KIHsKICAgICB1c2luZyBUeXBlID0gSURMVW5p
b248VC4uLj47CiAgICAgdXNpbmcgVHlwZUxpc3QgPSB0eXBlbmFtZSBUeXBlOjpUeXBlTGlzdDsK
QEAgLTQwOCw0ICs0MzgsMzUgQEAgc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBE
ZWZhdQogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgVmFy
aWFkaWNDb252ZXJ0ZXJSZXN1bHQgeworICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OworCisgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXggPSAwOworICAgIE9wdGlvbmFsPENvbnRhaW5l
cj4gYXJndW1lbnRzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gVmFyaWFkaWND
b252ZXJ0ZXJSZXN1bHQ8SURMVHlwZT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgc2l6ZV90IHN0YXJ0SW5kZXgpCit7CisgICAgYXV0byYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IHNpemVfdCBsZW5ndGggPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0YXJ0SW5k
ZXggPiBsZW5ndGgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRp
Y0NvbnZlcnRlclJlc3VsdDxJRExUeXBlPjo6Q29udGFpbmVyIHJlc3VsdDsKKyAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXV0byB2
YWx1ZSA9IENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydEZhaWxhYmxlKHN0YXRlLCBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4geyBpLCBOdWxsb3B0IH07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RG
TW92ZSgqdmFsdWUpKTsKKyAgICB9CisgICAgcmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3Vs
dCkgfTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2Nzcy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3Rv
bS5oIgogI2luY2x1ZGUgIkpTSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5o
IgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNYTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAt
MTA4LDI0ICsxMDcsNiBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
CiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERv
Y3VtZW50Pihkb2N1bWVudCkpOwogfQogCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhl
Y1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVk
KCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQot
SlNWYWx1ZSBKU0RvY3VtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpT
VmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRG
cmFnbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDMxICsyNywxMiBAQAogI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5j
bHVkZSAiSlNTaGFkb3dSb290LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQoRXhlY1N0
YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCku
cHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNW
YWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwot
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1l
bnRGcmFnbWVudD4mJiBpbXBsKQogewogICAgIGlmIChpbXBsLT5pc1NoYWRvd1Jvb3QoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEb2N1bWVudFR5
cGUuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0
cmluZy5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwot
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6
OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgd3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0
YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNl
V2l0aCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw2IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpT
Tm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTc1LDQ5
ICs3NCw0IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICBy
ZXR1cm4gY3JlYXRlTmV3RWxlbWVudFdyYXBwZXIoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1l
bnQpKTsKIH0KIAotSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2Rl
T3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50
OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQotSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRo
KHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpT
RWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYg
c3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVu
ZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZU9yU3RyaW5nLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmlu
Zy5oIgotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIK
LSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rocm93U2NvcGUuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50
YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIE5vZGVPclN0cmluZ1R5cGUgPSBJRExVbmlvbjxJ
RExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz47Ci0gICAgdXNpbmcgQ29udmVydGVyVHlw
ZSA9IENvbnZlcnRlcjxOb2RlT3JTdHJpbmdUeXBlPjsKLQotICAgIHVzaW5nIEludGVyZmFjZVR5
cGVMaXN0ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6SW50ZXJmYWNlVHlwZUxpc3Q7Ci0gICAg
dXNpbmcgSW50ZXJmYWNlVHlwZSA9IGJyaWdhbmQ6OmZyb250PEludGVyZmFjZVR5cGVMaXN0PjsK
LSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxJbnRlcmZhY2VUeXBlLCBJRExJbnRlcmZh
Y2U8Tm9kZT4+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxJ
bnRlcmZhY2VUeXBlTGlzdD46OnZhbHVlID09IDEsICIiKTsKLQotICAgIHVzaW5nIFN0cmluZ1R5
cGVMaXN0ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZUxpc3Q7Ci0gICAgdXNp
bmcgU3RyaW5nVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlN0cmluZ1R5cGU7Ci0gICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8U3RyaW5nVHlwZSwgSURMRE9NU3RyaW5nPjo6dmFs
dWUsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJyaWdhbmQ6OnNpemU8U3RyaW5nVHlwZUxpc3Q+
Ojp2YWx1ZSA9PSAxLCAiIik7Ci0KLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIHNpemVfdCBhcmd1bWVudENv
dW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwotCi0gICAgVmVjdG9yPHR5cGVuYW1lIE5vZGVP
clN0cmluZ1R5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKLSAgICAgICAgIGF1dG8gaXRlbSA9IENvbnZl
cnRlclR5cGU6OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoaXRlbSkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuaAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gKLSNkZWZp
bmUgSlNOb2RlT3JTdHJpbmdfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpT
QyB7Ci1jbGFzcyBFeGVjU3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
Tm9kZTsKLQotVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3Ry
aW5nPj4gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoSlNDOjpFeGVjU3RhdGUmKTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSlNOb2RlT3JTdHJpbmdWZWN0b3JfaApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQko
cmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIHBhY2thZ2UgQ29k
ZUdlbmVyYXRvcjsKIHVzZSBzdHJpY3Q7CiAKIHVzZSBGaWxlOjpGaW5kOwordXNlIENhcnAgcXc8
bG9uZ21lc3M+OwordXNlIERhdGE6OkR1bXBlcjsKIAogbXkgJHVzZURvY3VtZW50ID0gIiI7CiBt
eSAkdXNlR2VuZXJhdG9yID0gIiI7CkBAIC0xMzksNiArMTQxLDE2IEBAIG15ICVzdmdUeXBlV2l0
aFdyaXRhYmxlUHJvcGVydGllc05lZWRpbmcKIG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRl
cmZhY2VzID0ge307CiAKK3N1YiBhc3NlcnQKK3sKKyAgICBteSAkbWVzc2FnZSA9IHNoaWZ0Owor
ICAgIAorICAgIG15ICRtZXNzID0gbG9uZ21lc3MoKTsKKyAgICBwcmludCBEdW1wZXIoJG1lc3Mp
OworCisgICAgZGllICRtZXNzYWdlOworfQorCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBu
ZXcKIHsKQEAgLTMxMCw2ICszMjIsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgcmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1l
IGVxICdPYmplY3QnOworICAgIHJldHVybiB1bmRlZiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAnVU5J
T04nOwogCiAgICAgaWYgKGV4aXN0cyAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1l
fSkgewogICAgICAgICByZXR1cm4gJGNhY2hlZEludGVyZmFjZXMtPnskaW50ZXJmYWNlTmFtZX07
CkBAIC0zMTcsNyArMzMwLDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAgICAjIFN0ZXAgIzE6
IEZpbmQgdGhlIElETCBmaWxlIGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRm
aWxlbmFtZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCi0g
ICAgICAgIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRp
bnRlcmZhY2VOYW1lXCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFt
ZSAuICJcIiFcbiIpOworICAgICAgICBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxl
IGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiLCByZWFjaGFibGUgZnJvbSBcIiIgLiAk
b3V0ZXJJbnRlcmZhY2UtPm5hbWUgLiAiXCIhXG4iKTsKIAogICAgIHByaW50ICIgIHwgIHw+ICBQ
YXJzaW5nIHBhcmVudCBJREwgXCIkZmlsZW5hbWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFj
ZU5hbWVcIlxuIiBpZiAkdmVyYm9zZTsKIApAQCAtNjEyLDYgKzYyNSwxMDggQEAgc3ViIEdldFNl
cXVlbmNlT3JGcm96ZW5BcnJheUlubmVyVHlwZQogICAgIHJldHVybiAiIjsKIH0KIAorIyBodHRw
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1mbGF0dGVuZWQtdW5pb24tbWVtYmVyLXR5
cGVzCitzdWIgR2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlk
bFVuaW9uVHlwZSkgPSBAXzsKKworICAgIG15IEBmbGF0dGVuZWRNZW1iZXJUeXBlcyA9ICgpOwor
CisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoQHskaWRsVW5pb25UeXBlLT5zdWJ0eXBlc30p
IHsKKyAgICAgICAgaWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICBwdXNo
IEBmbGF0dGVuZWRNZW1iZXJUeXBlcywgJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMo
JG1lbWJlclR5cGUpCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVu
ZWRNZW1iZXJUeXBlcywgJG1lbWJlclR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gQGZsYXR0ZW5lZE1lbWJlclR5cGVzOworfQorCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGZuLW51bWJlci1vZi1udWxsYWJsZS1tZW1iZXItdHlwZXMKK3N1YiBHZXROdW1i
ZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlw
ZSkgPSBAXzsKKworICAgIG15ICRjb3VudCA9IDA7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJU
eXBlIChAeyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5
cGUtPmlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICRjb3VudCsrOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICAkY291bnQgKz0g
JG9iamVjdC0+R2V0TnVtYmVyT2ZOdWxsYWJsZU1lbWJlclR5cGVzKCRtZW1iZXJUeXBlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAkY291bnQ7Cit9CisKK3N1YiBHZXRJRExVbmlv
bk1lbWJlclR5cGVzCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxVbmlvblR5
cGUpID0gQF87CisKKyAgICBteSAkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPSAkb2JqZWN0LT5H
ZXROdW1iZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSk7CisgICAgaWYgKCRu
dW1iZXJPZk51bGxhYmxlTWVtYmVycyA+IDEpIHsKKyAgICAgICAgYXNzZXJ0KCJVbmlvbiB0eXBl
cyBtdXN0IG9ubHkgaGF2ZSAwIG9yIDEgbnVsbGFibGUgdHlwZXMuIik7CisgICAgfQorCisgICAg
bXkgQGlkbFVuaW9uTWVtYmVyVHlwZXMgPSAoKTsKKworICAgIGlmICgkbnVtYmVyT2ZOdWxsYWJs
ZU1lbWJlcnMgPT0gMSkgeworICAgICAgICBwdXNoIEBpZGxVbmlvbk1lbWJlclR5cGVzLCAiSURM
TnVsbCI7CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoJG9iamVjdC0+R2V0
RmxhdHRlbmVkTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSkpIHsKKyAgICAgICAgcHVzaCBAaWRs
VW5pb25NZW1iZXJUeXBlcywgJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJG1l
bWJlclR5cGUpOworICAgIH0KKworICAgIHJldHVybiBAaWRsVW5pb25NZW1iZXJUeXBlczsKK30K
Kworc3ViIEdldEJhc2VJRExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRp
ZGxUeXBlKSA9IEBfOworCisgICAgbXkgJUlETFR5cGVzID0gKAorICAgICAgICAiYW55IiA9PiAi
SURMQW55IiwKKyAgICAgICAgImJvb2xlYW4iID0+ICJJRExCb29sZWFuIiwKKyAgICAgICAgImJ5
dGUiID0+ICJJRExCeXRlIiwKKyAgICAgICAgIm9jdGV0IiA9PiAiSURMT2N0ZXQiLAorICAgICAg
ICAic2hvcnQiID0+ICJJRExTaG9ydCIsCisgICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIklE
TFVuc2lnbmVkU2hvcnQiLAorICAgICAgICAibG9uZyIgPT4gIklETExvbmciLAorICAgICAgICAi
dW5zaWduZWQgbG9uZyIgPT4gIklETFVuc2lnbmVkTG9uZyIsCisgICAgICAgICJsb25nIGxvbmci
ID0+ICJJRExMb25nTG9uZyIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJJRExV
bnNpZ25lZExvbmdMb25nIiwKKyAgICAgICAgImZsb2F0IiA9PiAiSURMRmxvYXQiLAorICAgICAg
ICAidW5yZXN0cmljdGVkIGZsb2F0IiA9PiAiSURMVW5yZXN0cmljdGVkRmxvYXQiLAorICAgICAg
ICAiZG91YmxlIiA9PiAiSURMRG91YmxlIiwKKyAgICAgICAgInVucmVzdHJpY3RlZCBkb3VibGUi
ID0+ICJJRExVbnJlc3RyaWN0ZWREb3VibGUiLAorICAgICAgICAiRE9NU3RyaW5nIiA9PiAiSURM
RE9NU3RyaW5nIiwKKyAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJJRExCeXRlU3RyaW5nIiwKKyAg
ICAgICAgIlVTVlN0cmluZyIgPT4gIklETFVTVlN0cmluZyIsCisgICAgKTsKKworICAgIHJldHVy
biAkSURMVHlwZXN7JGlkbFR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkSURMVHlwZXN7JGlkbFR5cGUt
Pm5hbWV9OworICAgIHJldHVybiAiSURMRW51bWVyYXRpb248IiAuICRvYmplY3QtPkdldEVudW1l
cmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2UsICRpZGxUeXBlLT5uYW1lKSAuICI+IiBpZiAkb2Jq
ZWN0LT5Jc0VudW1UeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETERpY3Rpb25h
cnk8IiAuICRvYmplY3QtPkdldERpY3Rpb25hcnlDbGFzc05hbWUoJGludGVyZmFjZSwgJGlkbFR5
cGUtPm5hbWUpIC4gIj4iIGlmICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJGlkbFR5cGUtPm5h
bWUpOworICAgIHJldHVybiAiSURMU2VxdWVuY2U8IiAuICRvYmplY3QtPkdldElETFR5cGUoJGlu
dGVyZmFjZSwgQHskaWRsVHlwZS0+c3VidHlwZXN9WzBdKSAuICI+IiBpZiAkb2JqZWN0LT5Jc1Nl
cXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJRExGcm96ZW5BcnJheTwi
IC4gJG9iamVjdC0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31b
MF0pIC4gIj4iIGlmICRvYmplY3QtPklzRnJvemVuQXJyYXlUeXBlKCRpZGxUeXBlLT5uYW1lKTsK
KyAgICByZXR1cm4gIklETFVuaW9uPCIgLiBqb2luKCIsICIsICRvYmplY3QtPkdldElETFVuaW9u
TWVtYmVyVHlwZXMoJGludGVyZmFjZSwgJGlkbFR5cGUpKSAuICI+IiBpZiAkaWRsVHlwZS0+aXNV
bmlvbjsKKyAgICByZXR1cm4gIklETEludGVyZmFjZTwiIC4gJGlkbFR5cGUtPm5hbWUgLiAiPiI7
Cit9CisKK3N1YiBHZXRJRExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRp
ZGxUeXBlKSA9IEBfOworCisgICAgbXkgJGJhc2VJRExUeXBlID0gJG9iamVjdC0+R2V0QmFzZUlE
TFR5cGUoJGludGVyZmFjZSwgJGlkbFR5cGUpOworICAgIHJldHVybiAiSURMTnVsbGFibGU8IiAu
ICRiYXNlSURMVHlwZSAuICI+IiBpZiAkaWRsVHlwZS0+aXNOdWxsYWJsZTsKKyAgICByZXR1cm4g
JGJhc2VJRExUeXBlOworfQorCiAjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmly
c3QgZGVmaW5lZCBpbiBidWlsdGluc19nZW5lcmF0b3IucHkuCiAjIFVwcGVyY2FzZSB0aGUgZmly
c3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUu
Zy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVz
IFhtbGxhbmcuCkBAIC03OTEsNiArOTA2LDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIAogICAgIHJl
dHVybiAwIGlmICEkb2JqZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlm
ICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBl
IGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAK
ICAgICByZXR1cm4gMTsKQEAgLTgwNCw3ICs5MjAsNyBAQCBzdWIgZ2V0SW50ZXJmYWNlRXh0ZW5k
ZWRBdHRyaWJ1dGVzRnJvbU5hCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gc2hpZnQ7CiAKLSAgICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVG
b3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZp
bGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4iKTsKKyAgICBteSAkaWRsRmls
ZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGFzc2Vy
dCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1l
XCIhXG4iKTsKIAogICAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgICAgbXkg
QGxpbmVzID0gPEZJTEU+OwpAQCAtODM2LDcgKzk1Miw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFj
a0ludGVyZmFjZQogCiAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJUeXBlKCR0
eXBlKTsKIAotICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5
cGUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBl
XCIhXG4iKTsKKyAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0
eXBlKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIk
dHlwZVwiIVxuIik7CiAKICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkg
QGxpbmVzID0gPEZJTEU+OwpAQCAtODcyLDcgKzk4OCw3IEBAIHN1YiBDb21wdXRlSXNGdW5jdGlv
bk9ubHlDYWxsYmFja0ludGVyZmEKIAogICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxs
YmFja0ludGVyZmFjZSgkdHlwZSk7CiAKLSAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxl
Rm9ySW50ZXJmYWNlKCR0eXBlKSBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBp
bnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CisgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmls
ZUZvckludGVyZmFjZSgkdHlwZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBm
b3IgaW50ZXJmYWNlIFwiJHR5cGVcIiFcbiIpOwogCiAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmls
ZSBvciBkaWU7CiAgIG15IEBsaW5lcyA9IDxGSUxFPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDY3
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSwyOCBAQCBzdWIgQWRkSW5jbHVkZXNGb3JU
eXBlCiAgICAgfQogfQogCitzdWIgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlCit7CisgICAg
bXkgKCRpZGxUeXBlLCAkY29uZGl0aW9uYWwpID0gQF87CisKKyAgICByZXR1cm4gaWYgJGNvZGVH
ZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRpZGxUeXBlLT5uYW1lKTsKKworICAgIGlmICgk
aWRsVHlwZS0+aXNVbmlvbikgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9WYXJp
YW50Lmg+IiwgJGNvbmRpdGlvbmFsKTsKKworICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBl
IChAeyRpZGxUeXBlLT5zdWJ0eXBlc30pIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
Rm9ySURMVHlwZSgkbWVtYmVyVHlwZSwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJGlkbFR5cGUtPm5hbWUpKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAk
aWRsVHlwZS0+bmFtZSAuICIuaCIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiBzdWIg
QWRkVG9JbXBsSW5jbHVkZXMKIHsKICAgICBteSAkaGVhZGVyID0gc2hpZnQ7CkBAIC0zOTA0LDYg
KzM5MjYsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkYXJndW1lbnRJ
bmRleCA9IDA7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOworICAgICAgICBt
eSAkaWRsVHlwZSA9ICRwYXJhbWV0ZXItPmlkbFR5cGU7CiAKICAgICAgICAgZGllICJPcHRpb25h
bCBwYXJhbWV0ZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9y
dGVkIiBpZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICEkcGFyYW1ldGVyLT5pc051bGxhYmxl
ICYmICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICAgICAgZGllICJP
cHRpb25hbCBwYXJhbWV0ZXJzIHByZWNlZGluZyB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBub3Qg
c3VwcG9ydGVkIiBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAgQHskZnVuY3Rpb24tPnBh
cmFtZXRlcnN9WyRudW1QYXJhbWV0ZXJzIC0gMV0tPmlzVmFyaWFkaWMpOwpAQCAtMzk2NSwxNyAr
Mzk4OCwxMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgIH0gZWxzaWYgKCRw
YXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
UyR7dHlwZX0uaCIsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH0pIHVubGVzcyAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5
cGUpIG9yICEkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAgICAgICAg
ICBteSAoJHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRpbnRl
cmZhY2UsICR0eXBlKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
ICRuYW1lID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3JhcHBl
ZFR5cGU+Pigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOwotCi0gICAgICAgICAgICBpZiAo
SXNOYXRpdmVUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
O1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEkbmFtZS5hcmd1bWVudHMpXG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJG5hbWUuYXJndW1lbnRJbmRleCwg
XCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1l
LCBcIiR0eXBlXCIpO1xuIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJKU0RPTUNvbnZlcnQuaCJ9ID0gMTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
Rm9ySURMVHlwZSgkaWRsVHlwZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgIAorICAgICAgICAgICAgbXkgJG1ldGFUeXBl
ID0gJGNvZGVHZW5lcmF0b3ItPkdldElETFR5cGUoJGludGVyZmFjZSwgJGlkbFR5cGUpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjb252ZXJ0VmFy
aWFkaWNBcmd1bWVudHM8JG1ldGFUeXBlPigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKTsKKwogICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUuYXJndW1lbnRzLnZhbHVlKCkpIjsKIAogICAgICAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAyMDY3NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsMTMgQEAgc3RydWN0KCBpZGxEb2N1bWVudCA9PiB7CiAgICAgZmls
ZU5hbWUgPT4gJyQnLAogfSk7CiAKK3N0cnVjdCggZG9tVHlwZSA9PiB7CisgICAgbmFtZSA9PiAg
ICAgICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKKyAgICBpc051bGxhYmxlID0+ICAgJyQnLCAj
IElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykKKyAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAjIElz
IHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKKyAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFy
cmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKK30pOwor
CiAjIFVzZWQgdG8gcmVwcmVzZW50ICdpbnRlcmZhY2UnIGJsb2Nrcwogc3RydWN0KCBkb21JbnRl
cmZhY2UgPT4gewogICAgIG5hbWUgPT4gJyQnLCAgICAgICMgQ2xhc3MgaWRlbnRpZmllcgpAQCAt
NzksMTggKzg2LDEyIEBAIHN0cnVjdCggZG9tQXR0cmlidXRlID0+IHsKICAgICBzaWduYXR1cmUg
PT4gJyQnLCAgICAgICAgICMgQXR0cmlidXRlIHNpZ25hdHVyZQogfSk7CiAKLXN0cnVjdCggZG9t
VHlwZSA9PiB7Ci0gICAgbmFtZSA9PiAgICAgICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKLSAg
ICBpc051bGxhYmxlID0+ICAgJyQnLCAjIElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykKLSAgICBp
c1VuaW9uID0+ICAgICAgJyQnLCAjIElzIHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKLSAgICBz
dWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFycmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlz
VW5pb24gb3Igc2VxdWVuY2UKLX0pOwotCiAjIFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2
YXJpYWJsZSBuYW1lJyA8LT4gJ3ZhcmlhYmxlIHR5cGUnCiBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9
PiB7CiAgICAgZGlyZWN0aW9uID0+ICckJywgICAjIFZhcmlhYmxlIGRpcmVjdGlvbiAoaW4gb3Ig
b3V0KQogICAgIG5hbWUgPT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSBuYW1lCi0gICAgdHlwZSA9
PiAnJCcgICAgICAsICAjIFZhcmlhYmxlIHR5cGUKKyAgICB0eXBlID0+ICckJywgICAgICAgICMg
VmFyaWFibGUgdHlwZSBuYW1lIChERVBSRUNBVEVEIC0gcGxlYXNlIHVzZSBpZGxUeXBlKQorICAg
IGlkbFR5cGUgPT4gJyQnLCAgICAgIyBWYXJpYWJsZSB0eXBlCiAgICAgc3BlY2lhbHMgPT4gJ0An
LCAgICAjIFNwZWNpYWxzCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRl
ZCBhdHRyaWJ1dGVzCiAgICAgaXNOdWxsYWJsZSA9PiAnJCcsICAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQpAQCAtNzA1LDYgKzcwNiw3IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1i
ZXIKICAgICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwogCiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAg
ICAkbWVtYmVyLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG1lbWJlci0+dHlwZSgkdHlwZS0+
bmFtZSk7CiAgICAgICAgICRtZW1iZXItPmlzTnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwog
CkBAIC0xMjUyLDYgKzEyNTQsNyBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVSZXN0CiAgICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwogICAgICAgICAKICAg
ICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9k
ZS0+c2lnbmF0dXJlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWdu
YXR1cmUtPnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVy
ZS0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTE1NDQsNiArMTU0Nyw3IEBA
IHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAib3B0aW9uYWwiLCBfX0xJTkVfXyk7CiAK
ICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURh
dGFOb2RlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoaWRl
bnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCR0eXBlLT5uYW1lKSk7CiAgICAgICAgICRwYXJh
bURhdGFOb2RlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgJHBhcmFt
RGF0YU5vZGUtPmlzT3B0aW9uYWwoMSk7CkBAIC0xNTUzLDYgKzE1NTcsNyBAQCBzdWIgcGFyc2VP
cHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudAogICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9
PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9uRmll
bGRfMS8pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAg
ICRwYXJhbURhdGFOb2RlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgk
dHlwZS0+aXNOdWxsYWJsZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc09wdGlvbmFsKDAp
OwpAQCAtMTYxNSw2ICsxNjIwLDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAg
JG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAKICAgICAgICAg
bXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNO
dWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA2
NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiArMzU5LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7
ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoRE9NU3Ry
aW5nIGhlYWQsIERPTVN0cmluZy4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0
aG9kKHVucmVzdHJpY3RlZCBkb3VibGUgaGVhZCwgdW5yZXN0cmljdGVkIGRvdWJsZS4uLiB0YWls
KTsKICAgICB2b2lkIHZhcmlhZGljTm9kZU1ldGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFpbCk7
CisgICAgdm9pZCB2YXJpYWRpY1VuaW9uTWV0aG9kKERPTVN0cmluZyBoZWFkLCAoTm9kZSBvciBE
T01TdHJpbmcpLi4uIHRhaWwpOwogCiAgICAgLy8gTnVsbGFibGUgYXR0cmlidXRlcy4KICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZT8gbnVsbGFibGVEb3VibGVBdHRy
aWJ1dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCiAjaW5jbHVkZSAiSlNUZXN0T2JqZWN0QS5oIgpAQCAtOTcxLDYgKzk3Miw3IEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1VuaW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU3Nyw2
ICsxNTc5LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAg
IHsgInZhcmlhZGljU3RyaW5nTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsg
InZhcmlhZGljRG91YmxlTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljRG91YmxlTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZh
cmlhZGljTm9kZU1ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY05vZGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAidmFyaWFkaWNV
bmlvbk1ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y1VuaW9uTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImFueSIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAg
ICAgeyAidGVzdFByb21pc2VGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
InRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQp
LCAoaW50cHRyX3QpICgxKSB9IH0sCkBAIC02NjE5LDkgKzY2MjIsOCBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBh
dXRvIGJsb2JBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNCbG9iLCBCbG9iPj4o
KnN0YXRlLCAwKTsKLSAgICBpZiAoIWJsb2JBcmdzLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBibG9iQXJncy5hcmd1
bWVudEluZGV4LCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwg
IkJsb2IiKTsKKyAgICBhdXRvIGJsb2JBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElE
TEludGVyZmFjZTxCbG9iPj4oKnN0YXRlLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKGJsb2JBcmdzLmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTcxMzcsNyArNzEzOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8
SlNDOjpKU1ZhbHVlLCBTdHJpbmc+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZl
cnRWYXJpYWRpY0FyZ3VtZW50czxJRExET01TdHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZh
cmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMu
dmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC03MTU4LDcgKzcxNjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVy
dDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTaG91bGRBbGxv
d05vbkZpbml0ZTo6WWVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVs
cGVyPEpTQzo6SlNWYWx1ZSwgZG91YmxlPj4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgaW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRh
aWwuYXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNzE4MCwxMyArNzE4MiwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAgICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQogICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAs
ICJoZWFkIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKLSAg
ICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU05vZGUsIE5vZGU+Pigq
c3RhdGUsIDEpOwotICAgIGlmICghdGFpbC5hcmd1bWVudHMpCi0gICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgdGFpbC5hcmd1bWVudEluZGV4
LCAidGFpbCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Cisg
ICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxOb2Rl
Pj4oKnN0YXRlLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3Zl
KHRhaWwuYXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljVW5pb25NZXRob2QiKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgYXV0byBoZWFkID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKHN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJ
RExVbmlvbjxJRExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBpbXBsLnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFy
Z3VtZW50cy52YWx1ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
dmVydC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtMTM3LDcgKzEz
OCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwog
ICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKLSAgICBhdXRvIGxvbmdBcmdzID0gdG9Bcmd1bWVudHM8
VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVlLCBpbnQzMl90Pj4oKnN0YXRlLCAwKTsKKyAgICBh
dXRvIGxvbmdBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+KCpzdGF0ZSwg
MCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUo
V1RGTW92ZShsb25nQXJncykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5
Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0
KSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4
ICsyMiw4IEBACiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5v
ZGUgewotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2
b2lkIGJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJs
ZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBhZnRlcigoTm9kZSBvciBE
T01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb24sIEN1c3RvbV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmVm
b3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVw
bGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAgICAgW1Vuc2NvcGFibGUs
IE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vUGFyZW50Tm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9QYXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAKLSAgICBbVW5z
Y29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBwcmVwZW5kKChO
b2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4u
IG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
cHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOwogCiAgICAgLy8gW1Vuc2NvcGFibGVdIEVsZW1lbnQ/IHF1ZXJ5KERPTVN0cmlu
ZyByZWxhdGl2ZVNlbGVjdG9ycyk7CiAgICAgLy8gW05ld09iamVjdCwgVW5zY29wYWJsZV0gRWxl
bWVudHMgcXVlcnlBbGwoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290627</attachid>
            <date>2016-10-04 11:40:45 -0700</date>
            <delta_ts>2016-10-04 11:52:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004113734.patch</filename>
            <type>text/plain</type>
            <size>66149</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFT
dHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1lZGlh
U3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQoKSk7CisgICAgICAgIG1lZGlhU3RyZWFt
SWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBzZW5kZXIgPSBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1l
ZGlhU3RyZWFtLWJhc2VkIEFQSSAobW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykK
ICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFj
az4mJiwgY29uc3QgVmVjdG9yPFJlZjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcyOSw4ICsyNzI5LDYgQEAKIAkJN0Mx
RTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRTk3MjYxQTlGOTgzNDAw
N0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdG
OThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAv
KiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAz
OEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmggKi87IH07Ci0JCTdDMzNGMzVBMUI0QTA0NDgwMDUwMkNBRiAvKiBK
U0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3Vt
ZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwICovOyB9OwogCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTI3NjQsOCArMjc2Miw2IEBACiAJCTdD
Nzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTdD
Nzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovOyB9OwogCQk3Qzgz
REU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyog
U3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDOTFBMzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05v
ZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovOyB9
OwotCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhFMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovOyB9OwogCQk3QzkzRjM0OTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk3QzkzRjM0QTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBp
bGVyLmNwcCAqLzsgfTsKQEAgLTk4MjUsOCArOTgyMSw2IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQw
MDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMzRjM1
QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk4NzIsOCArOTg2Niw2IEBACiAJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAv
KiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2Myw4ICsyMTA1NSw2
IEBACiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5o
ICovLAogCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2su
Y3BwICovLAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJh
Y2suaCAqLywKLQkJCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
Y3BwICovLAotCQkJCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5o
ICovLAogCQkJCUNCMzhGRDU1MUNEMjFENUIwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnlD
dXN0b20uY3BwICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKQEAgLTIxMTE2LDcgKzIxMTA2LDYgQEAKIAkJ
CQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLywKLQkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyog
SlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTdDRUYyNjE4MUQ2QTky
RTMwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCkBAIC0yMTEzOCw3ICsyMTEyNyw2
IEBACiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmgg
Ki8sCiAJCQkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRU
eXBlQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNET01N
aW1lVHlwZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QTBENzQ2NUU3MDA2NDQyRTkg
LyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEIwRDc0NjVFNzAw
NjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCAqLywKQEAgLTI1MjEwLDcgKzI1MTk4LDYg
QEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNOb2RlTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M5MUEzOTAxQjQ5OEFCRTAwM0Y5RUZBIC8q
IEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAz
QjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E2MTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFFQzFFMjkxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTkwLDcgKzI4NTc3LDYgQEAKIAkJCQlGREEx
NUVBMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUYzMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U0NoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzM0YzNUExQjRBMDQ0ODAw
NTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY2Miw3ICsyODY0OCw2IEBACiAJCQkJ
N0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA1RjFDMDJCNDQ0MDA2QTFBMDAgLyogSlNEb2N1bWVu
dFRpbWVsaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1MDlEMUNDNjAwMDBCRTMy
NSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1RTFCNEEw
NENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2MzA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEN0MwMEQyOUE0NjMwMEI5OTE4RiAvKiBK
U0RPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkyNCw3ICsyODkwOSw2
IEBACiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMkMyMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcwMDVDOTBBMiAv
KiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDOTFBMzhGMUI0OThB
QkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUw
M0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxRUMxRTI4MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDaGFyYWN0ZXJEYXRhLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1Zh
bHVlIEpTQ2hhcmFjdGVyRGF0YTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFm
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0
ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdp
dGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDQ2ICszNDEsNiBAQCB0ZW1wbGF0
ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgVmFyaWFk
aWNIZWxwZXJCYXNlIHsKLSAgICB1c2luZyBJdGVtID0gRE9NQ2xhc3M7Ci0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxET01D
bGFzcz4gVHJhaXRzVHlwZTsKLSAgICAgICAgRE9NQ2xhc3MgaW5kZXhWYWx1ZTsKLSAgICAgICAg
aWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShzdGF0ZSwganNWYWx1ZSwgaW5kZXhWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7
Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+Ci1zdHJ1Y3QgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhSlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQnVpbHRp
bj46OnR5cGU+IHsKLSAgICB1c2luZyBDbGFzcyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsK
LSAgICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47Ci0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgYXV0byogdmFsdWUgPSBKU0NsYXNzOjp0b1dyYXBw
ZWQoanNWYWx1ZSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+KCp2YWx1ZSk7Ci0gICAgfQotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+Ci1zdHJ1Y3Qg
VmFyaWFkaWNIZWxwZXIgOiBwdWJsaWMgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNs
YXNzPiB7Ci0gICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyQmFzZTxKU0Ns
YXNzLCBET01DbGFzcz46Okl0ZW07Ci0gICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OwotCi0gICAgc3RydWN0IFJlc3VsdCB7Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4Owot
ICAgICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKLSAgICB9OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpS
ZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9IDAp
OwogCiAvLyBJbmxpbmUgZnVuY3Rpb25zIGFuZCB0ZW1wbGF0ZSBkZWZpbml0aW9ucy4KIApAQCAt
ODkzLDI0ICs4NTMsNiBAQCBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWlj
CiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBwcm9wZXJ0eU5h
bWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpSZXN1bHQgdG9B
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qgc3RhcnRJbmRleCkKLXsKLSAg
ICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwotICAgIGlmIChzdGFydElu
ZGV4ID4gbGVuZ3RoKQotICAgICAgICByZXR1cm4geyAwLCBOdWxsb3B0IH07Ci0KLSAgICB0eXBl
bmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29udGFpbmVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChp
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0
IH07Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh2YWx1ZS52YWx1ZSgp
KSk7Ci0gICAgfQotICAgIHJldHVybiB7IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0K
IHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIw
Njc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw0NSArNzMsNzUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSlNUPiBpbmxpbgogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0Q29udmVydGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIERlcml2ZWQ+IHN0cnVjdCBCYXNlQ29udmVydGVyIHsKICAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gT3B0aW9uYWw8VD47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gY29udmVydEZhaWxh
YmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBEZXJpdmVkOjpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51
bGxvcHQpOworCisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlPiBzdHJ1Y3QgQ29udmVydGVyIDog
RGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFi
bGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4gewog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGJvb2w+IDogRGVmYXVsdENvbnZlcnRl
cjxib29sPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBCYXNlQ29udmVy
dGVyPGJvb2wsIENvbnZlcnRlcjxib29sPj4gewogICAgIHN0YXRpYyBib29sIGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsdWUudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPFN0cmluZz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAg
IHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFu
IGFuIG9wdGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxTdHJpbmc+IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxTdHJpbmc+
PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IERlZmF1bHRDb252
ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsgLy8gVXNl
IG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50Lgor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERPTVN0cmluZz4gOiBCYXNlQ29udmVydGVy
PFN0cmluZywgQ29udmVydGVyPElETERPTVN0cmluZz4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExVU1ZTdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsKLSAgICB1c2lu
ZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8gbWVhbiBhbiBv
cHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMVVNWU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0ZXI8SURMRE9N
U3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAgICAgc3RhdGlj
IFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlVG9VU1ZTdHJpbmcoJnN0YXRlLCB2YWx1ZSk7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPEpTQzo6SlNWYWx1ZT4g
OiBEZWZhdWx0Q29udmVydGVyPEpTQzo6SlNWYWx1ZT4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IDogQmFzZUNvbnZlcnRlcjxSZWY8VD4s
IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9
IFJlZlB0cjxUPjsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1lIEpTRE9NV3JhcHBl
ckNvbnZlcnRlclRyYWl0czxUPjo6V3JhcHBlckNsYXNzOworCisgICAgc3RhdGljIE9wdGlvbmFs
PFJlZjxUPj4gY29udmVydEZhaWxhYmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byBv
YmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICAgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVy
biAqb2JqZWN0OworICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxKU0M6
OkpTVmFsdWU+IDogQmFzZUNvbnZlcnRlcjxKU0M6OkpTVmFsdWUsIENvbnZlcnRlcjxKU0M6OkpT
VmFsdWU+PiB7CiAgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IEpTQzo6SlNWYWx1ZTsgLy8gVXNl
IGpzVW5kZWZpbmVkKCkgdG8gbWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQu
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQogICAgIHsKQEAgLTExOSwxNCArMTQ5LDE0IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxKU0M6OkpTVmFsdWUKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFZlY3RvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFZlY3Rv
cjxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+
IDogQmFzZUNvbnZlcnRlcjxWZWN0b3I8VD4sIENvbnZlcnRlcjxWZWN0b3I8VD4+PiB7CiAgICAg
c3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4oc3RhdGUs
IHZhbHVlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90
PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8aW50OF90PiA6IEJhc2VDb252ZXJ0ZXI8aW50OF90LCBDb252ZXJ0ZXI8aW50OF90Pj4gewog
ICAgIHN0YXRpYyBpbnQ4X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24p
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE0MSw3ICsxNzEs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlCiAgICAgfQogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRGVmYXVsdENvbnZlcnRl
cjx1aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDhfdD4gOiBCYXNl
Q29udmVydGVyPHVpbnQ4X3QsIENvbnZlcnRlcjx1aW50OF90Pj4gewogICAgIHN0YXRpYyB1aW50
OF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0xNTYsNyArMTg2LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MTZfdD4gewor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDE2X3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQx
Nl90LCBDb252ZXJ0ZXI8aW50MTZfdD4+IHsKICAgICBzdGF0aWMgaW50MTZfdCBjb252ZXJ0KEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29u
ZmlndXJhdGlvbikgewpAQCAtMTcxLDcgKzIwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxpbnQxNl90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8dWludDE2X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50MTZfdD4gewordGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQxNl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDE2X3QsIENvbnZl
cnRlcjx1aW50MTZfdD4+IHsKICAgICBzdGF0aWMgdWludDE2X3QgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRp
b24pIHsKQEAgLTE4Niw3ICsyMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWlu
dDE2X3Q+IDogCiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMy
X3Q+IDogRGVmYXVsdENvbnZlcnRlcjxpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJ0ZXI8aW50MzJfdD4gOiBCYXNlQ29udmVydGVyPGludDMyX3QsIENvbnZlcnRlcjxpbnQzMl90
Pj4gewogICAgIHN0YXRpYyBpbnQzMl90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0yMDEs
NyArMjMxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRAogICAg
IH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiBEZWZhdWx0
Q29udmVydGVyPHVpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMy
X3Q+IDogQmFzZUNvbnZlcnRlcjx1aW50MzJfdCwgQ29udmVydGVyPHVpbnQzMl90Pj4gewogICAg
IHN0YXRpYyB1aW50MzJfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMjE2LDcgKzI0Niw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiAKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBEZWZhdWx0Q29udmVydGVy
PGludDY0X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEJhc2VD
b252ZXJ0ZXI8aW50NjRfdCwgQ29udmVydGVyPGludDY0X3Q+PiB7CiAgICAgc3RhdGljIGludDY0
X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBpZiAodmFsdWUuaXNJbnQzMigpKQpAQCAtMjM0LDcgKzI2NCw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8dWludDY0X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50NjRfdD4gewordGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDY0
X3QsIENvbnZlcnRlcjx1aW50NjRfdD4+IHsKICAgICBzdGF0aWMgdWludDY0X3QgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUu
aXNVSW50MzIoKSkKQEAgLTI1Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8dWludDY0X3Q+IDogCiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IENvbnZlcnRlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZT46OnR5cGU+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBCYXNlQ29udmVydGVyPFQs
IENvbnZlcnRlcjxUPj4gewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAg
IHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwpAQCAtMzA0LDcgKzMzNCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIExpc3QsIGJvb2wgY29uZGl0aW9uPgogdXNpbmcgQ29uZGl0aW9u
YWxGcm9udCA9IHR5cGVuYW1lIERldGFpbDo6Q29uZGl0aW9uYWxGcm9udDxMaXN0LCBjb25kaXRp
b24+Ojp0eXBlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotc3RydWN0IENvbnZlcnRlcjxJ
RExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+
OjpJbXBsZW1lbnRhdGlvblR5cGU+CitzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6
IEJhc2VDb252ZXJ0ZXI8dHlwZW5hbWUgSURMVW5pb248VC4uLj46OkltcGxlbWVudGF0aW9uVHlw
ZSwgQ29udmVydGVyPElETFVuaW9uPFQuLi4+Pj4KIHsKICAgICB1c2luZyBUeXBlID0gSURMVW5p
b248VC4uLj47CiAgICAgdXNpbmcgVHlwZUxpc3QgPSB0eXBlbmFtZSBUeXBlOjpUeXBlTGlzdDsK
QEAgLTQwOCw0ICs0MzgsMzIgQEAgc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBE
ZWZhdQogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgVmFy
aWFkaWNDb252ZXJ0ZXJSZXN1bHQgeworICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OworCisgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXggPSAwOworICAgIE9wdGlvbmFsPENvbnRhaW5l
cj4gYXJndW1lbnRzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gVmFyaWFkaWND
b252ZXJ0ZXJSZXN1bHQ8SURMVHlwZT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgc2l6ZV90IHN0YXJ0SW5kZXgpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9
IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKKyAgICBpZiAoc3RhcnRJbmRleCA+IGxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyUmVzdWx0
PElETFR5cGU+OjpDb250YWluZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOworCisgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0
SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gQ29udmVydGVy
PElETFR5cGU+Ojpjb252ZXJ0RmFpbGFibGUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxv
cHQgfTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOwor
ICAgIH0KKyAgICByZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9OworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAi
SlNIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiSlNO
b2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1hNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9j
YXRpb24uaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCkBAIC0xMDgsMjQgKzEwNyw2IEBA
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2IKICAgICByZXR1cm4gdG9K
U05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+KGRvY3VtZW50
KSk7CiB9CiAKLUpTVmFsdWUgSlNEb2N1bWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9k
ZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1l
bnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci19Ci0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RvY3VtZW50
OjpjcmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEZyYWdtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzEgKzI3LDEyIEBA
CiAjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1NoYWRvd1Jv
b3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1K
U1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnRG
cmFnbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSks
IGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLX0KLQogSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGlt
cGwpCiB7CiAgICAgaWYgKGltcGwtPmlzU2hhZG93Um9vdCgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkocmV2aXNp
b24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVD
dXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5oIgotCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0RvY3Vt
ZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSks
IGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0
ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUg
SlNEb2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3Ry
aW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsK
LQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5j
cHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxl
bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3Rvcnku
aCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNzUsNDkgKzc0LDQgQEAgSlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAgIHJldHVybiBjcmVhdGVOZXdF
bGVtZW50V3JhcHBlcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwogfQogCi1KU1Zh
bHVlIEpTRWxlbWVudDo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3Rvcihz
dGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFm
dGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVl
IEpTRWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdW
ZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5k
KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3Jh
cHBlZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19
Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5n
VmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQot
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShy
ZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0
cmluZy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLSNpbmNsdWRl
ICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgotI2luY2x1ZGUgIkpTTm9k
ZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVGhyb3dTY29wZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8
Tm9kZT4sIFN0cmluZz4+IHRvTm9kZU9yU3RyaW5nVmVjdG9yKEV4ZWNTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgdXNpbmcgTm9kZU9yU3RyaW5nVHlwZSA9IElETFVuaW9uPElETEludGVyZmFjZTxOb2Rl
PiwgSURMRE9NU3RyaW5nPjsKLSAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPE5v
ZGVPclN0cmluZ1R5cGU+OwotCi0gICAgdXNpbmcgSW50ZXJmYWNlVHlwZUxpc3QgPSB0eXBlbmFt
ZSBDb252ZXJ0ZXJUeXBlOjpJbnRlcmZhY2VUeXBlTGlzdDsKLSAgICB1c2luZyBJbnRlcmZhY2VU
eXBlID0gYnJpZ2FuZDo6ZnJvbnQ8SW50ZXJmYWNlVHlwZUxpc3Q+OwotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPEludGVyZmFjZVR5cGUsIElETEludGVyZmFjZTxOb2RlPj46OnZhbHVl
LCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChicmlnYW5kOjpzaXplPEludGVyZmFjZVR5cGVMaXN0
Pjo6dmFsdWUgPT0gMSwgIiIpOwotCi0gICAgdXNpbmcgU3RyaW5nVHlwZUxpc3QgPSB0eXBlbmFt
ZSBDb252ZXJ0ZXJUeXBlOjpTdHJpbmdUeXBlTGlzdDsKLSAgICB1c2luZyBTdHJpbmdUeXBlID0g
dHlwZW5hbWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxTdHJpbmdUeXBlLCBJRExET01TdHJpbmc+Ojp2YWx1ZSwgIiIpOwotICAgIHN0
YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxTdHJpbmdUeXBlTGlzdD46OnZhbHVlID09IDEsICIi
KTsKLQotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotCi0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBzdGF0ZS5hcmd1
bWVudENvdW50KCk7Ci0KLSAgICBWZWN0b3I8dHlwZW5hbWUgTm9kZU9yU3RyaW5nVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlPiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXJndW1lbnRDb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50
Q291bnQ7ICsraSkgewotICAgICAgICAgYXV0byBpdGVtID0gQ29udmVydGVyVHlwZTo6Y29udmVy
dChzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSkpOwotICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShpdGVtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
T3JTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVPclN0cmluZy5oCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgSlNOb2RlT3JTdHJpbmdfaAotI2RlZmluZSBKU05vZGVPclN0cmlu
Z19oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNT
dGF0ZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1WZWN0b3I8
c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0
cmluZ1ZlY3RvcihKU0M6OkV4ZWNTdGF0ZSYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBKU05vZGVPclN0cmluZ1ZlY3Rvcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDY3NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAgcGFja2FnZSBDb2RlR2VuZXJhdG9yOwogdXNl
IHN0cmljdDsKIAogdXNlIEZpbGU6OkZpbmQ7Cit1c2UgQ2FycCBxdzxsb25nbWVzcz47Cit1c2Ug
RGF0YTo6RHVtcGVyOwogCiBteSAkdXNlRG9jdW1lbnQgPSAiIjsKIG15ICR1c2VHZW5lcmF0b3Ig
PSAiIjsKQEAgLTEzOSw2ICsxNDEsMTYgQEAgbXkgJXN2Z1R5cGVXaXRoV3JpdGFibGVQcm9wZXJ0
aWVzTmVlZGluZwogbXkgJGlkbEZpbGVzOwogbXkgJGNhY2hlZEludGVyZmFjZXMgPSB7fTsKIAor
c3ViIGFzc2VydAoreworICAgIG15ICRtZXNzYWdlID0gc2hpZnQ7CisgICAgCisgICAgbXkgJG1l
c3MgPSBsb25nbWVzcygpOworICAgIHByaW50IER1bXBlcigkbWVzcyk7CisKKyAgICBkaWUgJG1l
c3NhZ2U7Cit9CisKICMgRGVmYXVsdCBjb25zdHJ1Y3Rvcgogc3ViIG5ldwogewpAQCAtMzEwLDYg
KzMyMiw3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hp
ZnQ7CiAKICAgICByZXR1cm4gdW5kZWYgaWYgJGludGVyZmFjZU5hbWUgZXEgJ09iamVjdCc7Cisg
ICAgcmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdVTklPTic7CiAKICAgICBpZiAo
ZXhpc3RzICRjYWNoZWRJbnRlcmZhY2VzLT57JGludGVyZmFjZU5hbWV9KSB7CiAgICAgICAgIHJl
dHVybiAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfTsKQEAgLTMxNyw3ICszMzAs
NyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKIAogICAgICMgU3RlcCAjMTogRmluZCB0aGUgSURMIGZp
bGUgYXNzb2NpYXRlZCB3aXRoICdpbnRlcmZhY2UnCiAgICAgbXkgJGZpbGVuYW1lID0gJG9iamVj
dC0+SURMRmlsZUZvckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkKLSAgICAgICAgb3IgZGllKCJD
b3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiwg
cmVhY2hhYmxlIGZyb20gXCIiIC4gJG91dGVySW50ZXJmYWNlLT5uYW1lIC4gIlwiIVxuIik7Cisg
ICAgICAgIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiRpbnRlcmZhY2VOYW1lXCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+
bmFtZSAuICJcIiFcbiIpOwogCiAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcgcGFyZW50IElE
TCBcIiRmaWxlbmFtZVwiIGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiXG4iIGlmICR2
ZXJib3NlOwogCkBAIC02MTIsNiArNjI1LDEwOCBAQCBzdWIgR2V0U2VxdWVuY2VPckZyb3plbkFy
cmF5SW5uZXJUeXBlCiAgICAgcmV0dXJuICIiOwogfQogCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jZGZuLWZsYXR0ZW5lZC11bmlvbi1tZW1iZXItdHlwZXMKK3N1YiBHZXRGbGF0
dGVuZWRNZW1iZXJUeXBlcworeworICAgIG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBf
OworCisgICAgbXkgQGZsYXR0ZW5lZE1lbWJlclR5cGVzID0gKCk7CisKKyAgICBmb3JlYWNoIG15
ICRtZW1iZXJUeXBlIChAeyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAo
JG1lbWJlclR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgIHB1c2ggQGZsYXR0ZW5lZE1lbWJl
clR5cGVzLCAkb2JqZWN0LT5HZXRGbGF0dGVuZWRNZW1iZXJUeXBlcygkbWVtYmVyVHlwZSkKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2ggQGZsYXR0ZW5lZE1lbWJlclR5cGVzLCAk
bWVtYmVyVHlwZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAZmxhdHRlbmVkTWVt
YmVyVHlwZXM7Cit9CisKKyMgaHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbnVt
YmVyLW9mLW51bGxhYmxlLW1lbWJlci10eXBlcworc3ViIEdldE51bWJlck9mTnVsbGFibGVNZW1i
ZXJUeXBlcworeworICAgIG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBfOworCisgICAg
bXkgJGNvdW50ID0gMDsKKworICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFVuaW9u
VHlwZS0+c3VidHlwZXN9KSB7CisgICAgICAgIGlmICgkbWVtYmVyVHlwZS0+aXNOdWxsYWJsZSkg
eworICAgICAgICAgICAgJGNvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBpZiAoJG1lbWJl
clR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgICRjb3VudCArPSAkb2JqZWN0LT5HZXROdW1i
ZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMoJG1lbWJlclR5cGUpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuICRjb3VudDsKK30KKworc3ViIEdldElETFVuaW9uTWVtYmVyVHlwZXMKK3sK
KyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAg
IG15ICRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA9ICRvYmplY3QtPkdldE51bWJlck9mTnVsbGFi
bGVNZW1iZXJUeXBlcygkaWRsVW5pb25UeXBlKTsKKyAgICBpZiAoJG51bWJlck9mTnVsbGFibGVN
ZW1iZXJzID4gMSkgeworICAgICAgICBhc3NlcnQoIlVuaW9uIHR5cGVzIG11c3Qgb25seSBoYXZl
IDAgb3IgMSBudWxsYWJsZSB0eXBlcy4iKTsKKyAgICB9CisKKyAgICBteSBAaWRsVW5pb25NZW1i
ZXJUeXBlcyA9ICgpOworCisgICAgaWYgKCRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA9PSAxKSB7
CisgICAgICAgIHB1c2ggQGlkbFVuaW9uTWVtYmVyVHlwZXMsICJJRExOdWxsIjsKKyAgICB9CisK
KyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlICgkb2JqZWN0LT5HZXRGbGF0dGVuZWRNZW1iZXJU
eXBlcygkaWRsVW5pb25UeXBlKSkgeworICAgICAgICBwdXNoIEBpZGxVbmlvbk1lbWJlclR5cGVz
LCAkb2JqZWN0LT5HZXRCYXNlSURMVHlwZSgkaW50ZXJmYWNlLCAkbWVtYmVyVHlwZSk7CisgICAg
fQorCisgICAgcmV0dXJuIEBpZGxVbmlvbk1lbWJlclR5cGVzOworfQorCitzdWIgR2V0QmFzZUlE
TFR5cGUKK3sKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFR5cGUpID0gQF87CisK
KyAgICBteSAlSURMVHlwZXMgPSAoCisgICAgICAgICJhbnkiID0+ICJJRExBbnkiLAorICAgICAg
ICAiYm9vbGVhbiIgPT4gIklETEJvb2xlYW4iLAorICAgICAgICAiYnl0ZSIgPT4gIklETEJ5dGUi
LAorICAgICAgICAib2N0ZXQiID0+ICJJRExPY3RldCIsCisgICAgICAgICJzaG9ydCIgPT4gIklE
TFNob3J0IiwKKyAgICAgICAgInVuc2lnbmVkIHNob3J0IiA9PiAiSURMVW5zaWduZWRTaG9ydCIs
CisgICAgICAgICJsb25nIiA9PiAiSURMTG9uZyIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIiA9
PiAiSURMVW5zaWduZWRMb25nIiwKKyAgICAgICAgImxvbmcgbG9uZyIgPT4gIklETExvbmdMb25n
IiwKKyAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyIgPT4gIklETFVuc2lnbmVkTG9uZ0xvbmci
LAorICAgICAgICAiZmxvYXQiID0+ICJJRExGbG9hdCIsCisgICAgICAgICJ1bnJlc3RyaWN0ZWQg
ZmxvYXQiID0+ICJJRExVbnJlc3RyaWN0ZWRGbG9hdCIsCisgICAgICAgICJkb3VibGUiID0+ICJJ
RExEb3VibGUiLAorICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIklETFVucmVzdHJp
Y3RlZERvdWJsZSIsCisgICAgICAgICJET01TdHJpbmciID0+ICJJRExET01TdHJpbmciLAorICAg
ICAgICAiQnl0ZVN0cmluZyIgPT4gIklETEJ5dGVTdHJpbmciLAorICAgICAgICAiVVNWU3RyaW5n
IiA9PiAiSURMVVNWU3RyaW5nIiwKKyAgICApOworCisgICAgcmV0dXJuICRJRExUeXBlc3skaWRs
VHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX07CisgICAgcmV0
dXJuICJJRExFbnVtZXJhdGlvbjwiIC4gJG9iamVjdC0+R2V0RW51bWVyYXRpb25DbGFzc05hbWUo
JGludGVyZmFjZSwgJGlkbFR5cGUtPm5hbWUpIC4gIj4iIGlmICRvYmplY3QtPklzRW51bVR5cGUo
JGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURMRGljdGlvbmFyeTwiIC4gJG9iamVjdC0+
R2V0RGljdGlvbmFyeUNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkaWRsVHlwZS0+bmFtZSkgLiAiPiIg
aWYgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJu
ICJJRExTZXF1ZW5jZTwiIC4gJG9iamVjdC0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxU
eXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRvYmplY3QtPklzU2VxdWVuY2VUeXBlKCRpZGxU
eXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETEZyb3plbkFycmF5PCIgLiAkb2JqZWN0LT5HZXRJ
RExUeXBlKCRpbnRlcmZhY2UsIEB7JGlkbFR5cGUtPnN1YnR5cGVzfVswXSkgLiAiPiIgaWYgJG9i
amVjdC0+SXNGcm96ZW5BcnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURM
VW5pb248IiAuIGpvaW4oIiwgIiwgJG9iamVjdC0+R2V0SURMVW5pb25NZW1iZXJUeXBlcygkaW50
ZXJmYWNlLCAkaWRsVHlwZSkpIC4gIj4iIGlmICRpZGxUeXBlLT5pc1VuaW9uOworICAgIHJldHVy
biAiSURMSW50ZXJmYWNlPCIgLiAkaWRsVHlwZS0+bmFtZSAuICI+IjsKK30KKworc3ViIEdldElE
TFR5cGUKK3sKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFR5cGUpID0gQF87CisK
KyAgICBteSAkYmFzZUlETFR5cGUgPSAkb2JqZWN0LT5HZXRCYXNlSURMVHlwZSgkaW50ZXJmYWNl
LCAkaWRsVHlwZSk7CisgICAgcmV0dXJuICJJRExOdWxsYWJsZTwiIC4gJGJhc2VJRExUeXBlIC4g
Ij4iIGlmICRpZGxUeXBlLT5pc051bGxhYmxlOworICAgIHJldHVybiAkYmFzZUlETFR5cGU7Cit9
CisKICMgVGhlc2UgbWF0Y2ggV0tfbGNmaXJzdCBhbmQgV0tfdWNmaXJzdCBkZWZpbmVkIGluIGJ1
aWx0aW5zX2dlbmVyYXRvci5weS4KICMgVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIgd2hpbGUg
cmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4KICMgRS5nLiwgeG1sRW5jb2Rpbmcg
YmVjb21lcyBYTUxFbmNvZGluZywgYnV0IHhtbGxsYW5nIGJlY29tZXMgWG1sbGFuZy4KQEAgLTc5
MSw2ICs5MDYsNyBAQCBzdWIgSXNXcmFwcGVyVHlwZQogCiAgICAgcmV0dXJuIDAgaWYgISRvYmpl
Y3QtPklzUmVmUHRyVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNUeXBl
ZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIlVOSU9OIjsKICAg
ICByZXR1cm4gMCBpZiAkd2ViQ29yZVR5cGVIYXNoeyR0eXBlfTsKIAogICAgIHJldHVybiAxOwpA
QCAtODA0LDcgKzkyMCw3IEBAIHN1YiBnZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9t
TmEKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKIAotICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkaW50
ZXJmYWNlTmFtZSkgb3IgZGllKCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNl
IFwiJGludGVyZmFjZU5hbWVcIiFcbiIpOworICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURM
RmlsZUZvckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmlu
ZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiFcbiIpOwogCiAgICAg
b3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgICBteSBAbGluZXMgPSA8RklMRT47
CkBAIC04MzYsNyArOTUyLDcgQEAgc3ViIENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlCiAKICAg
cmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzV3JhcHBlclR5cGUoJHR5cGUpOwogCi0gIG15ICRp
ZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZSkgb3IgZGllKCJDb3Vs
ZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVcIiFcbiIpOworICBteSAk
aWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9yIGFzc2VydCgi
Q291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKIAog
ICBvcGVuIEZJTEUsICI8IiwgJGlkbEZpbGUgb3IgZGllOwogICBteSBAbGluZXMgPSA8RklMRT47
CkBAIC04NzIsNyArOTg4LDcgQEAgc3ViIENvbXB1dGVJc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50
ZXJmYQogCiAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0
eXBlKTsKIAotICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5
cGUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBl
XCIhXG4iKTsKKyAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0
eXBlKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIk
dHlwZVwiIVxuIik7CiAKICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkg
QGxpbmVzID0gPEZJTEU+OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzksNiArMjM5LDI4IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9CiB9CiAK
K3N1YiBBZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUKK3sKKyAgICBteSAoJGlkbFR5cGUsICRj
b25kaXRpb25hbCkgPSBAXzsKKworICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+U2tpcElu
Y2x1ZGVIZWFkZXIoJGlkbFR5cGUtPm5hbWUpOworCisgICAgaWYgKCRpZGxUeXBlLT5pc1VuaW9u
KSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1ZhcmlhbnQuaD4iLCAkY29uZGl0
aW9uYWwpOworCisgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFR5cGUtPnN1
YnR5cGVzfSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRtZW1i
ZXJUeXBlLCAkY29uZGl0aW9uYWwpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkaWRsVHlwZS0+bmFt
ZSkpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRpZGxUeXBlLT5uYW1lIC4g
Ii5oIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHN1YiBBZGRUb0ltcGxJbmNsdWRl
cwogewogICAgIG15ICRoZWFkZXIgPSBzaGlmdDsKQEAgLTM5MDQsNiArMzkyNiw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKICAgICBm
b3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAg
ICBteSAkdHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CisgICAgICAgIG15ICRpZGxUeXBlID0gJHBh
cmFtZXRlci0+aWRsVHlwZTsKIAogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFtZXRlcnMgb2Yg
bm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICRwYXJhbWV0
ZXItPmlzT3B0aW9uYWwgJiYgISRwYXJhbWV0ZXItPmlzTnVsbGFibGUgJiYgJGNvZGVHZW5lcmF0
b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFtZXRl
cnMgcHJlY2VkaW5nIHZhcmlhZGljIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICgk
cGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc31bJG51bVBh
cmFtZXRlcnMgLSAxXS0+aXNWYXJpYWRpYyk7CkBAIC0zOTY1LDE3ICszOTg4LDEzIEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJp
YWRpYykgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHt0eXBlfS5oIiwgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgdW5s
ZXNzICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSkgb3IgISRjb2RlR2Vu
ZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgIG15ICgkd3JhcHBlclR5
cGUsICR3cmFwcGVkVHlwZSkgPSBHZXRWYXJpYWRpY1R5cGUoJGludGVyZmFjZSwgJHR5cGUpOwot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSB0b0FyZ3Vt
ZW50czxWYXJpYWRpY0hlbHBlcjwkd3JhcHBlclR5cGUsICR3cmFwcGVkVHlwZT4+KCpzdGF0ZSwg
JGFyZ3VtZW50SW5kZXgpO1xuIik7Ci0KLSAgICAgICAgICAgIGlmIChJc05hdGl2ZVR5cGUoJHR5
cGUpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoISRuYW1lLmFyZ3VtZW50cylcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAkbmFtZS5hcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4i
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29udmVy
dC5oIn0gPSAxOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRpZGxU
eXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKKyAgICAgICAgCisgICAgICAgICAgICBteSAkbWV0YVR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkaWRsVHlwZSk7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czwk
bWV0YVR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTtcbiIpOworCiAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFt
ZS5hcmd1bWVudHMudmFsdWUoKSkiOwogCiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc0VudW1UeXBlKCR0eXBlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCwxMyBAQCBzdHJ1Y3QoIGlkbERvY3VtZW50ID0+IHsKICAgICBmaWxlTmFtZSA9PiAnJCcsCiB9
KTsKIAorc3RydWN0KCBkb21UeXBlID0+IHsKKyAgICBuYW1lID0+ICAgICAgICAgJyQnLCAjIFR5
cGUgaWRlbnRpZmllcgorICAgIGlzTnVsbGFibGUgPT4gICAnJCcsICMgSXMgdGhlIHR5cGUgTnVs
bGFibGUgKFQ/KQorICAgIGlzVW5pb24gPT4gICAgICAnJCcsICMgSXMgdGhlIHR5cGUgYSB1bmlv
biAoVCBvciBVKQorICAgIHN1YnR5cGVzID0+ICAgICAnQCcsICMgQXJyYXkgb2Ygc3VidHlwZXMs
IG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1ZW5jZQorfSk7CisKICMgVXNlZCB0byByZXBy
ZXNlbnQgJ2ludGVyZmFjZScgYmxvY2tzCiBzdHJ1Y3QoIGRvbUludGVyZmFjZSA9PiB7CiAgICAg
bmFtZSA9PiAnJCcsICAgICAgIyBDbGFzcyBpZGVudGlmaWVyCkBAIC03OSwxOCArODYsMTIgQEAg
c3RydWN0KCBkb21BdHRyaWJ1dGUgPT4gewogICAgIHNpZ25hdHVyZSA9PiAnJCcsICAgICAgICAg
IyBBdHRyaWJ1dGUgc2lnbmF0dXJlCiB9KTsKIAotc3RydWN0KCBkb21UeXBlID0+IHsKLSAgICBu
YW1lID0+ICAgICAgICAgJyQnLCAjIFR5cGUgaWRlbnRpZmllcgotICAgIGlzTnVsbGFibGUgPT4g
ICAnJCcsICMgSXMgdGhlIHR5cGUgTnVsbGFibGUgKFQ/KQotICAgIGlzVW5pb24gPT4gICAgICAn
JCcsICMgSXMgdGhlIHR5cGUgYSB1bmlvbiAoVCBvciBVKQotICAgIHN1YnR5cGVzID0+ICAgICAn
QCcsICMgQXJyYXkgb2Ygc3VidHlwZXMsIG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1ZW5j
ZQotfSk7Ci0KICMgVXNlZCB0byByZXByZXNlbnQgYSBtYXAgb2YgJ3ZhcmlhYmxlIG5hbWUnIDwt
PiAndmFyaWFibGUgdHlwZScKIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAgICBkaXJlY3Rp
b24gPT4gJyQnLCAgICMgVmFyaWFibGUgZGlyZWN0aW9uIChpbiBvciBvdXQpCiAgICAgbmFtZSA9
PiAnJCcsICAgICAgICAjIFZhcmlhYmxlIG5hbWUKLSAgICB0eXBlID0+ICckJyAgICAgICwgICMg
VmFyaWFibGUgdHlwZQorICAgIHR5cGUgPT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSB0eXBlIG5h
bWUgKERFUFJFQ0FURUQgLSBwbGVhc2UgdXNlIGlkbFR5cGUpCisgICAgaWRsVHlwZSA9PiAnJCcs
ICAgICAjIFZhcmlhYmxlIHR5cGUKICAgICBzcGVjaWFscyA9PiAnQCcsICAgICMgU3BlY2lhbHMK
ICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMKICAg
ICBpc051bGxhYmxlID0+ICckJywgICMgSXMgdmFyaWFibGUgdHlwZSBOdWxsYWJsZSAoVD8pCkBA
IC03MDUsNiArNzA2LDcgQEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJlcgogICAgICAgICAkbWVt
YmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAKICAgICAg
ICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRtZW1iZXItPmlkbFR5
cGUoJHR5cGUpOwogICAgICAgICAkbWVtYmVyLT50eXBlKCR0eXBlLT5uYW1lKTsKICAgICAgICAg
JG1lbWJlci0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTEyNTIsNiArMTI1
NCw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWdu
YXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAgICAgICAgIAogICAgICAgICBteSAkdHlwZSA9
ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlk
bFR5cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlw
ZS0+bmFtZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKCR0
eXBlLT5pc051bGxhYmxlKTsKIApAQCAtMTU0NCw2ICsxNTQ3LDcgQEAgc3ViIHBhcnNlT3B0aW9u
YWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICJvcHRpb25hbCIsIF9fTElORV9fKTsKIAogICAgICAgICBteSAkdHlw
ZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlkbFR5cGUo
JHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZShpZGVudGlmaWVyUmVtb3ZlTnVs
bGFibGVQcmVmaXgoJHR5cGUtPm5hbWUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVs
bGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNPcHRp
b25hbCgxKTsKQEAgLTE1NTMsNiArMTU1Nyw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJl
ZEFyZ3VtZW50CiAgICAgfQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tl
biB8fCAkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRFeGNlcHRpb25GaWVsZF8xLykgewogICAgICAg
ICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkdHlwZS0+bmFt
ZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxl
KTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwoMCk7CkBAIC0xNjE1LDYgKzE2
MjAsNyBAQCBzdWIgcGFyc2VFeGNlcHRpb25GaWVsZAogICAgICAgICAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKIAogICAgICAgICBteSAkdHlwZSA9ICRzZWxm
LT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlkbFR5cGUo
JHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZS0+bmFt
ZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKCR0eXBlLT5p
c051bGxhYmxlKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM1OSw2ICszNTksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEt
bG93CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChET01TdHJpbmcgaGVhZCwgRE9NU3Ry
aW5nLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2QodW5yZXN0cmljdGVk
IGRvdWJsZSBoZWFkLCB1bnJlc3RyaWN0ZWQgZG91YmxlLi4uIHRhaWwpOwogICAgIHZvaWQgdmFy
aWFkaWNOb2RlTWV0aG9kKE5vZGUgaGVhZCwgTm9kZS4uLiB0YWlsKTsKKyAgICB2b2lkIHZhcmlh
ZGljVW5pb25NZXRob2QoRE9NU3RyaW5nIGhlYWQsIChOb2RlIG9yIERPTVN0cmluZykuLi4gdGFp
bCk7CiAKICAgICAvLyBOdWxsYWJsZSBhdHRyaWJ1dGVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICNpbmNsdWRlICJK
U1Rlc3RPYmplY3RBLmgiCkBAIC05NzEsNiArOTcyLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhG
bG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNTc3LDYgKzE1NzksNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAidmFyaWFkaWNTdHJp
bmdNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNT
dHJpbmdNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNEb3VibGVN
ZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3Vi
bGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNOb2RlTWV0aG9k
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhv
ZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJ2YXJpYWRpY1VuaW9uTWV0aG9kIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QpLCAo
aW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYW55IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFueSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5j
dGlvbldpdGhGbG9hdEFyZ3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEp
IH0gfSwKQEAgLTY2MTksOSArNjYyMiw4IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gYmxvYkFyZ3MgPSB0
b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigqc3RhdGUsIDApOwotICAg
IGlmICghYmxvYkFyZ3MuYXJndW1lbnRzKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIGJsb2JBcmdzLmFyZ3VtZW50SW5kZXgsICJibG9i
QXJncyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOworICAgIGF1
dG8gYmxvYkFyZ3MgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPEJsb2I+
Pigqc3RhdGUsIDApOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3Mu
YXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQpAQCAtNzEzNyw3ICs3MTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
aGVhZCA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIFN0
cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1l
bnRzPElETERPTVN0cmluZz4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRo
b2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTcxNTgsNyArNzE2MCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGhlYWQgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVl
LCBkb3VibGU+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0Fy
Z3VtZW50czxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZhcmlh
ZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFs
dWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03
MTgwLDEzICs3MTgyLDMzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKICAgICBhdXRvIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImhlYWQiLCAiVGVzdE9i
amVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAgIGF1dG8gdGFpbCA9IHRv
QXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTTm9kZSwgTm9kZT4+KCpzdGF0ZSwgMSk7Ci0gICAg
aWYgKCF0YWlsLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCB0YWlsLmFyZ3VtZW50SW5kZXgsICJ0YWlsIiwgIlRlc3RP
YmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAgICBhdXRvIHRhaWwgPSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUodGFpbC5hcmd1bWVudHMu
dmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRv
IGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETFVuaW9uPElETEludGVy
ZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5nPj4oKnN0YXRlLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwudmFyaWFkaWNV
bmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZhbHVlKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDY3
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0xMzcsNyArMTM4LDcgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3Rl
ZFRoaXMpOwotICAgIGF1dG8gbG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxK
U0M6OkpTVmFsdWUsIGludDMyX3Q+Pigqc3RhdGUsIDApOworICAgIGF1dG8gbG9uZ0FyZ3MgPSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMTG9uZz4oKnN0YXRlLCAwKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2Jq
ZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdz
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKIFsKICAg
ICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9kZSB7Ci0gICAgW1Vuc2Nv
cGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYmVmb3JlKChOb2Rl
IG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2
b2lkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNj
b3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiZWZvcmUoKE5vZGUgb3IgRE9N
U3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNj
b3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBv
ciBET01TdHJpbmcpLi4uIG5vZGVzKTsKICAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bh
cmVudE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2Rl
LmlkbAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLiBub2Rlcyk7Ci0gICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBD
dXN0b21dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtV
bnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBwcmVwZW5kKChOb2RlIG9y
IERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAKICAg
ICAvLyBbVW5zY29wYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0
b3JzKTsKICAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BhYmxlXSBFbGVtZW50cyBxdWVyeUFsbChE
T01TdHJpbmcgcmVsYXRpdmVTZWxlY3RvcnMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290628</attachid>
            <date>2016-10-04 11:52:47 -0700</date>
            <delta_ts>2016-10-04 12:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004114936.patch</filename>
            <type>text/plain</type>
            <size>66159</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFT
dHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1lZGlh
U3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQoKSk7CisgICAgICAgIG1lZGlhU3RyZWFt
SWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBzZW5kZXIgPSBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1l
ZGlhU3RyZWFtLWJhc2VkIEFQSSAobW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykK
ICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFj
az4mJiwgY29uc3QgVmVjdG9yPFJlZjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcyOSw4ICsyNzI5LDYgQEAKIAkJN0Mx
RTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRTk3MjYxQTlGOTgzNDAw
N0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdG
OThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAv
KiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAz
OEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmggKi87IH07Ci0JCTdDMzNGMzVBMUI0QTA0NDgwMDUwMkNBRiAvKiBK
U0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3Vt
ZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwICovOyB9OwogCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTI3NjQsOCArMjc2Miw2IEBACiAJCTdD
Nzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTdD
Nzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovOyB9OwogCQk3Qzgz
REU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyog
U3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDOTFBMzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05v
ZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovOyB9
OwotCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhFMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovOyB9OwogCQk3QzkzRjM0OTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk3QzkzRjM0QTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBp
bGVyLmNwcCAqLzsgfTsKQEAgLTk4MjUsOCArOTgyMSw2IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQw
MDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMzRjM1
QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk4NzIsOCArOTg2Niw2IEBACiAJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAv
KiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2Myw4ICsyMTA1NSw2
IEBACiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5o
ICovLAogCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2su
Y3BwICovLAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJh
Y2suaCAqLywKLQkJCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
Y3BwICovLAotCQkJCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5o
ICovLAogCQkJCUNCMzhGRDU1MUNEMjFENUIwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnlD
dXN0b20uY3BwICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKQEAgLTIxMTE2LDcgKzIxMTA2LDYgQEAKIAkJ
CQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLywKLQkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyog
SlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTdDRUYyNjE4MUQ2QTky
RTMwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCkBAIC0yMTEzOCw3ICsyMTEyNyw2
IEBACiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmgg
Ki8sCiAJCQkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRU
eXBlQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNET01N
aW1lVHlwZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QTBENzQ2NUU3MDA2NDQyRTkg
LyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEIwRDc0NjVFNzAw
NjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCAqLywKQEAgLTI1MjEwLDcgKzI1MTk4LDYg
QEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNOb2RlTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M5MUEzOTAxQjQ5OEFCRTAwM0Y5RUZBIC8q
IEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAz
QjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E2MTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFFQzFFMjkxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTkwLDcgKzI4NTc3LDYgQEAKIAkJCQlGREEx
NUVBMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUYzMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U0NoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzM0YzNUExQjRBMDQ0ODAw
NTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY2Miw3ICsyODY0OCw2IEBACiAJCQkJ
N0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA1RjFDMDJCNDQ0MDA2QTFBMDAgLyogSlNEb2N1bWVu
dFRpbWVsaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1MDlEMUNDNjAwMDBCRTMy
NSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1RTFCNEEw
NENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2MzA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEN0MwMEQyOUE0NjMwMEI5OTE4RiAvKiBK
U0RPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkyNCw3ICsyODkwOSw2
IEBACiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMkMyMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcwMDVDOTBBMiAv
KiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDOTFBMzhGMUI0OThB
QkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUw
M0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxRUMxRTI4MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDaGFyYWN0ZXJEYXRhLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1Zh
bHVlIEpTQ2hhcmFjdGVyRGF0YTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFm
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0
ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdp
dGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDQ2ICszNDEsNiBAQCB0ZW1wbGF0
ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgVmFyaWFk
aWNIZWxwZXJCYXNlIHsKLSAgICB1c2luZyBJdGVtID0gRE9NQ2xhc3M7Ci0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxET01D
bGFzcz4gVHJhaXRzVHlwZTsKLSAgICAgICAgRE9NQ2xhc3MgaW5kZXhWYWx1ZTsKLSAgICAgICAg
aWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShzdGF0ZSwganNWYWx1ZSwgaW5kZXhWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7
Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+Ci1zdHJ1Y3QgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhSlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQnVpbHRp
bj46OnR5cGU+IHsKLSAgICB1c2luZyBDbGFzcyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsK
LSAgICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47Ci0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgYXV0byogdmFsdWUgPSBKU0NsYXNzOjp0b1dyYXBw
ZWQoanNWYWx1ZSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+KCp2YWx1ZSk7Ci0gICAgfQotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+Ci1zdHJ1Y3Qg
VmFyaWFkaWNIZWxwZXIgOiBwdWJsaWMgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNs
YXNzPiB7Ci0gICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyQmFzZTxKU0Ns
YXNzLCBET01DbGFzcz46Okl0ZW07Ci0gICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OwotCi0gICAgc3RydWN0IFJlc3VsdCB7Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4Owot
ICAgICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKLSAgICB9OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpS
ZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9IDAp
OwogCiAvLyBJbmxpbmUgZnVuY3Rpb25zIGFuZCB0ZW1wbGF0ZSBkZWZpbml0aW9ucy4KIApAQCAt
ODkzLDI0ICs4NTMsNiBAQCBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWlj
CiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBwcm9wZXJ0eU5h
bWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpSZXN1bHQgdG9B
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qgc3RhcnRJbmRleCkKLXsKLSAg
ICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwotICAgIGlmIChzdGFydElu
ZGV4ID4gbGVuZ3RoKQotICAgICAgICByZXR1cm4geyAwLCBOdWxsb3B0IH07Ci0KLSAgICB0eXBl
bmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29udGFpbmVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChp
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0
IH07Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh2YWx1ZS52YWx1ZSgp
KSk7Ci0gICAgfQotICAgIHJldHVybiB7IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0K
IHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIw
Njc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw0NSArNzMsNzUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSlNUPiBpbmxpbgogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0Q29udmVydGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIERlcml2ZWQ+IHN0cnVjdCBCYXNlQ29udmVydGVyIHsKICAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gT3B0aW9uYWw8VD47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gY29udmVydEZhaWxh
YmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBEZXJpdmVkOjpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51
bGxvcHQpOworCisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlPiBzdHJ1Y3QgQ29udmVydGVyIDog
RGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFi
bGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4gewog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGJvb2w+IDogRGVmYXVsdENvbnZlcnRl
cjxib29sPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBCYXNlQ29udmVy
dGVyPGJvb2wsIENvbnZlcnRlcjxib29sPj4gewogICAgIHN0YXRpYyBib29sIGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsdWUudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPFN0cmluZz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAg
IHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFu
IGFuIG9wdGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxTdHJpbmc+IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxTdHJpbmc+
PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IERlZmF1bHRDb252
ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsgLy8gVXNl
IG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50Lgor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERPTVN0cmluZz4gOiBCYXNlQ29udmVydGVy
PFN0cmluZywgQ29udmVydGVyPElETERPTVN0cmluZz4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExVU1ZTdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsKLSAgICB1c2lu
ZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8gbWVhbiBhbiBv
cHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMVVNWU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0ZXI8SURMRE9N
U3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAgICAgc3RhdGlj
IFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlVG9VU1ZTdHJpbmcoJnN0YXRlLCB2YWx1ZSk7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPEpTQzo6SlNWYWx1ZT4g
OiBEZWZhdWx0Q29udmVydGVyPEpTQzo6SlNWYWx1ZT4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IDogQmFzZUNvbnZlcnRlcjxSZWY8VD4s
IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9
IFJlZlB0cjxUPjsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1lIEpTRE9NV3JhcHBl
ckNvbnZlcnRlclRyYWl0czxUPjo6V3JhcHBlckNsYXNzOworCisgICAgc3RhdGljIE9wdGlvbmFs
PFJlZjxUPj4gY29udmVydEZhaWxhYmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byBv
YmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICAgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGTW92
ZShtYWtlUmVmKCpvYmplY3QpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiA6IEJhc2VDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlLCBDb252ZXJ0
ZXI8SlNDOjpKU1ZhbHVlPj4gewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBKU0M6OkpTVmFs
dWU7IC8vIFVzZSBqc1VuZGVmaW5lZCgpIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5v
dCBwcmVzZW50LgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMTksMTQgKzE0OSwxNCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlCiAgICAgfQogfTsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+IDogRGVmYXVsdENvbnZl
cnRlcjxWZWN0b3I8VD4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8
VmVjdG9yPFQ+PiA6IEJhc2VDb252ZXJ0ZXI8VmVjdG9yPFQ+LCBDb252ZXJ0ZXI8VmVjdG9yPFQ+
Pj4gewogICAgIHN0YXRpYyBWZWN0b3I8VD4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0b05hdGl2ZUFycmF5
PFQ+KHN0YXRlLCB2YWx1ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPGludDhfdD4gOiBEZWZhdWx0Q29udmVydGVyPGludDhfdD4gewordGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPGludDhfdD4gOiBCYXNlQ29udmVydGVyPGludDhfdCwgQ29udmVydGVyPGlu
dDhfdD4+IHsKICAgICBzdGF0aWMgaW50OF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0x
NDEsNyArMTcxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDhfdD4gOiBEZQog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IERlZmF1
bHRDb252ZXJ0ZXI8dWludDhfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4
X3Q+IDogQmFzZUNvbnZlcnRlcjx1aW50OF90LCBDb252ZXJ0ZXI8dWludDhfdD4+IHsKICAgICBz
dGF0aWMgdWludDhfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMTU2LDcgKzE4Niw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IEQKICAgICB9CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50MTZfdD4gOiBEZWZhdWx0Q29udmVydGVyPGlu
dDE2X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6IEJhc2VDb252
ZXJ0ZXI8aW50MTZfdCwgQ29udmVydGVyPGludDE2X3Q+PiB7CiAgICAgc3RhdGljIGludDE2X3Qg
Y29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBz
d2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE3MSw3ICsyMDEsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8aW50MTZfdD4gOiBECiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPHVpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDE2X3Q+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MTZfdD4gOiBCYXNlQ29udmVydGVyPHVpbnQx
Nl90LCBDb252ZXJ0ZXI8dWludDE2X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQxNl90IGNvbnZlcnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJz
aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChj
b25maWd1cmF0aW9uKSB7CkBAIC0xODYsNyArMjE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPHVpbnQxNl90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxpbnQzMl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MzJfdD4gewordGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQzMl90LCBDb252ZXJ0
ZXI8aW50MzJfdD4+IHsKICAgICBzdGF0aWMgaW50MzJfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikg
ewpAQCAtMjAxLDcgKzIzMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQzMl90
PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+
IDogRGVmYXVsdENvbnZlcnRlcjx1aW50MzJfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPHVpbnQzMl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDMyX3QsIENvbnZlcnRlcjx1aW50MzJf
dD4+IHsKICAgICBzdGF0aWMgdWludDMyX3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTIx
Niw3ICsyNDYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDogCiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDY0X3Q+IDogRGVmYXVs
dENvbnZlcnRlcjxpbnQ2NF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRf
dD4gOiBCYXNlQ29udmVydGVyPGludDY0X3QsIENvbnZlcnRlcjxpbnQ2NF90Pj4gewogICAgIHN0
YXRpYyBpbnQ2NF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAg
IHsKICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKQEAgLTIzNCw3ICsyNjQsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBECiAgICAgfQogfTsKIAotdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDY0
X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiBCYXNlQ29udmVy
dGVyPHVpbnQ2NF90LCBDb252ZXJ0ZXI8dWludDY0X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQ2NF90
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAg
aWYgKHZhbHVlLmlzVUludDMyKCkpCkBAIC0yNTIsNyArMjgyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19m
bG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGU+IDogQmFzZUNv
bnZlcnRlcjxULCBDb252ZXJ0ZXI8VD4+IHsKICAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBh
bGxvdykKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKQEAgLTMwNCw3
ICszMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0LCBib29sIGNvbmRpdGlvbj4KIHVzaW5n
IENvbmRpdGlvbmFsRnJvbnQgPSB0eXBlbmFtZSBEZXRhaWw6OkNvbmRpdGlvbmFsRnJvbnQ8TGlz
dCwgY29uZGl0aW9uPjo6dHlwZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLXN0cnVjdCBD
b252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDogRGVmYXVsdENvbnZlcnRlcjx0eXBlbmFtZSBJRExV
bmlvbjxULi4uPjo6SW1wbGVtZW50YXRpb25UeXBlPgorc3RydWN0IENvbnZlcnRlcjxJRExVbmlv
bjxULi4uPj4gOiBCYXNlQ29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+OjpJbXBsZW1l
bnRhdGlvblR5cGUsIENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4+CiB7CiAgICAgdXNpbmcgVHlw
ZSA9IElETFVuaW9uPFQuLi4+OwogICAgIHVzaW5nIFR5cGVMaXN0ID0gdHlwZW5hbWUgVHlwZTo6
VHlwZUxpc3Q7CkBAIC00MDgsNCArNDM4LDMyIEBAIHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5pb248
VC4uLj4+IDogRGVmYXUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgor
c3RydWN0IFZhcmlhZGljQ29udmVydGVyUmVzdWx0IHsKKyAgICB1c2luZyBJdGVtID0gdHlwZW5h
bWUgSURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlOworICAgIHVzaW5nIENvbnRhaW5lciA9IFZl
Y3RvcjxJdGVtPjsKKworICAgIHNpemVfdCBhcmd1bWVudEluZGV4ID0gMDsKKyAgICBPcHRpb25h
bDxDb250YWluZXI+IGFyZ3VtZW50czsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IFZhcmlhZGljQ29udmVydGVyUmVzdWx0PElETFR5cGU+IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQoreworICAgIHNpemVf
dCBsZW5ndGggPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0YXJ0SW5kZXggPiBs
ZW5ndGgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRpY0NvbnZl
cnRlclJlc3VsdDxJRExUeXBlPjo6Q29udGFpbmVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9
IENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydEZhaWxhYmxlKHN0YXRlLCBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
eyBpLCBOdWxsb3B0IH07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgq
dmFsdWUpKTsKKyAgICB9CisgICAgcmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNYTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtMTA4LDI0
ICsxMDcsNiBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iCiAgICAg
cmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50
Pihkb2N1bWVudCkpOwogfQogCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRl
JiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJl
cGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1
ZSBKU0RvY3VtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUg
SlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMx
ICsyNywxMiBAQAogI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTaGFkb3dSb290LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVu
ZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBK
U0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFn
bWVudD4mJiBpbXBsKQogewogICAgIGlmIChpbXBsLT5pc1NoYWRvd1Jvb3QoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5j
cHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuaCIK
LQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5o
IgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFs
dWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3Jh
cHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQot
Ci1KU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0
b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBw
ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpTTm9kZU9y
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTc1LDQ5ICs3NCw0
IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICByZXR1cm4g
Y3JlYXRlTmV3RWxlbWVudFdyYXBwZXIoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsK
IH0KIAotSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwot
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjphZnRl
cihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdy
YXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQotSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9k
ZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVu
dDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3Ry
aW5nLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlT3JTdHJpbmcuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgot
Ci0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNs
dWRlICJKU05vZGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rocm93U2NvcGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZh
cmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUm
IHN0YXRlKQotewotICAgIHVzaW5nIE5vZGVPclN0cmluZ1R5cGUgPSBJRExVbmlvbjxJRExJbnRl
cmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz47Ci0gICAgdXNpbmcgQ29udmVydGVyVHlwZSA9IENv
bnZlcnRlcjxOb2RlT3JTdHJpbmdUeXBlPjsKLQotICAgIHVzaW5nIEludGVyZmFjZVR5cGVMaXN0
ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6SW50ZXJmYWNlVHlwZUxpc3Q7Ci0gICAgdXNpbmcg
SW50ZXJmYWNlVHlwZSA9IGJyaWdhbmQ6OmZyb250PEludGVyZmFjZVR5cGVMaXN0PjsKLSAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxJbnRlcmZhY2VUeXBlLCBJRExJbnRlcmZhY2U8Tm9k
ZT4+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxJbnRlcmZh
Y2VUeXBlTGlzdD46OnZhbHVlID09IDEsICIiKTsKLQotICAgIHVzaW5nIFN0cmluZ1R5cGVMaXN0
ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZUxpc3Q7Ci0gICAgdXNpbmcgU3Ry
aW5nVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlN0cmluZ1R5cGU7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8U3RyaW5nVHlwZSwgSURMRE9NU3RyaW5nPjo6dmFsdWUsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJyaWdhbmQ6OnNpemU8U3RyaW5nVHlwZUxpc3Q+Ojp2YWx1
ZSA9PSAxLCAiIik7Ci0KLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0g
c3RhdGUuYXJndW1lbnRDb3VudCgpOwotCi0gICAgVmVjdG9yPHR5cGVuYW1lIE5vZGVPclN0cmlu
Z1R5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpIHsKLSAgICAgICAgIGF1dG8gaXRlbSA9IENvbnZlcnRlclR5
cGU6OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICByZXN1bHQudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUoaXRlbSkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZU9yU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlT3JTdHJpbmcuaAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gKLSNkZWZpbmUgSlNO
b2RlT3JTdHJpbmdfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsK
LQotVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4g
dG9Ob2RlT3JTdHJpbmdWZWN0b3IoSlNDOjpFeGVjU3RhdGUmKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gSlNOb2RlT3JTdHJpbmdWZWN0b3JfaApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNp
b24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIHBhY2thZ2UgQ29kZUdlbmVy
YXRvcjsKIHVzZSBzdHJpY3Q7CiAKIHVzZSBGaWxlOjpGaW5kOwordXNlIENhcnAgcXc8bG9uZ21l
c3M+OwordXNlIERhdGE6OkR1bXBlcjsKIAogbXkgJHVzZURvY3VtZW50ID0gIiI7CiBteSAkdXNl
R2VuZXJhdG9yID0gIiI7CkBAIC0xMzksNiArMTQxLDE2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRh
YmxlUHJvcGVydGllc05lZWRpbmcKIG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRlcmZhY2Vz
ID0ge307CiAKK3N1YiBhc3NlcnQKK3sKKyAgICBteSAkbWVzc2FnZSA9IHNoaWZ0OworICAgIAor
ICAgIG15ICRtZXNzID0gbG9uZ21lc3MoKTsKKyAgICBwcmludCBEdW1wZXIoJG1lc3MpOworCisg
ICAgZGllICRtZXNzYWdlOworfQorCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKIHsK
QEAgLTMxMCw2ICszMjIsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwogCiAgICAgcmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdP
YmplY3QnOworICAgIHJldHVybiB1bmRlZiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAnVU5JT04nOwog
CiAgICAgaWYgKGV4aXN0cyAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfSkgewog
ICAgICAgICByZXR1cm4gJGNhY2hlZEludGVyZmFjZXMtPnskaW50ZXJmYWNlTmFtZX07CkBAIC0z
MTcsNyArMzMwLDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAgICAjIFN0ZXAgIzE6IEZpbmQg
dGhlIElETCBmaWxlIGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRmaWxlbmFt
ZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCi0gICAgICAg
IG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZh
Y2VOYW1lXCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFtZSAuICJc
IiFcbiIpOworICAgICAgICBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBp
bnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiLCByZWFjaGFibGUgZnJvbSBcIiIgLiAkb3V0ZXJJ
bnRlcmZhY2UtPm5hbWUgLiAiXCIhXG4iKTsKIAogICAgIHByaW50ICIgIHwgIHw+ICBQYXJzaW5n
IHBhcmVudCBJREwgXCIkZmlsZW5hbWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVc
IlxuIiBpZiAkdmVyYm9zZTsKIApAQCAtNjEyLDYgKzYyNSwxMDggQEAgc3ViIEdldFNlcXVlbmNl
T3JGcm96ZW5BcnJheUlubmVyVHlwZQogICAgIHJldHVybiAiIjsKIH0KIAorIyBodHRwOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1mbGF0dGVuZWQtdW5pb24tbWVtYmVyLXR5cGVzCitz
dWIgR2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9u
VHlwZSkgPSBAXzsKKworICAgIG15IEBmbGF0dGVuZWRNZW1iZXJUeXBlcyA9ICgpOworCisgICAg
Zm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoQHskaWRsVW5pb25UeXBlLT5zdWJ0eXBlc30pIHsKKyAg
ICAgICAgaWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0
dGVuZWRNZW1iZXJUeXBlcywgJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMoJG1lbWJl
clR5cGUpCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVuZWRNZW1i
ZXJUeXBlcywgJG1lbWJlclR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQGZs
YXR0ZW5lZE1lbWJlclR5cGVzOworfQorCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jZGZuLW51bWJlci1vZi1udWxsYWJsZS1tZW1iZXItdHlwZXMKK3N1YiBHZXROdW1iZXJPZk51
bGxhYmxlTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkgPSBA
XzsKKworICAgIG15ICRjb3VudCA9IDA7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChA
eyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5cGUtPmlz
TnVsbGFibGUpIHsKKyAgICAgICAgICAgICRjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICAkY291bnQgKz0gJG9iamVj
dC0+R2V0TnVtYmVyT2ZOdWxsYWJsZU1lbWJlclR5cGVzKCRtZW1iZXJUeXBlKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiAkY291bnQ7Cit9CisKK3N1YiBHZXRJRExVbmlvbk1lbWJl
clR5cGVzCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxVbmlvblR5cGUpID0g
QF87CisKKyAgICBteSAkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPSAkb2JqZWN0LT5HZXROdW1i
ZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSk7CisgICAgaWYgKCRudW1iZXJP
Zk51bGxhYmxlTWVtYmVycyA+IDEpIHsKKyAgICAgICAgYXNzZXJ0KCJVbmlvbiB0eXBlcyBtdXN0
IG9ubHkgaGF2ZSAwIG9yIDEgbnVsbGFibGUgdHlwZXMuIik7CisgICAgfQorCisgICAgbXkgQGlk
bFVuaW9uTWVtYmVyVHlwZXMgPSAoKTsKKworICAgIGlmICgkbnVtYmVyT2ZOdWxsYWJsZU1lbWJl
cnMgPT0gMSkgeworICAgICAgICBwdXNoIEBpZGxVbmlvbk1lbWJlclR5cGVzLCAiSURMTnVsbCI7
CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoJG9iamVjdC0+R2V0RmxhdHRl
bmVkTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSkpIHsKKyAgICAgICAgcHVzaCBAaWRsVW5pb25N
ZW1iZXJUeXBlcywgJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJG1lbWJlclR5
cGUpOworICAgIH0KKworICAgIHJldHVybiBAaWRsVW5pb25NZW1iZXJUeXBlczsKK30KKworc3Vi
IEdldEJhc2VJRExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBl
KSA9IEBfOworCisgICAgbXkgJUlETFR5cGVzID0gKAorICAgICAgICAiYW55IiA9PiAiSURMQW55
IiwKKyAgICAgICAgImJvb2xlYW4iID0+ICJJRExCb29sZWFuIiwKKyAgICAgICAgImJ5dGUiID0+
ICJJRExCeXRlIiwKKyAgICAgICAgIm9jdGV0IiA9PiAiSURMT2N0ZXQiLAorICAgICAgICAic2hv
cnQiID0+ICJJRExTaG9ydCIsCisgICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIklETFVuc2ln
bmVkU2hvcnQiLAorICAgICAgICAibG9uZyIgPT4gIklETExvbmciLAorICAgICAgICAidW5zaWdu
ZWQgbG9uZyIgPT4gIklETFVuc2lnbmVkTG9uZyIsCisgICAgICAgICJsb25nIGxvbmciID0+ICJJ
RExMb25nTG9uZyIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJJRExVbnNpZ25l
ZExvbmdMb25nIiwKKyAgICAgICAgImZsb2F0IiA9PiAiSURMRmxvYXQiLAorICAgICAgICAidW5y
ZXN0cmljdGVkIGZsb2F0IiA9PiAiSURMVW5yZXN0cmljdGVkRmxvYXQiLAorICAgICAgICAiZG91
YmxlIiA9PiAiSURMRG91YmxlIiwKKyAgICAgICAgInVucmVzdHJpY3RlZCBkb3VibGUiID0+ICJJ
RExVbnJlc3RyaWN0ZWREb3VibGUiLAorICAgICAgICAiRE9NU3RyaW5nIiA9PiAiSURMRE9NU3Ry
aW5nIiwKKyAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJJRExCeXRlU3RyaW5nIiwKKyAgICAgICAg
IlVTVlN0cmluZyIgPT4gIklETFVTVlN0cmluZyIsCisgICAgKTsKKworICAgIHJldHVybiAkSURM
VHlwZXN7JGlkbFR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkSURMVHlwZXN7JGlkbFR5cGUtPm5hbWV9
OworICAgIHJldHVybiAiSURMRW51bWVyYXRpb248IiAuICRvYmplY3QtPkdldEVudW1lcmF0aW9u
Q2xhc3NOYW1lKCRpbnRlcmZhY2UsICRpZGxUeXBlLT5uYW1lKSAuICI+IiBpZiAkb2JqZWN0LT5J
c0VudW1UeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETERpY3Rpb25hcnk8IiAu
ICRvYmplY3QtPkdldERpY3Rpb25hcnlDbGFzc05hbWUoJGludGVyZmFjZSwgJGlkbFR5cGUtPm5h
bWUpIC4gIj4iIGlmICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJGlkbFR5cGUtPm5hbWUpOwor
ICAgIHJldHVybiAiSURMU2VxdWVuY2U8IiAuICRvYmplY3QtPkdldElETFR5cGUoJGludGVyZmFj
ZSwgQHskaWRsVHlwZS0+c3VidHlwZXN9WzBdKSAuICI+IiBpZiAkb2JqZWN0LT5Jc1NlcXVlbmNl
VHlwZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJRExGcm96ZW5BcnJheTwiIC4gJG9i
amVjdC0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4g
Ij4iIGlmICRvYmplY3QtPklzRnJvemVuQXJyYXlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICBy
ZXR1cm4gIklETFVuaW9uPCIgLiBqb2luKCIsICIsICRvYmplY3QtPkdldElETFVuaW9uTWVtYmVy
VHlwZXMoJGludGVyZmFjZSwgJGlkbFR5cGUpKSAuICI+IiBpZiAkaWRsVHlwZS0+aXNVbmlvbjsK
KyAgICByZXR1cm4gIklETEludGVyZmFjZTwiIC4gJGlkbFR5cGUtPm5hbWUgLiAiPiI7Cit9CisK
K3N1YiBHZXRJRExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBl
KSA9IEBfOworCisgICAgbXkgJGJhc2VJRExUeXBlID0gJG9iamVjdC0+R2V0QmFzZUlETFR5cGUo
JGludGVyZmFjZSwgJGlkbFR5cGUpOworICAgIHJldHVybiAiSURMTnVsbGFibGU8IiAuICRiYXNl
SURMVHlwZSAuICI+IiBpZiAkaWRsVHlwZS0+aXNOdWxsYWJsZTsKKyAgICByZXR1cm4gJGJhc2VJ
RExUeXBlOworfQorCiAjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVm
aW5lZCBpbiBidWlsdGluc19nZW5lcmF0b3IucHkuCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0
dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHht
bEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxh
bmcuCkBAIC03OTEsNiArOTA2LDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIAogICAgIHJldHVybiAw
IGlmICEkb2JqZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRvYmpl
Y3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJV
TklPTiI7CiAgICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAKICAgICBy
ZXR1cm4gMTsKQEAgLTgwNCw3ICs5MjAsNyBAQCBzdWIgZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRy
aWJ1dGVzRnJvbU5hCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VO
YW1lID0gc2hpZnQ7CiAKLSAgICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRl
cmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9y
IGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4iKTsKKyAgICBteSAkaWRsRmlsZSA9ICRv
YmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGFzc2VydCgiQ291
bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4i
KTsKIAogICAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgICAgbXkgQGxpbmVz
ID0gPEZJTEU+OwpAQCAtODM2LDcgKzk1Miw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVy
ZmFjZQogCiAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsK
IAotICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9y
IGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4i
KTsKKyAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBv
ciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwi
IVxuIik7CiAKICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkgQGxpbmVz
ID0gPEZJTEU+OwpAQCAtODcyLDcgKzk4OCw3IEBAIHN1YiBDb21wdXRlSXNGdW5jdGlvbk9ubHlD
YWxsYmFja0ludGVyZmEKIAogICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxsYmFja0lu
dGVyZmFjZSgkdHlwZSk7CiAKLSAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50
ZXJmYWNlKCR0eXBlKSBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZh
Y2UgXCIkdHlwZVwiIVxuIik7CisgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvcklu
dGVyZmFjZSgkdHlwZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50
ZXJmYWNlIFwiJHR5cGVcIiFcbiIpOwogCiAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBk
aWU7CiAgIG15IEBsaW5lcyA9IDxGSUxFPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDY3NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSwyOCBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAg
ICAgfQogfQogCitzdWIgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlCit7CisgICAgbXkgKCRp
ZGxUeXBlLCAkY29uZGl0aW9uYWwpID0gQF87CisKKyAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0
b3ItPlNraXBJbmNsdWRlSGVhZGVyKCRpZGxUeXBlLT5uYW1lKTsKKworICAgIGlmICgkaWRsVHlw
ZS0+aXNVbmlvbikgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9WYXJpYW50Lmg+
IiwgJGNvbmRpdGlvbmFsKTsKKworICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChAeyRp
ZGxUeXBlLT5zdWJ0eXBlc30pIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURM
VHlwZSgkbWVtYmVyVHlwZSwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGlk
bFR5cGUtPm5hbWUpKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkaWRsVHlw
ZS0+bmFtZSAuICIuaCIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiBzdWIgQWRkVG9J
bXBsSW5jbHVkZXMKIHsKICAgICBteSAkaGVhZGVyID0gc2hpZnQ7CkBAIC0zOTA0LDYgKzM5MjYs
NyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkYXJndW1lbnRJbmRleCA9
IDA7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30p
IHsKICAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOworICAgICAgICBteSAkaWRs
VHlwZSA9ICRwYXJhbWV0ZXItPmlkbFR5cGU7CiAKICAgICAgICAgZGllICJPcHRpb25hbCBwYXJh
bWV0ZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIiBp
ZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICEkcGFyYW1ldGVyLT5pc051bGxhYmxlICYmICRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICAgICAgZGllICJPcHRpb25h
bCBwYXJhbWV0ZXJzIHByZWNlZGluZyB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9y
dGVkIiBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAgQHskZnVuY3Rpb24tPnBhcmFtZXRl
cnN9WyRudW1QYXJhbWV0ZXJzIC0gMV0tPmlzVmFyaWFkaWMpOwpAQCAtMzk2NSwxNyArMzk4OCwx
MyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0
ZXItPmlzVmFyaWFkaWMpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7dHlw
ZX0uaCIsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRp
b25hbH0pIHVubGVzcyAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpIG9y
ICEkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAgICAgICAgICBteSAo
JHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1l
ID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGU+
Pigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOwotCi0gICAgICAgICAgICBpZiAoSXNOYXRp
dmVUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEkbmFtZS5hcmd1bWVudHMpXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJG5hbWUuYXJndW1lbnRJbmRleCwgXCIkbmFt
ZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0
eXBlXCIpO1xuIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJK
U0RPTUNvbnZlcnQuaCJ9ID0gMTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURM
VHlwZSgkaWRsVHlwZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfSk7CisgICAgICAgIAorICAgICAgICAgICAgbXkgJG1ldGFUeXBlID0gJGNv
ZGVHZW5lcmF0b3ItPkdldElETFR5cGUoJGludGVyZmFjZSwgJGlkbFR5cGUpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjb252ZXJ0VmFyaWFkaWNB
cmd1bWVudHM8JG1ldGFUeXBlPigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKTsKKwogICAgICAgICAgICAgJHZhbHVlID0gIldU
Rk1vdmUoJG5hbWUuYXJndW1lbnRzLnZhbHVlKCkpIjsKIAogICAgICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsMTMgQEAgc3RydWN0KCBpZGxEb2N1bWVudCA9PiB7CiAgICAgZmlsZU5hbWUg
PT4gJyQnLAogfSk7CiAKK3N0cnVjdCggZG9tVHlwZSA9PiB7CisgICAgbmFtZSA9PiAgICAgICAg
ICckJywgIyBUeXBlIGlkZW50aWZpZXIKKyAgICBpc051bGxhYmxlID0+ICAgJyQnLCAjIElzIHRo
ZSB0eXBlIE51bGxhYmxlIChUPykKKyAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAjIElzIHRoZSB0
eXBlIGEgdW5pb24gKFQgb3IgVSkKKyAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFycmF5IG9m
IHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKK30pOworCiAjIFVz
ZWQgdG8gcmVwcmVzZW50ICdpbnRlcmZhY2UnIGJsb2Nrcwogc3RydWN0KCBkb21JbnRlcmZhY2Ug
PT4gewogICAgIG5hbWUgPT4gJyQnLCAgICAgICMgQ2xhc3MgaWRlbnRpZmllcgpAQCAtNzksMTgg
Kzg2LDEyIEBAIHN0cnVjdCggZG9tQXR0cmlidXRlID0+IHsKICAgICBzaWduYXR1cmUgPT4gJyQn
LCAgICAgICAgICMgQXR0cmlidXRlIHNpZ25hdHVyZQogfSk7CiAKLXN0cnVjdCggZG9tVHlwZSA9
PiB7Ci0gICAgbmFtZSA9PiAgICAgICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKLSAgICBpc051
bGxhYmxlID0+ICAgJyQnLCAjIElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykKLSAgICBpc1VuaW9u
ID0+ICAgICAgJyQnLCAjIElzIHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKLSAgICBzdWJ0eXBl
cyA9PiAgICAgJ0AnLCAjIEFycmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24g
b3Igc2VxdWVuY2UKLX0pOwotCiAjIFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2YXJpYWJs
ZSBuYW1lJyA8LT4gJ3ZhcmlhYmxlIHR5cGUnCiBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CiAg
ICAgZGlyZWN0aW9uID0+ICckJywgICAjIFZhcmlhYmxlIGRpcmVjdGlvbiAoaW4gb3Igb3V0KQog
ICAgIG5hbWUgPT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSBuYW1lCi0gICAgdHlwZSA9PiAnJCcg
ICAgICAsICAjIFZhcmlhYmxlIHR5cGUKKyAgICB0eXBlID0+ICckJywgICAgICAgICMgVmFyaWFi
bGUgdHlwZSBuYW1lIChERVBSRUNBVEVEIC0gcGxlYXNlIHVzZSBpZGxUeXBlKQorICAgIGlkbFR5
cGUgPT4gJyQnLCAgICAgIyBWYXJpYWJsZSB0eXBlCiAgICAgc3BlY2lhbHMgPT4gJ0AnLCAgICAj
IFNwZWNpYWxzCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRy
aWJ1dGVzCiAgICAgaXNOdWxsYWJsZSA9PiAnJCcsICAjIElzIHZhcmlhYmxlIHR5cGUgTnVsbGFi
bGUgKFQ/KQpAQCAtNzA1LDYgKzcwNiw3IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1iZXIKICAg
ICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwogCiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICAkbWVt
YmVyLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG1lbWJlci0+dHlwZSgkdHlwZS0+bmFtZSk7
CiAgICAgICAgICRtZW1iZXItPmlzTnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogCkBAIC0x
MjUyLDYgKzEyNTQsNyBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVSZXN0CiAgICAgICAgICRuZXdEYXRh
Tm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwogICAgICAgICAKICAgICAgICAg
bXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNO
dWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTE1NDQsNiArMTU0Nyw3IEBAIHN1YiBw
YXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAib3B0aW9uYWwiLCBfX0xJTkVfXyk7CiAKICAgICAg
ICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2Rl
LT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoaWRlbnRpZmll
clJlbW92ZU51bGxhYmxlUHJlZml4KCR0eXBlLT5uYW1lKSk7CiAgICAgICAgICRwYXJhbURhdGFO
b2RlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPmlzT3B0aW9uYWwoMSk7CkBAIC0xNTUzLDYgKzE1NTcsNyBAQCBzdWIgcGFyc2VPcHRpb25h
bE9yUmVxdWlyZWRBcmd1bWVudAogICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVu
dGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8p
IHsKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJh
bURhdGFOb2RlLT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUo
JHR5cGUtPm5hbWUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgkdHlwZS0+
aXNOdWxsYWJsZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc09wdGlvbmFsKDApOwpAQCAt
MTYxNSw2ICsxNjIwLDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAgJG5ld0Rh
dGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAKICAgICAgICAgbXkgJHR5
cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJl
LT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUo
JHR5cGUtPm5hbWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJs
ZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA2NzcyKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTksNiArMzU5LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdo
IiwgImtpbmRhLWxvdwogICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoRE9NU3RyaW5nIGhl
YWQsIERPTVN0cmluZy4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKHVu
cmVzdHJpY3RlZCBkb3VibGUgaGVhZCwgdW5yZXN0cmljdGVkIGRvdWJsZS4uLiB0YWlsKTsKICAg
ICB2b2lkIHZhcmlhZGljTm9kZU1ldGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFpbCk7CisgICAg
dm9pZCB2YXJpYWRpY1VuaW9uTWV0aG9kKERPTVN0cmluZyBoZWFkLCAoTm9kZSBvciBET01TdHJp
bmcpLi4uIHRhaWwpOwogCiAgICAgLy8gTnVsbGFibGUgYXR0cmlidXRlcy4KICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZT8gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAj
aW5jbHVkZSAiSlNUZXN0T2JqZWN0QS5oIgpAQCAtOTcxLDYgKzk3Miw3IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1Vu
aW9uTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU3Nyw2ICsxNTc5
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgInZh
cmlhZGljU3RyaW5nTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlh
ZGljRG91YmxlTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljRG91YmxlTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGlj
Tm9kZU1ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y05vZGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAidmFyaWFkaWNVbmlvbk1l
dGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9u
TWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImFueSIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAi
dGVzdFByb21pc2VGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpLCAoaW50
cHRyX3QpICgxKSB9IH0sCkBAIC02NjE5LDkgKzY2MjIsOCBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGJs
b2JBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNCbG9iLCBCbG9iPj4oKnN0YXRl
LCAwKTsKLSAgICBpZiAoIWJsb2JBcmdzLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBibG9iQXJncy5hcmd1bWVudElu
ZGV4LCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2Ii
KTsKKyAgICBhdXRvIGJsb2JBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVy
ZmFjZTxCbG9iPj4oKnN0YXRlLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3Zl
KGJsb2JBcmdzLmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTcxMzcsNyArNzEzOSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmco
c3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpK
U1ZhbHVlLCBTdHJpbmc+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJp
YWRpY0FyZ3VtZW50czxJRExET01TdHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZhcmlhZGlj
U3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFsdWUo
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03MTU4
LDcgKzcxNjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3Vi
bGU+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZp
bml0ZTo6WWVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpT
Qzo6SlNWYWx1ZSwgZG91YmxlPj4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSBjb252ZXJ0
VmFyaWFkaWNBcmd1bWVudHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
aW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJn
dW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNzE4MCwxMyArNzE4MiwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAgICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJoZWFk
IiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKLSAgICBhdXRv
IHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU05vZGUsIE5vZGU+Pigqc3RhdGUs
IDEpOwotICAgIGlmICghdGFpbC5hcmd1bWVudHMpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgdGFpbC5hcmd1bWVudEluZGV4LCAidGFp
bCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgYXV0
byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxOb2RlPj4oKnN0
YXRlLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwu
YXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQoreworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljVW5pb25NZXRob2QiKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgYXV0byBoZWFkID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KHN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbmlv
bjxJRExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBs
LnZhcmlhZGljVW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50
cy52YWx1ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2
aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtMTM3LDcgKzEzOCw3IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFT
U0VSVChjYXN0ZWRUaGlzKTsKLSAgICBhdXRvIGxvbmdBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFk
aWNIZWxwZXI8SlNDOjpKU1ZhbHVlLCBpbnQzMl90Pj4oKnN0YXRlLCAwKTsKKyAgICBhdXRvIGxv
bmdBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+KCpzdGF0ZSwgMCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92
ZShsb25nQXJncykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRl
ZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4
IEBACiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5vZGUgewot
ICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGJl
Zm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24s
IEN1c3RvbV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsK
KyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChO
b2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsK
KyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVwbGFjZVdp
dGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAgICAgW1Vuc2NvcGFibGUsIE1heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9QYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UGFyZW50Tm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
YXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAKLSAgICBbVW5zY29wYWJs
ZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBwcmVwZW5kKChOb2RlIG9y
IERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVz
KTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcHJlcGVu
ZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOwogCiAgICAgLy8gW1Vuc2NvcGFibGVdIEVsZW1lbnQ/IHF1ZXJ5KERPTVN0cmluZyByZWxh
dGl2ZVNlbGVjdG9ycyk7CiAgICAgLy8gW05ld09iamVjdCwgVW5zY29wYWJsZV0gRWxlbWVudHMg
cXVlcnlBbGwoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290636</attachid>
            <date>2016-10-04 12:47:46 -0700</date>
            <delta_ts>2016-10-04 13:46:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004124436.patch</filename>
            <type>text/plain</type>
            <size>66150</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFT
dHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1lZGlh
U3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQoKSk7CisgICAgICAgIG1lZGlhU3RyZWFt
SWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBzZW5kZXIgPSBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1l
ZGlhU3RyZWFtLWJhc2VkIEFQSSAobW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykK
ICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFj
az4mJiwgY29uc3QgVmVjdG9yPFJlZjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcyOSw4ICsyNzI5LDYgQEAKIAkJN0Mx
RTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRTk3MjYxQTlGOTgzNDAw
N0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdG
OThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAv
KiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAz
OEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmggKi87IH07Ci0JCTdDMzNGMzVBMUI0QTA0NDgwMDUwMkNBRiAvKiBK
U0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3Vt
ZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwICovOyB9OwogCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTI3NjQsOCArMjc2Miw2IEBACiAJCTdD
Nzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTdD
Nzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovOyB9OwogCQk3Qzgz
REU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyog
U3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDOTFBMzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05v
ZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovOyB9
OwotCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhFMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovOyB9OwogCQk3QzkzRjM0OTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk3QzkzRjM0QTFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBp
bGVyLmNwcCAqLzsgfTsKQEAgLTk4MjUsOCArOTgyMSw2IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQw
MDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMzRjM1
QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk4NzIsOCArOTg2Niw2IEBACiAJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAv
KiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2Myw4ICsyMTA1NSw2
IEBACiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5o
ICovLAogCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2su
Y3BwICovLAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJh
Y2suaCAqLywKLQkJCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
Y3BwICovLAotCQkJCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5o
ICovLAogCQkJCUNCMzhGRDU1MUNEMjFENUIwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnlD
dXN0b20uY3BwICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKQEAgLTIxMTE2LDcgKzIxMTA2LDYgQEAKIAkJ
CQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLywKLQkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyog
SlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTdDRUYyNjE4MUQ2QTky
RTMwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCkBAIC0yMTEzOCw3ICsyMTEyNyw2
IEBACiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmgg
Ki8sCiAJCQkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRU
eXBlQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNET01N
aW1lVHlwZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QTBENzQ2NUU3MDA2NDQyRTkg
LyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEIwRDc0NjVFNzAw
NjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCAqLywKQEAgLTI1MjEwLDcgKzI1MTk4LDYg
QEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMgLyogSlNOb2RlTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M5MUEzOTAxQjQ5OEFCRTAwM0Y5RUZBIC8q
IEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAz
QjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E2MTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFFQzFFMjkxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTkwLDcgKzI4NTc3LDYgQEAKIAkJCQlGREEx
NUVBMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUYzMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U0NoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzM0YzNUExQjRBMDQ0ODAw
NTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY2Miw3ICsyODY0OCw2IEBACiAJCQkJ
N0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA1RjFDMDJCNDQ0MDA2QTFBMDAgLyogSlNEb2N1bWVu
dFRpbWVsaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1MDlEMUNDNjAwMDBCRTMy
NSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1RTFCNEEw
NENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2MzA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEN0MwMEQyOUE0NjMwMEI5OTE4RiAvKiBK
U0RPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkyNCw3ICsyODkwOSw2
IEBACiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMkMyMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcwMDVDOTBBMiAv
KiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDOTFBMzhGMUI0OThB
QkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUw
M0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxRUMxRTI4MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDaGFyYWN0ZXJEYXRhLmgi
Ci0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1Zh
bHVlIEpTQ2hhcmFjdGVyRGF0YTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFm
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0
ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdp
dGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDQ2ICszNDEsNiBAQCB0ZW1wbGF0
ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgVmFyaWFk
aWNIZWxwZXJCYXNlIHsKLSAgICB1c2luZyBJdGVtID0gRE9NQ2xhc3M7Ci0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxET01D
bGFzcz4gVHJhaXRzVHlwZTsKLSAgICAgICAgRE9NQ2xhc3MgaW5kZXhWYWx1ZTsKLSAgICAgICAg
aWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShzdGF0ZSwganNWYWx1ZSwgaW5kZXhWYWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7
Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+Ci1zdHJ1Y3QgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhSlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQnVpbHRp
bj46OnR5cGU+IHsKLSAgICB1c2luZyBDbGFzcyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsK
LSAgICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47Ci0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKQotICAgIHsKLSAgICAgICAgYXV0byogdmFsdWUgPSBKU0NsYXNzOjp0b1dyYXBw
ZWQoanNWYWx1ZSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+KCp2YWx1ZSk7Ci0gICAgfQotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+Ci1zdHJ1Y3Qg
VmFyaWFkaWNIZWxwZXIgOiBwdWJsaWMgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNs
YXNzPiB7Ci0gICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyQmFzZTxKU0Ns
YXNzLCBET01DbGFzcz46Okl0ZW07Ci0gICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+
OwotCi0gICAgc3RydWN0IFJlc3VsdCB7Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4Owot
ICAgICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKLSAgICB9OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpS
ZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9IDAp
OwogCiAvLyBJbmxpbmUgZnVuY3Rpb25zIGFuZCB0ZW1wbGF0ZSBkZWZpbml0aW9ucy4KIApAQCAt
ODkzLDI0ICs4NTMsNiBAQCBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWlj
CiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBwcm9wZXJ0eU5h
bWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpSZXN1bHQgdG9B
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qgc3RhcnRJbmRleCkKLXsKLSAg
ICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwotICAgIGlmIChzdGFydElu
ZGV4ID4gbGVuZ3RoKQotICAgICAgICByZXR1cm4geyAwLCBOdWxsb3B0IH07Ci0KLSAgICB0eXBl
bmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29udGFpbmVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChp
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0
IH07Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh2YWx1ZS52YWx1ZSgp
KSk7Ci0gICAgfQotICAgIHJldHVybiB7IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Ci19Ci0K
IHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIw
Njc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw0NSArNzMsNzUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSlNUPiBpbmxpbgogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0Q29udmVydGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIERlcml2ZWQ+IHN0cnVjdCBCYXNlQ29udmVydGVyIHsKICAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gT3B0aW9uYWw8VD47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VD4gY29udmVydEZhaWxh
YmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBEZXJpdmVkOjpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51
bGxvcHQpOworCisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlPiBzdHJ1Y3QgQ29udmVydGVyIDog
RGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFi
bGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4gewog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGJvb2w+IDogRGVmYXVsdENvbnZlcnRl
cjxib29sPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBCYXNlQ29udmVy
dGVyPGJvb2wsIENvbnZlcnRlcjxib29sPj4gewogICAgIHN0YXRpYyBib29sIGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsdWUudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPFN0cmluZz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAg
IHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFu
IGFuIG9wdGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxTdHJpbmc+IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxTdHJpbmc+
PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IERlZmF1bHRDb252
ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsgLy8gVXNl
IG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50Lgor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERPTVN0cmluZz4gOiBCYXNlQ29udmVydGVy
PFN0cmluZywgQ29udmVydGVyPElETERPTVN0cmluZz4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZh
bHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExVU1ZTdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsKLSAgICB1c2lu
ZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8gbWVhbiBhbiBv
cHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMVVNWU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0ZXI8SURMRE9N
U3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAgICAgc3RhdGlj
IFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlVG9VU1ZTdHJpbmcoJnN0YXRlLCB2YWx1ZSk7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPEpTQzo6SlNWYWx1ZT4g
OiBEZWZhdWx0Q29udmVydGVyPEpTQzo6SlNWYWx1ZT4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IDogQmFzZUNvbnZlcnRlcjxSZWY8VD4s
IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+PiB7CisgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9
IFJlZlB0cjxUPjsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1lIEpTRE9NV3JhcHBl
ckNvbnZlcnRlclRyYWl0czxUPjo6V3JhcHBlckNsYXNzOworCisgICAgc3RhdGljIE9wdGlvbmFs
PFJlZjxUPj4gY29udmVydEZhaWxhYmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgYXV0byBv
YmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICAgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFrZVJl
Zigqb2JqZWN0KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlND
OjpKU1ZhbHVlPiA6IEJhc2VDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlLCBDb252ZXJ0ZXI8SlNDOjpK
U1ZhbHVlPj4gewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBKU0M6OkpTVmFsdWU7IC8vIFVz
ZSBqc1VuZGVmaW5lZCgpIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50
LgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMTksMTQgKzE0OSwxNCBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlCiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxWZWN0
b3I8VD4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VmVjdG9yPFQ+
PiA6IEJhc2VDb252ZXJ0ZXI8VmVjdG9yPFQ+LCBDb252ZXJ0ZXI8VmVjdG9yPFQ+Pj4gewogICAg
IHN0YXRpYyBWZWN0b3I8VD4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0b05hdGl2ZUFycmF5PFQ+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDhf
dD4gOiBEZWZhdWx0Q29udmVydGVyPGludDhfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPGludDhfdD4gOiBCYXNlQ29udmVydGVyPGludDhfdCwgQ29udmVydGVyPGludDhfdD4+IHsK
ICAgICBzdGF0aWMgaW50OF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0xNDEsNyArMTcx
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDhfdD4gOiBEZQogICAgIH0KIH07
CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IERlZmF1bHRDb252ZXJ0
ZXI8dWludDhfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogQmFz
ZUNvbnZlcnRlcjx1aW50OF90LCBDb252ZXJ0ZXI8dWludDhfdD4+IHsKICAgICBzdGF0aWMgdWlu
dDhfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJ
bnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMTU2LDcgKzE4Niw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8aW50MTZfdD4gOiBEZWZhdWx0Q29udmVydGVyPGludDE2X3Q+IHsK
K3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6IEJhc2VDb252ZXJ0ZXI8aW50
MTZfdCwgQ29udmVydGVyPGludDE2X3Q+PiB7CiAgICAgc3RhdGljIGludDE2X3QgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNv
bmZpZ3VyYXRpb24pIHsKQEAgLTE3MSw3ICsyMDEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJ0ZXI8aW50MTZfdD4gOiBECiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPHVpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDE2X3Q+IHsKK3RlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjx1aW50MTZfdD4gOiBCYXNlQ29udmVydGVyPHVpbnQxNl90LCBDb252
ZXJ0ZXI8dWludDE2X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQxNl90IGNvbnZlcnQoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0
aW9uKSB7CkBAIC0xODYsNyArMjE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVp
bnQxNl90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQz
Ml90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MzJfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPGludDMyX3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQzMl90LCBDb252ZXJ0ZXI8aW50MzJf
dD4+IHsKICAgICBzdGF0aWMgaW50MzJfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMjAx
LDcgKzIzMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQzMl90PiA6IEQKICAg
ICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDogRGVmYXVs
dENvbnZlcnRlcjx1aW50MzJfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQz
Ml90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDMyX3QsIENvbnZlcnRlcjx1aW50MzJfdD4+IHsKICAg
ICBzdGF0aWMgdWludDMyX3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24p
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTIxNiw3ICsyNDYs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDogCiAgICAgfQogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDY0X3Q+IDogRGVmYXVsdENvbnZlcnRl
cjxpbnQ2NF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBCYXNl
Q29udmVydGVyPGludDY0X3QsIENvbnZlcnRlcjxpbnQ2NF90Pj4gewogICAgIHN0YXRpYyBpbnQ2
NF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKQEAgLTIzNCw3ICsyNjQsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBECiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDY0X3Q+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiBCYXNlQ29udmVydGVyPHVpbnQ2
NF90LCBDb252ZXJ0ZXI8dWludDY0X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGNvbnZlcnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJz
aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVl
LmlzVUludDMyKCkpCkBAIC0yNTIsNyArMjgyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPHVpbnQ2NF90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGU+IDogQmFzZUNvbnZlcnRlcjxU
LCBDb252ZXJ0ZXI8VD4+IHsKICAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKICAg
ICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKQEAgLTMwNCw3ICszMzQsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0LCBib29sIGNvbmRpdGlvbj4KIHVzaW5nIENvbmRpdGlv
bmFsRnJvbnQgPSB0eXBlbmFtZSBEZXRhaWw6OkNvbmRpdGlvbmFsRnJvbnQ8TGlzdCwgY29uZGl0
aW9uPjo6dHlwZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLXN0cnVjdCBDb252ZXJ0ZXI8
SURMVW5pb248VC4uLj4+IDogRGVmYXVsdENvbnZlcnRlcjx0eXBlbmFtZSBJRExVbmlvbjxULi4u
Pjo6SW1wbGVtZW50YXRpb25UeXBlPgorc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4g
OiBCYXNlQ29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+OjpJbXBsZW1lbnRhdGlvblR5
cGUsIENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4+CiB7CiAgICAgdXNpbmcgVHlwZSA9IElETFVu
aW9uPFQuLi4+OwogICAgIHVzaW5nIFR5cGVMaXN0ID0gdHlwZW5hbWUgVHlwZTo6VHlwZUxpc3Q7
CkBAIC00MDgsNCArNDM4LDMyIEBAIHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDog
RGVmYXUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IFZh
cmlhZGljQ29udmVydGVyUmVzdWx0IHsKKyAgICB1c2luZyBJdGVtID0gdHlwZW5hbWUgSURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlOworICAgIHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxJdGVt
PjsKKworICAgIHNpemVfdCBhcmd1bWVudEluZGV4ID0gMDsKKyAgICBPcHRpb25hbDxDb250YWlu
ZXI+IGFyZ3VtZW50czsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IFZhcmlhZGlj
Q29udmVydGVyUmVzdWx0PElETFR5cGU+IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQoreworICAgIHNpemVfdCBsZW5ndGgg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlclJlc3Vs
dDxJRExUeXBlPjo6Q29udGFpbmVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFy
dEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IENvbnZlcnRl
cjxJRExUeXBlPjo6Y29udmVydEZhaWxhYmxlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dChpKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4geyBpLCBOdWxs
b3B0IH07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdmFsdWUpKTsK
KyAgICB9CisgICAgcmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUg
IkpTSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgotI2luY2x1ZGUgIkpT
Tm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNYTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtMTA4LDI0ICsxMDcsNiBA
QCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iCiAgICAgcmV0dXJuIHRv
SlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50Pihkb2N1bWVu
dCkpOwogfQogCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3Vt
ZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVu
dDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5j
cHAJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMxICsyNywxMiBA
QAogI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTaGFkb3dS
b290LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVP
clN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3VtZW50
RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBp
bXBsKQogewogICAgIGlmIChpbXBsLT5pc1NoYWRvd1Jvb3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuaCIKLQotI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNEb2N1
bWVudFR5cGU6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUp
LCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFm
dGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVl
IEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0
cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTc1LDQ5ICs3NCw0IEBAIEpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICByZXR1cm4gY3JlYXRlTmV3
RWxlbWVudFdyYXBwZXIoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsKIH0KIAotSlNW
YWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Io
c3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5h
ZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1
ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5n
VmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQot
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVu
ZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdy
YXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNl
dERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmlu
Z1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0K
LSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcAko
cmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi0jaW5jbHVk
ZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU05v
ZGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Rocm93U2NvcGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVm
PE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIHVzaW5nIE5vZGVPclN0cmluZ1R5cGUgPSBJRExVbmlvbjxJRExJbnRlcmZhY2U8Tm9k
ZT4sIElETERPTVN0cmluZz47Ci0gICAgdXNpbmcgQ29udmVydGVyVHlwZSA9IENvbnZlcnRlcjxO
b2RlT3JTdHJpbmdUeXBlPjsKLQotICAgIHVzaW5nIEludGVyZmFjZVR5cGVMaXN0ID0gdHlwZW5h
bWUgQ29udmVydGVyVHlwZTo6SW50ZXJmYWNlVHlwZUxpc3Q7Ci0gICAgdXNpbmcgSW50ZXJmYWNl
VHlwZSA9IGJyaWdhbmQ6OmZyb250PEludGVyZmFjZVR5cGVMaXN0PjsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxJbnRlcmZhY2VUeXBlLCBJRExJbnRlcmZhY2U8Tm9kZT4+Ojp2YWx1
ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxJbnRlcmZhY2VUeXBlTGlz
dD46OnZhbHVlID09IDEsICIiKTsKLQotICAgIHVzaW5nIFN0cmluZ1R5cGVMaXN0ID0gdHlwZW5h
bWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZUxpc3Q7Ci0gICAgdXNpbmcgU3RyaW5nVHlwZSA9
IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlN0cmluZ1R5cGU7Ci0gICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8U3RyaW5nVHlwZSwgSURMRE9NU3RyaW5nPjo6dmFsdWUsICIiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJyaWdhbmQ6OnNpemU8U3RyaW5nVHlwZUxpc3Q+Ojp2YWx1ZSA9PSAxLCAi
Iik7Ci0KLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gc3RhdGUuYXJn
dW1lbnRDb3VudCgpOwotCi0gICAgVmVjdG9yPHR5cGVuYW1lIE5vZGVPclN0cmluZ1R5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGFyZ3VtZW50Q291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVu
dENvdW50OyArK2kpIHsKLSAgICAgICAgIGF1dG8gaXRlbSA9IENvbnZlcnRlclR5cGU6OmNvbnZl
cnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUoaXRlbSkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZU9yU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlT3JTdHJpbmcuaAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlT3JTdHJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gKLSNkZWZpbmUgSlNOb2RlT3JTdHJp
bmdfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotVmVjdG9y
PHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4gdG9Ob2RlT3JT
dHJpbmdWZWN0b3IoSlNDOjpFeGVjU3RhdGUmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gSlNOb2RlT3JTdHJpbmdWZWN0b3JfaApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA2Nzcy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIHBhY2thZ2UgQ29kZUdlbmVyYXRvcjsKIHVz
ZSBzdHJpY3Q7CiAKIHVzZSBGaWxlOjpGaW5kOwordXNlIENhcnAgcXc8bG9uZ21lc3M+OwordXNl
IERhdGE6OkR1bXBlcjsKIAogbXkgJHVzZURvY3VtZW50ID0gIiI7CiBteSAkdXNlR2VuZXJhdG9y
ID0gIiI7CkBAIC0xMzksNiArMTQxLDE2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRhYmxlUHJvcGVy
dGllc05lZWRpbmcKIG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRlcmZhY2VzID0ge307CiAK
K3N1YiBhc3NlcnQKK3sKKyAgICBteSAkbWVzc2FnZSA9IHNoaWZ0OworICAgIAorICAgIG15ICRt
ZXNzID0gbG9uZ21lc3MoKTsKKyAgICBwcmludCBEdW1wZXIoJG1lc3MpOworCisgICAgZGllICRt
ZXNzYWdlOworfQorCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKIHsKQEAgLTMxMCw2
ICszMjIsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNo
aWZ0OwogCiAgICAgcmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdPYmplY3QnOwor
ICAgIHJldHVybiB1bmRlZiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAnVU5JT04nOwogCiAgICAgaWYg
KGV4aXN0cyAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfSkgewogICAgICAgICBy
ZXR1cm4gJGNhY2hlZEludGVyZmFjZXMtPnskaW50ZXJmYWNlTmFtZX07CkBAIC0zMTcsNyArMzMw
LDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAgICAjIFN0ZXAgIzE6IEZpbmQgdGhlIElETCBm
aWxlIGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRmaWxlbmFtZSA9ICRvYmpl
Y3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCi0gICAgICAgIG9yIGRpZSgi
Q291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIs
IHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFtZSAuICJcIiFcbiIpOwor
ICAgICAgICBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2Ug
XCIkaW50ZXJmYWNlTmFtZVwiLCByZWFjaGFibGUgZnJvbSBcIiIgLiAkb3V0ZXJJbnRlcmZhY2Ut
Pm5hbWUgLiAiXCIhXG4iKTsKIAogICAgIHByaW50ICIgIHwgIHw+ICBQYXJzaW5nIHBhcmVudCBJ
REwgXCIkZmlsZW5hbWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIlxuIiBpZiAk
dmVyYm9zZTsKIApAQCAtNjEyLDYgKzYyNSwxMDggQEAgc3ViIEdldFNlcXVlbmNlT3JGcm96ZW5B
cnJheUlubmVyVHlwZQogICAgIHJldHVybiAiIjsKIH0KIAorIyBodHRwOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2Rmbi1mbGF0dGVuZWQtdW5pb24tbWVtYmVyLXR5cGVzCitzdWIgR2V0Rmxh
dHRlbmVkTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkgPSBA
XzsKKworICAgIG15IEBmbGF0dGVuZWRNZW1iZXJUeXBlcyA9ICgpOworCisgICAgZm9yZWFjaCBt
eSAkbWVtYmVyVHlwZSAoQHskaWRsVW5pb25UeXBlLT5zdWJ0eXBlc30pIHsKKyAgICAgICAgaWYg
KCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVuZWRNZW1i
ZXJUeXBlcywgJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMoJG1lbWJlclR5cGUpCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVuZWRNZW1iZXJUeXBlcywg
JG1lbWJlclR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQGZsYXR0ZW5lZE1l
bWJlclR5cGVzOworfQorCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLW51
bWJlci1vZi1udWxsYWJsZS1tZW1iZXItdHlwZXMKK3N1YiBHZXROdW1iZXJPZk51bGxhYmxlTWVt
YmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAg
IG15ICRjb3VudCA9IDA7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChAeyRpZGxVbmlv
blR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5cGUtPmlzTnVsbGFibGUp
IHsKKyAgICAgICAgICAgICRjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCRtZW1i
ZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICAkY291bnQgKz0gJG9iamVjdC0+R2V0TnVt
YmVyT2ZOdWxsYWJsZU1lbWJlclR5cGVzKCRtZW1iZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiAkY291bnQ7Cit9CisKK3N1YiBHZXRJRExVbmlvbk1lbWJlclR5cGVzCit7
CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxVbmlvblR5cGUpID0gQF87CisKKyAg
ICBteSAkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPSAkb2JqZWN0LT5HZXROdW1iZXJPZk51bGxh
YmxlTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSk7CisgICAgaWYgKCRudW1iZXJPZk51bGxhYmxl
TWVtYmVycyA+IDEpIHsKKyAgICAgICAgYXNzZXJ0KCJVbmlvbiB0eXBlcyBtdXN0IG9ubHkgaGF2
ZSAwIG9yIDEgbnVsbGFibGUgdHlwZXMuIik7CisgICAgfQorCisgICAgbXkgQGlkbFVuaW9uTWVt
YmVyVHlwZXMgPSAoKTsKKworICAgIGlmICgkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPT0gMSkg
eworICAgICAgICBwdXNoIEBpZGxVbmlvbk1lbWJlclR5cGVzLCAiSURMTnVsbCI7CisgICAgfQor
CisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVy
VHlwZXMoJGlkbFVuaW9uVHlwZSkpIHsKKyAgICAgICAgcHVzaCBAaWRsVW5pb25NZW1iZXJUeXBl
cywgJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJG1lbWJlclR5cGUpOworICAg
IH0KKworICAgIHJldHVybiBAaWRsVW5pb25NZW1iZXJUeXBlczsKK30KKworc3ViIEdldEJhc2VJ
RExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBlKSA9IEBfOwor
CisgICAgbXkgJUlETFR5cGVzID0gKAorICAgICAgICAiYW55IiA9PiAiSURMQW55IiwKKyAgICAg
ICAgImJvb2xlYW4iID0+ICJJRExCb29sZWFuIiwKKyAgICAgICAgImJ5dGUiID0+ICJJRExCeXRl
IiwKKyAgICAgICAgIm9jdGV0IiA9PiAiSURMT2N0ZXQiLAorICAgICAgICAic2hvcnQiID0+ICJJ
RExTaG9ydCIsCisgICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIklETFVuc2lnbmVkU2hvcnQi
LAorICAgICAgICAibG9uZyIgPT4gIklETExvbmciLAorICAgICAgICAidW5zaWduZWQgbG9uZyIg
PT4gIklETFVuc2lnbmVkTG9uZyIsCisgICAgICAgICJsb25nIGxvbmciID0+ICJJRExMb25nTG9u
ZyIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJJRExVbnNpZ25lZExvbmdMb25n
IiwKKyAgICAgICAgImZsb2F0IiA9PiAiSURMRmxvYXQiLAorICAgICAgICAidW5yZXN0cmljdGVk
IGZsb2F0IiA9PiAiSURMVW5yZXN0cmljdGVkRmxvYXQiLAorICAgICAgICAiZG91YmxlIiA9PiAi
SURMRG91YmxlIiwKKyAgICAgICAgInVucmVzdHJpY3RlZCBkb3VibGUiID0+ICJJRExVbnJlc3Ry
aWN0ZWREb3VibGUiLAorICAgICAgICAiRE9NU3RyaW5nIiA9PiAiSURMRE9NU3RyaW5nIiwKKyAg
ICAgICAgIkJ5dGVTdHJpbmciID0+ICJJRExCeXRlU3RyaW5nIiwKKyAgICAgICAgIlVTVlN0cmlu
ZyIgPT4gIklETFVTVlN0cmluZyIsCisgICAgKTsKKworICAgIHJldHVybiAkSURMVHlwZXN7JGlk
bFR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkSURMVHlwZXN7JGlkbFR5cGUtPm5hbWV9OworICAgIHJl
dHVybiAiSURMRW51bWVyYXRpb248IiAuICRvYmplY3QtPkdldEVudW1lcmF0aW9uQ2xhc3NOYW1l
KCRpbnRlcmZhY2UsICRpZGxUeXBlLT5uYW1lKSAuICI+IiBpZiAkb2JqZWN0LT5Jc0VudW1UeXBl
KCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETERpY3Rpb25hcnk8IiAuICRvYmplY3Qt
PkdldERpY3Rpb25hcnlDbGFzc05hbWUoJGludGVyZmFjZSwgJGlkbFR5cGUtPm5hbWUpIC4gIj4i
IGlmICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVy
biAiSURMU2VxdWVuY2U8IiAuICRvYmplY3QtPkdldElETFR5cGUoJGludGVyZmFjZSwgQHskaWRs
VHlwZS0+c3VidHlwZXN9WzBdKSAuICI+IiBpZiAkb2JqZWN0LT5Jc1NlcXVlbmNlVHlwZSgkaWRs
VHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJRExGcm96ZW5BcnJheTwiIC4gJG9iamVjdC0+R2V0
SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRv
YmplY3QtPklzRnJvemVuQXJyYXlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklE
TFVuaW9uPCIgLiBqb2luKCIsICIsICRvYmplY3QtPkdldElETFVuaW9uTWVtYmVyVHlwZXMoJGlu
dGVyZmFjZSwgJGlkbFR5cGUpKSAuICI+IiBpZiAkaWRsVHlwZS0+aXNVbmlvbjsKKyAgICByZXR1
cm4gIklETEludGVyZmFjZTwiIC4gJGlkbFR5cGUtPm5hbWUgLiAiPiI7Cit9CisKK3N1YiBHZXRJ
RExUeXBlCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBlKSA9IEBfOwor
CisgICAgbXkgJGJhc2VJRExUeXBlID0gJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFj
ZSwgJGlkbFR5cGUpOworICAgIHJldHVybiAiSURMTnVsbGFibGU8IiAuICRiYXNlSURMVHlwZSAu
ICI+IiBpZiAkaWRsVHlwZS0+aXNOdWxsYWJsZTsKKyAgICByZXR1cm4gJGJhc2VJRExUeXBlOwor
fQorCiAjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5lZCBpbiBi
dWlsdGluc19nZW5lcmF0b3IucHkuCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxl
IHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5n
IGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCkBAIC03
OTEsNiArOTA2LDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIAogICAgIHJldHVybiAwIGlmICEkb2Jq
ZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzVHlw
ZWRBcnJheVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAg
ICAgcmV0dXJuIDAgaWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAKICAgICByZXR1cm4gMTsK
QEAgLTgwNCw3ICs5MjAsNyBAQCBzdWIgZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJv
bU5hCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hp
ZnQ7CiAKLSAgICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGlu
dGVyZmFjZU5hbWUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFj
ZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4iKTsKKyAgICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklE
TEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZp
bmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4iKTsKIAogICAg
IG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgICAgbXkgQGxpbmVzID0gPEZJTEU+
OwpAQCAtODM2LDcgKzk1Miw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogCiAg
IHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKIAotICBteSAk
aWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9yIGRpZSgiQ291
bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKKyAgbXkg
JGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBvciBhc3NlcnQo
IkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CiAK
ICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkgQGxpbmVzID0gPEZJTEU+
OwpAQCAtODcyLDcgKzk4OCw3IEBAIHN1YiBDb21wdXRlSXNGdW5jdGlvbk9ubHlDYWxsYmFja0lu
dGVyZmEKIAogICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxsYmFja0ludGVyZmFjZSgk
dHlwZSk7CiAKLSAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0
eXBlKSBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlw
ZVwiIVxuIik7CisgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgk
dHlwZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwi
JHR5cGVcIiFcbiIpOwogCiAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgIG15
IEBsaW5lcyA9IDxGSUxFPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtMjM5LDYgKzIzOSwyOCBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfQogfQog
CitzdWIgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlCit7CisgICAgbXkgKCRpZGxUeXBlLCAk
Y29uZGl0aW9uYWwpID0gQF87CisKKyAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPlNraXBJ
bmNsdWRlSGVhZGVyKCRpZGxUeXBlLT5uYW1lKTsKKworICAgIGlmICgkaWRsVHlwZS0+aXNVbmlv
bikgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9WYXJpYW50Lmg+IiwgJGNvbmRp
dGlvbmFsKTsKKworICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChAeyRpZGxUeXBlLT5z
dWJ0eXBlc30pIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkbWVt
YmVyVHlwZSwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGlkbFR5cGUtPm5h
bWUpKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkaWRsVHlwZS0+bmFtZSAu
ICIuaCIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiBzdWIgQWRkVG9JbXBsSW5jbHVk
ZXMKIHsKICAgICBteSAkaGVhZGVyID0gc2hpZnQ7CkBAIC0zOTA0LDYgKzM5MjYsNyBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkYXJndW1lbnRJbmRleCA9IDA7CiAgICAg
Zm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAg
ICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOworICAgICAgICBteSAkaWRsVHlwZSA9ICRw
YXJhbWV0ZXItPmlkbFR5cGU7CiAKICAgICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIG9m
IG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAkcGFyYW1l
dGVyLT5pc09wdGlvbmFsICYmICEkcGFyYW1ldGVyLT5pc051bGxhYmxlICYmICRjb2RlR2VuZXJh
dG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0
ZXJzIHByZWNlZGluZyB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAo
JHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAgQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9WyRudW1Q
YXJhbWV0ZXJzIC0gMV0tPmlzVmFyaWFkaWMpOwpAQCAtMzk2NSwxNyArMzk4OCwxMyBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICR2YWx1
ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFy
aWFkaWMpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7dHlwZX0uaCIsICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIHVu
bGVzcyAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpIG9yICEkY29kZUdl
bmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAgICAgICAgICBteSAoJHdyYXBwZXJU
eXBlLCAkd3JhcHBlZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gdG9Bcmd1
bWVudHM8VmFyaWFkaWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGU+Pigqc3RhdGUs
ICRhcmd1bWVudEluZGV4KTtcbiIpOwotCi0gICAgICAgICAgICBpZiAoSXNOYXRpdmVUeXBlKCR0
eXBlKSkgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKCEkbmFtZS5hcmd1bWVudHMpXG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgJG5hbWUuYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2
aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xu
Iik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUNvbnZl
cnQuaCJ9ID0gMTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkaWRs
VHlwZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlv
bmFsfSk7CisgICAgICAgIAorICAgICAgICAgICAgbXkgJG1ldGFUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPkdldElETFR5cGUoJGludGVyZmFjZSwgJGlkbFR5cGUpOworICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8
JG1ldGFUeXBlPigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7XG4iKTsKKwogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5h
bWUuYXJndW1lbnRzLnZhbHVlKCkpIjsKIAogICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsMTMgQEAgc3RydWN0KCBpZGxEb2N1bWVudCA9PiB7CiAgICAgZmlsZU5hbWUgPT4gJyQnLAog
fSk7CiAKK3N0cnVjdCggZG9tVHlwZSA9PiB7CisgICAgbmFtZSA9PiAgICAgICAgICckJywgIyBU
eXBlIGlkZW50aWZpZXIKKyAgICBpc051bGxhYmxlID0+ICAgJyQnLCAjIElzIHRoZSB0eXBlIE51
bGxhYmxlIChUPykKKyAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAjIElzIHRoZSB0eXBlIGEgdW5p
b24gKFQgb3IgVSkKKyAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFycmF5IG9mIHN1YnR5cGVz
LCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKK30pOworCiAjIFVzZWQgdG8gcmVw
cmVzZW50ICdpbnRlcmZhY2UnIGJsb2Nrcwogc3RydWN0KCBkb21JbnRlcmZhY2UgPT4gewogICAg
IG5hbWUgPT4gJyQnLCAgICAgICMgQ2xhc3MgaWRlbnRpZmllcgpAQCAtNzksMTggKzg2LDEyIEBA
IHN0cnVjdCggZG9tQXR0cmlidXRlID0+IHsKICAgICBzaWduYXR1cmUgPT4gJyQnLCAgICAgICAg
ICMgQXR0cmlidXRlIHNpZ25hdHVyZQogfSk7CiAKLXN0cnVjdCggZG9tVHlwZSA9PiB7Ci0gICAg
bmFtZSA9PiAgICAgICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKLSAgICBpc051bGxhYmxlID0+
ICAgJyQnLCAjIElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykKLSAgICBpc1VuaW9uID0+ICAgICAg
JyQnLCAjIElzIHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKLSAgICBzdWJ0eXBlcyA9PiAgICAg
J0AnLCAjIEFycmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVu
Y2UKLX0pOwotCiAjIFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2YXJpYWJsZSBuYW1lJyA8
LT4gJ3ZhcmlhYmxlIHR5cGUnCiBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CiAgICAgZGlyZWN0
aW9uID0+ICckJywgICAjIFZhcmlhYmxlIGRpcmVjdGlvbiAoaW4gb3Igb3V0KQogICAgIG5hbWUg
PT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSBuYW1lCi0gICAgdHlwZSA9PiAnJCcgICAgICAsICAj
IFZhcmlhYmxlIHR5cGUKKyAgICB0eXBlID0+ICckJywgICAgICAgICMgVmFyaWFibGUgdHlwZSBu
YW1lIChERVBSRUNBVEVEIC0gcGxlYXNlIHVzZSBpZGxUeXBlKQorICAgIGlkbFR5cGUgPT4gJyQn
LCAgICAgIyBWYXJpYWJsZSB0eXBlCiAgICAgc3BlY2lhbHMgPT4gJ0AnLCAgICAjIFNwZWNpYWxz
CiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCiAg
ICAgaXNOdWxsYWJsZSA9PiAnJCcsICAjIElzIHZhcmlhYmxlIHR5cGUgTnVsbGFibGUgKFQ/KQpA
QCAtNzA1LDYgKzcwNiw3IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1iZXIKICAgICAgICAgJG1l
bWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogCiAgICAg
ICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICAkbWVtYmVyLT5pZGxU
eXBlKCR0eXBlKTsKICAgICAgICAgJG1lbWJlci0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAg
ICRtZW1iZXItPmlzTnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogCkBAIC0xMjUyLDYgKzEy
NTQsNyBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVSZXN0CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwogICAgICAgICAKICAgICAgICAgbXkgJHR5cGUg
PSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5p
ZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5
cGUtPm5hbWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgk
dHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTE1NDQsNiArMTU0Nyw3IEBAIHN1YiBwYXJzZU9wdGlv
bmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAib3B0aW9uYWwiLCBfX0xJTkVfXyk7CiAKICAgICAgICAgbXkgJHR5
cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5pZGxUeXBl
KCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoaWRlbnRpZmllclJlbW92ZU51
bGxhYmxlUHJlZml4KCR0eXBlLT5uYW1lKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051
bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0
aW9uYWwoMSk7CkBAIC0xNTUzLDYgKzE1NTcsNyBAQCBzdWIgcGFyc2VPcHRpb25hbE9yUmVxdWly
ZWRBcmd1bWVudAogICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9r
ZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8pIHsKICAgICAg
ICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2Rl
LT5pZGxUeXBlKCR0eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUtPm5h
bWUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJs
ZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc09wdGlvbmFsKDApOwpAQCAtMTYxNSw2ICsx
NjIwLDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2Vs
Zi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pZGxUeXBl
KCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5cGUtPm5h
bWUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgkdHlwZS0+
aXNOdWxsYWJsZSk7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksNiArMzU5LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRh
LWxvdwogICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoRE9NU3RyaW5nIGhlYWQsIERPTVN0
cmluZy4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKHVucmVzdHJpY3Rl
ZCBkb3VibGUgaGVhZCwgdW5yZXN0cmljdGVkIGRvdWJsZS4uLiB0YWlsKTsKICAgICB2b2lkIHZh
cmlhZGljTm9kZU1ldGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFpbCk7CisgICAgdm9pZCB2YXJp
YWRpY1VuaW9uTWV0aG9kKERPTVN0cmluZyBoZWFkLCAoTm9kZSBvciBET01TdHJpbmcpLi4uIHRh
aWwpOwogCiAgICAgLy8gTnVsbGFibGUgYXR0cmlidXRlcy4KICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGRvdWJsZT8gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcg
QEAKICNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAjaW5jbHVkZSAi
SlNUZXN0T2JqZWN0QS5oIgpAQCAtOTcxLDYgKzk3Miw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9k
KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU3Nyw2ICsxNTc5LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgInZhcmlhZGljU3Ry
aW5nTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
U3RyaW5nTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGljRG91Ymxl
TWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91
YmxlTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGljTm9kZU1ldGhv
ZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRo
b2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAidmFyaWFkaWNVbmlvbk1ldGhvZCIsIEpT
Qzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKSwg
KGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImFueSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BbnkpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAidGVzdFByb21p
c2VGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpLCAoaW50cHRyX3QpICgx
KSB9IH0sCkBAIC02NjE5LDkgKzY2MjIsOCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGJsb2JBcmdzID0g
dG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNCbG9iLCBCbG9iPj4oKnN0YXRlLCAwKTsKLSAg
ICBpZiAoIWJsb2JBcmdzLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBibG9iQXJncy5hcmd1bWVudEluZGV4LCAiYmxv
YkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBh
dXRvIGJsb2JBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxCbG9i
Pj4oKnN0YXRlLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGJsb2JBcmdz
LmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTcxMzcsNyArNzEzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVlLCBT
dHJpbmc+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3Vt
ZW50czxJRExET01TdHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0
aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03MTU4LDcgKzcxNjAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTQzo6SlNWYWx1
ZSwgZG91YmxlPj4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNB
cmd1bWVudHM8SURMVW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC52YXJp
YWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZh
bHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NzE4MCwxMyArNzE4MiwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAgICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQogICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJoZWFkIiwgIlRlc3RP
YmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKLSAgICBhdXRvIHRhaWwgPSB0
b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU05vZGUsIE5vZGU+Pigqc3RhdGUsIDEpOwotICAg
IGlmICghdGFpbC5hcmd1bWVudHMpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgdGFpbC5hcmd1bWVudEluZGV4LCAidGFpbCIsICJUZXN0
T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgYXV0byB0YWlsID0g
Y29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAxKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRz
LnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInZhcmlhZGljVW5pb25NZXRob2QiKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byBoZWFkID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbmlvbjxJRExJbnRl
cmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLnZhcmlhZGlj
VW5pb25NZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjA2
NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtMTM3LDcgKzEzOCw3IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0
ZWRUaGlzKTsKLSAgICBhdXRvIGxvbmdBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8
SlNDOjpKU1ZhbHVlLCBpbnQzMl90Pj4oKnN0YXRlLCAwKTsKKyAgICBhdXRvIGxvbmdBcmdzID0g
Y29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+KCpzdGF0ZSwgMCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9i
amVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShsb25nQXJn
cykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiBbCiAg
ICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5vZGUgewotICAgIFtVbnNj
b3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGJlZm9yZSgoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0g
dm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5z
Y29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERP
TVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5z
Y29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVwbGFjZVdpdGgoKE5vZGUg
b3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAgICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5
RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Q
YXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9k
ZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2Rl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmlu
ZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwg
Q3VzdG9tXSB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBb
VW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcHJlcGVuZCgoTm9kZSBv
ciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogCiAg
ICAgLy8gW1Vuc2NvcGFibGVdIEVsZW1lbnQ/IHF1ZXJ5KERPTVN0cmluZyByZWxhdGl2ZVNlbGVj
dG9ycyk7CiAgICAgLy8gW05ld09iamVjdCwgVW5zY29wYWJsZV0gRWxlbWVudHMgcXVlcnlBbGwo
RE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290639</attachid>
            <date>2016-10-04 13:46:34 -0700</date>
            <delta_ts>2016-10-04 15:33:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004134324.patch</filename>
            <type>text/plain</type>
            <size>66191</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTQsOCArMTE0LDggQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+
IG1lZGlhU3RyZWFtSWRzOwotICAgIGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAg
ICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLmdldCgpLmlkKCkpOworICAgIGZvciAoYXV0
byYgc3RyZWFtIDogc3RyZWFtcykKKyAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKHN0cmVh
bS0+aWQoKSk7CiAKICAgICBSVENSdHBTZW5kZXIqIHNlbmRlciA9IG51bGxwdHI7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiBsZWdhY3kgTWVkaWFTdHJlYW0tYmFzZWQg
QVBJIChtb3N0bHkgaW1wbGVtZW50ZWQgYXMgSlMgYnVpbHQtaW5zKQogICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1zKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kLT5nZXRSZW1vdGVTdHJlYW1zKCk7IH0KIAotICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFk
ZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxS
VENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0
b3I8UmVmPE1lZGlhU3RyZWFtPj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVU
cmFjayhSVENSdHBTZW5kZXImLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGlzIGVudW0g
aXMgbWlycm9yZWQgaW4gUlRDUnRwVHJhbnNjZWl2ZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2Nzcy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzI5LDggKzI3MjksNiBAQAogCQk3QzFFOTcyODFBOUY5ODM0MDA3
QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0Zp
bGxCdXR0b25FbGVtZW50LmggKi87IH07CiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBK
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5jcHAgKi87IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCAqLzsgfTsKLQkJN0MzM0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLzsg
fTsKLQkJN0MzM0YzNUUxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNGMzVD
MUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi87IH07CiAJCTdD
MzNGMzYyMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAxQjRB
MDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCTdD
M0E5MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNCODgw
MEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXIuY3BwICovOyB9OwpAQCAtMjc2NCw4ICsyNzYyLDYgQEAKIAkJN0M3OTQxRTQxQzU2QzI5MzAw
QTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyog
RGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJN0M3OTQxRTUxQzU2QzI5MzAw
QTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBE
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJCTdDODNERTg2MUQwNENDNUQwMEZF
QkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAq
LzsgfTsKLQkJN0M5MUEzOEYxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhEMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi87IH07Ci0JCTdDOTFBMzkwMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9k
ZU9yU3RyaW5nLmggKi87IH07CiAJCTdDOTNGMzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M5M0YzNDcxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5jcHAgKi87IH07CiAJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRl
bnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QzkzRjM0RDFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRC
MUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpA
QCAtOTgyNSw4ICs5ODIxLDYgQEAKIAkJN0MxRTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9G
aWxsQnV0dG9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRv
RmlsbEJ1dHRvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkRE
M0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyog
SlNET01HbG9iYWxPYmplY3RUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzNGMzVDMUI0QTA0Q0UwMDUwMkNB
RiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVu
dEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQTkx
RTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNz
YWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2Vy
TWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg3Miw4
ICs5ODY2LDYgQEAKIAkJN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRM
aW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZF
QkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ByaW5nU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDOTFBMzhEMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU05vZGVPclN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGVPclN0cmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzRCMUFBNkJGMDcw
MEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDYzLDggKzIxMDU1LDYgQEAKIAkJCQlFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJQzZGNDIw
QTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8sCiAJCQkJQzZG
NDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5oICovLAotCQkJCTdD
OTFBMzhEMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi8sCi0JCQkJN0M5
MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi8sCiAJCQkJQ0IzOEZE
NTUxQ0QyMUQ1QjAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAgKi8sCiAJ
CQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5oICovLApAQCAtMjExMTYsNyArMjExMDYsNiBAQAogCQkJCUJFNkRGNzEwMTcxQ0Ey
REEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQk4OTMxREU1
QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
LAotCQkJCTdDMzNGMzU4MUI0QTA0NDgwMDUwMkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwICovLAogCQkJCTQ2QTU4QUM0MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0
b20uY3BwICovLAogCQkJCUE1ODRGRTM3MTg2NERBQzEwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5l
QVBJSG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJN0NFRjI2MTgxRDZBOTJFMzAwQkU5MDVEIC8qIEpT
Q3J5cHRvQ3VzdG9tLmNwcCAqLywKQEAgLTIxMTM4LDcgKzIxMTI3LDYgQEAKIAkJCQk0OUM3QkE4
QzEwNDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQUREQTk0
QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0b20uaCAqLywKIAkJCQk3QzMzRjM2
MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLywKLQkJ
CQk3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICov
LAogCQkJCUE5QzZFNjQ2MEQ3NDY1Q0EwMDY0NDJFOSAvKiBKU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwICovLAogCQkJCUE5QzZFNjRBMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QjBENzQ2NUU3MDA2NDQyRTkgLyogSlNET01Q
bHVnaW5DdXN0b20uY3BwICovLApAQCAtMjUyMTAsNyArMjUxOTgsNiBAQAogCQkJCTFBNzUwRDhF
MEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNEOUMyQzMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFEMjBCMThEMThFOUQyMzcwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3VzdG9tLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM1MDNDQTYxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUVDMUUyOTE0RkY2
MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg1OTAsNyArMjg1NzcsNiBAQAogCQkJCUZEQTE1RUExMTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVERjMxRjMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTQ2hhcmFjdGVyRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1QTFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTg3MEYzQ0UyQTcw
MENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZBNThBQzUx
RDQ2QjNGQTAwNDMyMDM2IC8qIEpTQ2xpZW50UmVjdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0MwNjU4OTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI4NjYyLDcgKzI4NjQ4LDYgQEAKIAkJCQk3QzMzRjM2MjFCNEEwNTA0
MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTEyMjFFMDVGMUMwMkI0NDQwMDZBMUEwMCAvKiBKU0RvY3VtZW50VGltZWxpbmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRjUwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBK
U0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMyMjYwQzBEQjY5
RjE5MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzQjcwRDYzMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM2MEQ3QzAwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NQ29yZUV4Y2VwdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTI0LDcgKzI4OTA5LDYgQEAKIAkJCQkxQTc1MERE
NDBBOTBFNzI5MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEOUMyQzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNEOUMyNjUwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M5MUEzOEYxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpT
Tm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzNTAzQ0EzMTAxNzlBRDcwMDNC
NDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUwM0NBNTEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzFFQzFFMjgxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY3
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NoYXJhY3RlckRhdGEuaCIKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNDaGFyYWN0ZXJE
YXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB3cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6YWZ0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0ZXIo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlND
aGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmlu
Z1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0K
LSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9u
IDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDEsNDYgKzM0MSw2IEBAIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGgKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZh
bHVlVHJhaXRzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFz
cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlckJhc2Ugewot
ICAgIHVzaW5nIEl0ZW0gPSBET01DbGFzczsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBj
b252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBl
OwotICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OwotICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJp
YWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWlsdGluPjo6dHlwZT4gewotICAg
IHVzaW5nIENsYXNzID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOwotICAgIHVzaW5nIEl0ZW0g
PSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJ
dGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICBhdXRvKiB2YWx1ZSA9IEpTQ2xhc3M6OnRvV3JhcHBlZChqc1ZhbHVlKTsKLSAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnZhbHVlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlciA6
IHB1YmxpYyBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3M+IHsKLSAgICB1c2lu
ZyBJdGVtID0gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzPjo6
SXRlbTsKLSAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8SXRlbT47Ci0KLSAgICBzdHJ1Y3Qg
UmVzdWx0IHsKLSAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXg7Ci0gICAgICAgIE9wdGlvbmFs
PENvbnRhaW5lcj4gYXJndW1lbnRzOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBW
YXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAKIC8vIElubGluZSBm
dW5jdGlvbnMgYW5kIHRlbXBsYXRlIGRlZmluaXRpb25zLgogCkBAIC04OTMsMjQgKzg1Myw2IEBA
IGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWMKICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWRpY0hl
bHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQotewotICAgIHNpemVfdCBsZW5ndGgg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKLQotICAgIHR5cGVuYW1lIFZhcmlhZGljSGVs
cGVyOjpDb250YWluZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNIZWxwZXI6
OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsKLSAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHZhbHVlLnZhbHVlKCkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQogdGVtcGxhdGU8SlNDOjpO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gSlNDOjpFbmNvZGVkSlNW
YWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBsZW5ndGgsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDQ1ICs3Myw3NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IGlubGluCiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRDb252ZXJ0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVyaXZlZD4gc3Ry
dWN0IEJhc2VDb252ZXJ0ZXIgewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBPcHRpb25hbDxU
PjsKKworICAgIHN0YXRpYyBPcHRpb25hbDxUPiBjb252ZXJ0RmFpbGFibGUoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBhdXRvJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IERlcml2ZWQ6OmNvbnZlcnQoc3RhdGUsIHZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgTnVsbG9wdCk7CisKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFbmFibGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBEZWZhdWx0Q29udmVydGVy
PFQ+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZT4gc3RydWN0IENvbnZl
cnRlciA6IEJhc2VDb252ZXJ0ZXI8VCwgQ29udmVydGVyPFQ+PiB7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBEZWZhdWx0Q29udmVydGVyPGJvb2w+IHsKK3RlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjxib29sPiA6IEJhc2VDb252ZXJ0ZXI8Ym9vbCwgQ29udmVy
dGVyPGJvb2w+PiB7CiAgICAgc3RhdGljIGJvb2wgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50b0Jv
b2xlYW4oJnN0YXRlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8
U3RyaW5nPiA6IERlZmF1bHRDb252ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxW
YWx1ZSA9IFN0cmluZzsgLy8gVXNlIG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFs
dWUgd2FzIG5vdCBwcmVzZW50LgordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPFN0cmluZz4g
OiBCYXNlQ29udmVydGVyPFN0cmluZywgQ29udmVydGVyPFN0cmluZz4+IHsKKyAgICB1c2luZyBP
cHRpb25hbFZhbHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxJRExET01TdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsK
LSAgICB1c2luZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8g
bWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0
ZXI8SURMRE9NU3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAg
ICAgc3RhdGljIFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVTVlN0cmlu
Zz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUg
PSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFuIGFuIG9wdGlvbmFsIHZhbHVlIHdh
cyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVU1ZTdHJpbmc+
IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxJRExET01TdHJpbmc+PiB7CisgICAg
dXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gdmFsdWVUb1VTVlN0cmluZygmc3RhdGUsIHZhbHVlKTsKICAgICB9CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiA6IERlZmF1bHRDb252ZXJ0
ZXI8SlNDOjpKU1ZhbHVlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVy
PElETEludGVyZmFjZTxUPj4gOiBCYXNlQ29udmVydGVyPFJlZjxUPiwgQ29udmVydGVyPElETElu
dGVyZmFjZTxUPj4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZhbHVlID0gUmVmUHRyPFQ+OworICAg
IHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRz
PFQ+OjpXcmFwcGVyQ2xhc3M7CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFQ+PiBjb252ZXJ0
RmFpbGFibGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBhdXRvIG9iamVjdCA9IFdyYXBwZXJU
eXBlOjp0b1dyYXBwZWQodmFsdWUpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYWtlUmVmKCpvYmplY3QpOworICAg
IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxKU0M6OkpTVmFsdWU+IDogQmFz
ZUNvbnZlcnRlcjxKU0M6OkpTVmFsdWUsIENvbnZlcnRlcjxKU0M6OkpTVmFsdWU+PiB7CiAgICAg
dXNpbmcgT3B0aW9uYWxWYWx1ZSA9IEpTQzo6SlNWYWx1ZTsgLy8gVXNlIGpzVW5kZWZpbmVkKCkg
dG8gbWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKQEAgLTExOSwxNCArMTQ5LDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxK
U0M6OkpTVmFsdWUKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29u
dmVydGVyPFZlY3RvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFZlY3RvcjxUPj4gewordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+IDogQmFzZUNvbnZlcnRl
cjxWZWN0b3I8VD4sIENvbnZlcnRlcjxWZWN0b3I8VD4+PiB7CiAgICAgc3RhdGljIFZlY3RvcjxU
PiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4oc3RhdGUsIHZhbHVlKTsKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlZmF1bHRDb252
ZXJ0ZXI8aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IEJh
c2VDb252ZXJ0ZXI8aW50OF90LCBDb252ZXJ0ZXI8aW50OF90Pj4gewogICAgIHN0YXRpYyBpbnQ4
X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE0MSw3ICsxNzEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlCiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50OF90PiB7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDhfdD4gOiBCYXNlQ29udmVydGVyPHVpbnQ4
X3QsIENvbnZlcnRlcjx1aW50OF90Pj4gewogICAgIHN0YXRpYyB1aW50OF90IGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9u
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25m
aWd1cmF0aW9uKSB7CkBAIC0xNTYsNyArMTg2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPHVpbnQ4X3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRl
cjxpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MTZfdD4gewordGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPGludDE2X3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQxNl90LCBDb252ZXJ0ZXI8
aW50MTZfdD4+IHsKICAgICBzdGF0aWMgaW50MTZfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpA
QCAtMTcxLDcgKzIwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6
IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDE2X3Q+IDog
RGVmYXVsdENvbnZlcnRlcjx1aW50MTZfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVy
PHVpbnQxNl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDE2X3QsIENvbnZlcnRlcjx1aW50MTZfdD4+
IHsKICAgICBzdGF0aWMgdWludDE2X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE4Niw3
ICsyMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDE2X3Q+IDogCiAgICAg
fQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRGVmYXVsdENv
bnZlcnRlcjxpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50MzJfdD4g
OiBCYXNlQ29udmVydGVyPGludDMyX3QsIENvbnZlcnRlcjxpbnQzMl90Pj4gewogICAgIHN0YXRp
YyBpbnQzMl90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0yMDEsNyArMjMxLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiBEZWZhdWx0Q29udmVydGVyPHVpbnQz
Ml90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDogQmFzZUNvbnZl
cnRlcjx1aW50MzJfdCwgQ29udmVydGVyPHVpbnQzMl90Pj4gewogICAgIHN0YXRpYyB1aW50MzJf
dCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMjE2LDcgKzI0Niw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiAKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBEZWZhdWx0Q29udmVydGVyPGludDY0X3Q+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8aW50NjRf
dCwgQ29udmVydGVyPGludDY0X3Q+PiB7CiAgICAgc3RhdGljIGludDY0X3QgY29udmVydChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQpAQCAtMjM0LDcgKzI2NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxp
bnQ2NF90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWlu
dDY0X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50NjRfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPHVpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDY0X3QsIENvbnZlcnRlcjx1
aW50NjRfdD4+IHsKICAgICBzdGF0aWMgdWludDY0X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkKQEAg
LTI1Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDY0X3Q+IDog
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46
OnR5cGU+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4g
ewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKICAgICAgICAgSlND
OjpWTSYgdm0gPSBzdGF0ZS52bSgpOwpAQCAtMzA0LDcgKzMzNCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIExpc3QsIGJvb2wgY29uZGl0aW9uPgogdXNpbmcgQ29uZGl0aW9uYWxGcm9udCA9IHR5cGVu
YW1lIERldGFpbDo6Q29uZGl0aW9uYWxGcm9udDxMaXN0LCBjb25kaXRpb24+Ojp0eXBlOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4g
OiBEZWZhdWx0Q29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+OjpJbXBsZW1lbnRhdGlv
blR5cGU+CitzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6IEJhc2VDb252ZXJ0ZXI8
dHlwZW5hbWUgSURMVW5pb248VC4uLj46OkltcGxlbWVudGF0aW9uVHlwZSwgQ29udmVydGVyPElE
TFVuaW9uPFQuLi4+Pj4KIHsKICAgICB1c2luZyBUeXBlID0gSURMVW5pb248VC4uLj47CiAgICAg
dXNpbmcgVHlwZUxpc3QgPSB0eXBlbmFtZSBUeXBlOjpUeXBlTGlzdDsKQEAgLTQwOCw0ICs0Mzgs
MzIgQEAgc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdQogICAgIH0KIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXJS
ZXN1bHQgeworICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+OworCisgICAgc2l6ZV90
IGFyZ3VtZW50SW5kZXggPSAwOworICAgIE9wdGlvbmFsPENvbnRhaW5lcj4gYXJndW1lbnRzOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gVmFyaWFkaWNDb252ZXJ0ZXJSZXN1bHQ8
SURMVHlwZT4gY29udmVydFZhcmlhZGljQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
c2l6ZV90IHN0YXJ0SW5kZXgpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRlLmFyZ3VtZW50
Q291bnQoKTsKKyAgICBpZiAoc3RhcnRJbmRleCA+IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyUmVzdWx0PElETFR5cGU+OjpDb250
YWluZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAt
IHN0YXJ0SW5kZXgpOworCisgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gQ29udmVydGVyPElETFR5cGU+Ojpjb252
ZXJ0RmFpbGFibGUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsKKyAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOworICAgIH0KKyAgICByZXR1
cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9OworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1hNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNs
dWRlICJOb2RlVHJhdmVyc2FsLmgiCkBAIC0xMDgsMjQgKzEwNyw2IEBAIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2IKICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+KGRvY3VtZW50KSk7CiB9CiAKLUpTVmFs
dWUgSlNEb2N1bWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9y
KHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQo
KS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExp
c3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2
NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzEgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNE
b2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1NoYWRvd1Jvb3QuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1ZhbHVlIEpTRG9jdW1l
bnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6YXBwZW5k
KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3Jh
cHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQogSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwpCiB7CiAgICAgaWYg
KGltcGwtPmlzU2hhZG93Um9vdCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCShub25l
eGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YmVmb3Jl
KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3Jh
cHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQotSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0ZXIodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwot
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
Njc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNsdWRlICJK
U05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1NW
R0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgpAQCAtNzUsNDkgKzc0LDQgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEV4ZWNTdGF0ZSosIEpTRAogICAgIHJldHVybiBjcmVhdGVOZXdFbGVtZW50V3JhcHBlcihn
bG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwogfQogCi1KU1ZhbHVlIEpTRWxlbWVudDo6
YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQotSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9yU3Ry
aW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsK
LQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6cmVw
bGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBl
Yyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3Rh
dGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnByZXBlbmQo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNF
bGVtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwg
ZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShyZXZpc2lvbiAyMDY3NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLSNpbmNsdWRlICJJRExUeXBlcy5oIgot
I2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgotI2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhy
b3dTY29wZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8Tm9kZT4sIFN0cmluZz4+
IHRvTm9kZU9yU3RyaW5nVmVjdG9yKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgdXNpbmcgTm9k
ZU9yU3RyaW5nVHlwZSA9IElETFVuaW9uPElETEludGVyZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5n
PjsKLSAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPE5vZGVPclN0cmluZ1R5cGU+
OwotCi0gICAgdXNpbmcgSW50ZXJmYWNlVHlwZUxpc3QgPSB0eXBlbmFtZSBDb252ZXJ0ZXJUeXBl
OjpJbnRlcmZhY2VUeXBlTGlzdDsKLSAgICB1c2luZyBJbnRlcmZhY2VUeXBlID0gYnJpZ2FuZDo6
ZnJvbnQ8SW50ZXJmYWNlVHlwZUxpc3Q+OwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PEludGVyZmFjZVR5cGUsIElETEludGVyZmFjZTxOb2RlPj46OnZhbHVlLCAiIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChicmlnYW5kOjpzaXplPEludGVyZmFjZVR5cGVMaXN0Pjo6dmFsdWUgPT0gMSwg
IiIpOwotCi0gICAgdXNpbmcgU3RyaW5nVHlwZUxpc3QgPSB0eXBlbmFtZSBDb252ZXJ0ZXJUeXBl
OjpTdHJpbmdUeXBlTGlzdDsKLSAgICB1c2luZyBTdHJpbmdUeXBlID0gdHlwZW5hbWUgQ29udmVy
dGVyVHlwZTo6U3RyaW5nVHlwZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTdHJp
bmdUeXBlLCBJRExET01TdHJpbmc+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnJp
Z2FuZDo6c2l6ZTxTdHJpbmdUeXBlTGlzdD46OnZhbHVlID09IDEsICIiKTsKLQotICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotCi0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7Ci0K
LSAgICBWZWN0b3I8dHlwZW5hbWUgTm9kZU9yU3RyaW5nVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3Vu
dCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewot
ICAgICAgICAgYXV0byBpdGVtID0gQ29udmVydGVyVHlwZTo6Y29udmVydChzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoaSkpOwotICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShpdGVtKSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5oCShy
ZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0
cmluZy5oCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgSlNOb2RlT3JTdHJpbmdfaAotI2RlZmluZSBKU05vZGVPclN0cmluZ19oCi0KLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKLX0KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50
YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihKU0M6
OkV4ZWNTdGF0ZSYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBKU05v
ZGVPclN0cmluZ1ZlY3Rvcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDggQEAgcGFja2FnZSBDb2RlR2VuZXJhdG9yOwogdXNlIHN0cmljdDsKIAogdXNl
IEZpbGU6OkZpbmQ7Cit1c2UgQ2FycCBxdzxsb25nbWVzcz47Cit1c2UgRGF0YTo6RHVtcGVyOwog
CiBteSAkdXNlRG9jdW1lbnQgPSAiIjsKIG15ICR1c2VHZW5lcmF0b3IgPSAiIjsKQEAgLTEzOSw2
ICsxNDEsMTYgQEAgbXkgJXN2Z1R5cGVXaXRoV3JpdGFibGVQcm9wZXJ0aWVzTmVlZGluZwogbXkg
JGlkbEZpbGVzOwogbXkgJGNhY2hlZEludGVyZmFjZXMgPSB7fTsKIAorc3ViIGFzc2VydAorewor
ICAgIG15ICRtZXNzYWdlID0gc2hpZnQ7CisgICAgCisgICAgbXkgJG1lc3MgPSBsb25nbWVzcygp
OworICAgIHByaW50IER1bXBlcigkbWVzcyk7CisKKyAgICBkaWUgJG1lc3NhZ2U7Cit9CisKICMg
RGVmYXVsdCBjb25zdHJ1Y3Rvcgogc3ViIG5ldwogewpAQCAtMzEwLDYgKzMyMiw3IEBAIHN1YiBQ
YXJzZUludGVyZmFjZQogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICByZXR1
cm4gdW5kZWYgaWYgJGludGVyZmFjZU5hbWUgZXEgJ09iamVjdCc7CisgICAgcmV0dXJuIHVuZGVm
IGlmICRpbnRlcmZhY2VOYW1lIGVxICdVTklPTic7CiAKICAgICBpZiAoZXhpc3RzICRjYWNoZWRJ
bnRlcmZhY2VzLT57JGludGVyZmFjZU5hbWV9KSB7CiAgICAgICAgIHJldHVybiAkY2FjaGVkSW50
ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfTsKQEAgLTMxNyw3ICszMzAsNyBAQCBzdWIgUGFyc2VJ
bnRlcmZhY2UKIAogICAgICMgU3RlcCAjMTogRmluZCB0aGUgSURMIGZpbGUgYXNzb2NpYXRlZCB3
aXRoICdpbnRlcmZhY2UnCiAgICAgbXkgJGZpbGVuYW1lID0gJG9iamVjdC0+SURMRmlsZUZvcklu
dGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkKLSAgICAgICAgb3IgZGllKCJDb3VsZCBOT1QgZmluZCBJ
REwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiwgcmVhY2hhYmxlIGZyb20g
XCIiIC4gJG91dGVySW50ZXJmYWNlLT5uYW1lIC4gIlwiIVxuIik7CisgICAgICAgIG9yIGFzc2Vy
dCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1l
XCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFtZSAuICJcIiFcbiIp
OwogCiAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcgcGFyZW50IElETCBcIiRmaWxlbmFtZVwi
IGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiXG4iIGlmICR2ZXJib3NlOwogCkBAIC02
MTIsNiArNjI1LDEwOCBAQCBzdWIgR2V0U2VxdWVuY2VPckZyb3plbkFycmF5SW5uZXJUeXBlCiAg
ICAgcmV0dXJuICIiOwogfQogCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LWZsYXR0ZW5lZC11bmlvbi1tZW1iZXItdHlwZXMKK3N1YiBHZXRGbGF0dGVuZWRNZW1iZXJUeXBl
cworeworICAgIG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBfOworCisgICAgbXkgQGZs
YXR0ZW5lZE1lbWJlclR5cGVzID0gKCk7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChA
eyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5cGUtPmlz
VW5pb24pIHsKKyAgICAgICAgICAgIHB1c2ggQGZsYXR0ZW5lZE1lbWJlclR5cGVzLCAkb2JqZWN0
LT5HZXRGbGF0dGVuZWRNZW1iZXJUeXBlcygkbWVtYmVyVHlwZSkKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHB1c2ggQGZsYXR0ZW5lZE1lbWJlclR5cGVzLCAkbWVtYmVyVHlwZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAZmxhdHRlbmVkTWVtYmVyVHlwZXM7Cit9CisK
KyMgaHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbnVtYmVyLW9mLW51bGxhYmxl
LW1lbWJlci10eXBlcworc3ViIEdldE51bWJlck9mTnVsbGFibGVNZW1iZXJUeXBlcworeworICAg
IG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBfOworCisgICAgbXkgJGNvdW50ID0gMDsK
KworICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFVuaW9uVHlwZS0+c3VidHlwZXN9
KSB7CisgICAgICAgIGlmICgkbWVtYmVyVHlwZS0+aXNOdWxsYWJsZSkgeworICAgICAgICAgICAg
JGNvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBpZiAoJG1lbWJlclR5cGUtPmlzVW5pb24p
IHsKKyAgICAgICAgICAgICRjb3VudCArPSAkb2JqZWN0LT5HZXROdW1iZXJPZk51bGxhYmxlTWVt
YmVyVHlwZXMoJG1lbWJlclR5cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuICRj
b3VudDsKK30KKworc3ViIEdldElETFVuaW9uTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVj
dCwgJGludGVyZmFjZSwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAgIG15ICRudW1iZXJPZk51
bGxhYmxlTWVtYmVycyA9ICRvYmplY3QtPkdldE51bWJlck9mTnVsbGFibGVNZW1iZXJUeXBlcygk
aWRsVW5pb25UeXBlKTsKKyAgICBpZiAoJG51bWJlck9mTnVsbGFibGVNZW1iZXJzID4gMSkgewor
ICAgICAgICBhc3NlcnQoIlVuaW9uIHR5cGVzIG11c3Qgb25seSBoYXZlIDAgb3IgMSBudWxsYWJs
ZSB0eXBlcy4iKTsKKyAgICB9CisKKyAgICBteSBAaWRsVW5pb25NZW1iZXJUeXBlcyA9ICgpOwor
CisgICAgaWYgKCRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA9PSAxKSB7CisgICAgICAgIHB1c2gg
QGlkbFVuaW9uTWVtYmVyVHlwZXMsICJJRExOdWxsIjsKKyAgICB9CisKKyAgICBmb3JlYWNoIG15
ICRtZW1iZXJUeXBlICgkb2JqZWN0LT5HZXRGbGF0dGVuZWRNZW1iZXJUeXBlcygkaWRsVW5pb25U
eXBlKSkgeworICAgICAgICBwdXNoIEBpZGxVbmlvbk1lbWJlclR5cGVzLCAkb2JqZWN0LT5HZXRC
YXNlSURMVHlwZSgkaW50ZXJmYWNlLCAkbWVtYmVyVHlwZSk7CisgICAgfQorCisgICAgcmV0dXJu
IEBpZGxVbmlvbk1lbWJlclR5cGVzOworfQorCitzdWIgR2V0QmFzZUlETFR5cGUKK3sKKyAgICBt
eSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFR5cGUpID0gQF87CisKKyAgICBteSAlSURMVHlw
ZXMgPSAoCisgICAgICAgICJhbnkiID0+ICJJRExBbnkiLAorICAgICAgICAiYm9vbGVhbiIgPT4g
IklETEJvb2xlYW4iLAorICAgICAgICAiYnl0ZSIgPT4gIklETEJ5dGUiLAorICAgICAgICAib2N0
ZXQiID0+ICJJRExPY3RldCIsCisgICAgICAgICJzaG9ydCIgPT4gIklETFNob3J0IiwKKyAgICAg
ICAgInVuc2lnbmVkIHNob3J0IiA9PiAiSURMVW5zaWduZWRTaG9ydCIsCisgICAgICAgICJsb25n
IiA9PiAiSURMTG9uZyIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAiSURMVW5zaWduZWRM
b25nIiwKKyAgICAgICAgImxvbmcgbG9uZyIgPT4gIklETExvbmdMb25nIiwKKyAgICAgICAgInVu
c2lnbmVkIGxvbmcgbG9uZyIgPT4gIklETFVuc2lnbmVkTG9uZ0xvbmciLAorICAgICAgICAiZmxv
YXQiID0+ICJJRExGbG9hdCIsCisgICAgICAgICJ1bnJlc3RyaWN0ZWQgZmxvYXQiID0+ICJJRExV
bnJlc3RyaWN0ZWRGbG9hdCIsCisgICAgICAgICJkb3VibGUiID0+ICJJRExEb3VibGUiLAorICAg
ICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIklETFVucmVzdHJpY3RlZERvdWJsZSIsCisg
ICAgICAgICJET01TdHJpbmciID0+ICJJRExET01TdHJpbmciLAorICAgICAgICAiQnl0ZVN0cmlu
ZyIgPT4gIklETEJ5dGVTdHJpbmciLAorICAgICAgICAiVVNWU3RyaW5nIiA9PiAiSURMVVNWU3Ry
aW5nIiwKKyAgICApOworCisgICAgcmV0dXJuICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX0gaWYg
ZXhpc3RzICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX07CisgICAgcmV0dXJuICJJRExFbnVtZXJh
dGlvbjwiIC4gJG9iamVjdC0+R2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGludGVyZmFjZSwgJGlk
bFR5cGUtPm5hbWUpIC4gIj4iIGlmICRvYmplY3QtPklzRW51bVR5cGUoJGlkbFR5cGUtPm5hbWUp
OworICAgIHJldHVybiAiSURMRGljdGlvbmFyeTwiIC4gJG9iamVjdC0+R2V0RGljdGlvbmFyeUNs
YXNzTmFtZSgkaW50ZXJmYWNlLCAkaWRsVHlwZS0+bmFtZSkgLiAiPiIgaWYgJG9iamVjdC0+SXNE
aWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJRExTZXF1ZW5jZTwi
IC4gJG9iamVjdC0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31b
MF0pIC4gIj4iIGlmICRvYmplY3QtPklzU2VxdWVuY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAg
ICByZXR1cm4gIklETEZyb3plbkFycmF5PCIgLiAkb2JqZWN0LT5HZXRJRExUeXBlKCRpbnRlcmZh
Y2UsIEB7JGlkbFR5cGUtPnN1YnR5cGVzfVswXSkgLiAiPiIgaWYgJG9iamVjdC0+SXNGcm96ZW5B
cnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURMVW5pb248IiAuIGpvaW4o
IiwgIiwgJG9iamVjdC0+R2V0SURMVW5pb25NZW1iZXJUeXBlcygkaW50ZXJmYWNlLCAkaWRsVHlw
ZSkpIC4gIj4iIGlmICRpZGxUeXBlLT5pc1VuaW9uOworICAgIHJldHVybiAiSURMSW50ZXJmYWNl
PCIgLiAkaWRsVHlwZS0+bmFtZSAuICI+IjsKK30KKworc3ViIEdldElETFR5cGUKK3sKKyAgICBt
eSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFR5cGUpID0gQF87CisKKyAgICBteSAkYmFzZUlE
TFR5cGUgPSAkb2JqZWN0LT5HZXRCYXNlSURMVHlwZSgkaW50ZXJmYWNlLCAkaWRsVHlwZSk7Cisg
ICAgcmV0dXJuICJJRExOdWxsYWJsZTwiIC4gJGJhc2VJRExUeXBlIC4gIj4iIGlmICRpZGxUeXBl
LT5pc051bGxhYmxlOworICAgIHJldHVybiAkYmFzZUlETFR5cGU7Cit9CisKICMgVGhlc2UgbWF0
Y2ggV0tfbGNmaXJzdCBhbmQgV0tfdWNmaXJzdCBkZWZpbmVkIGluIGJ1aWx0aW5zX2dlbmVyYXRv
ci5weS4KICMgVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJL
aXQgc3R5bGUgZ3VpZGVsaW5lcy4KICMgRS5nLiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNv
ZGluZywgYnV0IHhtbGxsYW5nIGJlY29tZXMgWG1sbGFuZy4KQEAgLTc5MSw2ICs5MDYsNyBAQCBz
dWIgSXNXcmFwcGVyVHlwZQogCiAgICAgcmV0dXJuIDAgaWYgISRvYmplY3QtPklzUmVmUHRyVHlw
ZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlw
ZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIlVOSU9OIjsKICAgICByZXR1cm4gMCBpZiAk
d2ViQ29yZVR5cGVIYXNoeyR0eXBlfTsKIAogICAgIHJldHVybiAxOwpAQCAtODA0LDcgKzkyMCw3
IEBAIHN1YiBnZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmEKICAgICBteSAkb2Jq
ZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAotICAgIG15ICRp
ZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkgb3Ig
ZGllKCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5h
bWVcIiFcbiIpOworICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFj
ZSgkaW50ZXJmYWNlTmFtZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3Ig
aW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiFcbiIpOwogCiAgICAgb3BlbiBGSUxFLCAiPCIs
ICRpZGxGaWxlIG9yIGRpZTsKICAgICBteSBAbGluZXMgPSA8RklMRT47CkBAIC04MzYsNyArOTUy
LDcgQEAgc3ViIENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlCiAKICAgcmV0dXJuIDAgdW5sZXNz
ICRvYmplY3QtPklzV3JhcHBlclR5cGUoJHR5cGUpOwogCi0gIG15ICRpZGxGaWxlID0gJG9iamVj
dC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZSkgb3IgZGllKCJDb3VsZCBOT1QgZmluZCBJREwg
ZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVcIiFcbiIpOworICBteSAkaWRsRmlsZSA9ICRvYmpl
Y3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQg
SURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKIAogICBvcGVuIEZJTEUsICI8
IiwgJGlkbEZpbGUgb3IgZGllOwogICBteSBAbGluZXMgPSA8RklMRT47CkBAIC04NzIsNyArOTg4
LDcgQEAgc3ViIENvbXB1dGVJc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYQogCiAgIHJldHVy
biAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKIAotICBteSAk
aWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9yIGRpZSgiQ291
bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKKyAgbXkg
JGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBvciBhc3NlcnQo
IkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CiAK
ICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkgQGxpbmVzID0gPEZJTEU+
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNiArMjM5
LDI4IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9CiB9CiAKK3N1YiBBZGRUb0ltcGxJ
bmNsdWRlc0ZvcklETFR5cGUKK3sKKyAgICBteSAoJGlkbFR5cGUsICRjb25kaXRpb25hbCkgPSBA
XzsKKworICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJGlk
bFR5cGUtPm5hbWUpOworCisgICAgaWYgKCRpZGxUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1ZhcmlhbnQuaD4iLCAkY29uZGl0aW9uYWwpOworCisgICAg
ICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFR5cGUtPnN1YnR5cGVzfSkgeworICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRtZW1iZXJUeXBlLCAkY29uZGl0
aW9uYWwpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkaWRsVHlwZS0+bmFtZSkpIHsKKyAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRpZGxUeXBlLT5uYW1lIC4gIi5oIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKIHN1YiBBZGRUb0ltcGxJbmNsdWRlcwogewogICAgIG15ICRo
ZWFkZXIgPSBzaGlmdDsKQEAgLTM5MDQsNiArMzkyNiw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJh
bWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkdHlwZSA9ICRw
YXJhbWV0ZXItPnR5cGU7CisgICAgICAgIG15ICRpZGxUeXBlID0gJHBhcmFtZXRlci0+aWRsVHlw
ZTsKIAogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFtZXRlcnMgb2Ygbm9uLW51bGxhYmxlIHdy
YXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICRwYXJhbWV0ZXItPmlzT3B0aW9uYWwg
JiYgISRwYXJhbWV0ZXItPmlzTnVsbGFibGUgJiYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJHR5cGUpOwogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFtZXRlcnMgcHJlY2VkaW5nIHZh
cmlhZGljIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICgkcGFyYW1ldGVyLT5pc09w
dGlvbmFsICYmICBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc31bJG51bVBhcmFtZXRlcnMgLSAxXS0+
aXNWYXJpYWRpYyk7CkBAIC0zOTY1LDE3ICszOTg4LDEzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5h
bWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgewotICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHt0eXBlfS5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgdW5sZXNzICRjb2RlR2VuZXJh
dG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSkgb3IgISRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBw
ZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgIG15ICgkd3JhcHBlclR5cGUsICR3cmFwcGVkVHlw
ZSkgPSBHZXRWYXJpYWRpY1R5cGUoJGludGVyZmFjZSwgJHR5cGUpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hl
bHBlcjwkd3JhcHBlclR5cGUsICR3cmFwcGVkVHlwZT4+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgp
O1xuIik7Ci0KLSAgICAgICAgICAgIGlmIChJc05hdGl2ZVR5cGUoJHR5cGUpKSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
ISRuYW1lLmFyZ3VtZW50cylcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAkbmFtZS5hcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29udmVydC5oIn0gPSAxOworICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRpZGxUeXBlLCAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAg
CisgICAgICAgICAgICBteSAkbWV0YVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0SURMVHlwZSgk
aW50ZXJmYWNlLCAkaWRsVHlwZSk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byAkbmFtZSA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czwkbWV0YVR5cGU+KCpzdGF0
ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtc
biIpOworCiAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZS5hcmd1bWVudHMudmFs
dWUoKSkiOwogCiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0
eXBlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0JKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMyBAQCBzdHJ1Y3Qo
IGlkbERvY3VtZW50ID0+IHsKICAgICBmaWxlTmFtZSA9PiAnJCcsCiB9KTsKIAorc3RydWN0KCBk
b21UeXBlID0+IHsKKyAgICBuYW1lID0+ICAgICAgICAgJyQnLCAjIFR5cGUgaWRlbnRpZmllcgor
ICAgIGlzTnVsbGFibGUgPT4gICAnJCcsICMgSXMgdGhlIHR5cGUgTnVsbGFibGUgKFQ/KQorICAg
IGlzVW5pb24gPT4gICAgICAnJCcsICMgSXMgdGhlIHR5cGUgYSB1bmlvbiAoVCBvciBVKQorICAg
IHN1YnR5cGVzID0+ICAgICAnQCcsICMgQXJyYXkgb2Ygc3VidHlwZXMsIG9ubHkgdmFsaWQgaWYg
aXNVbmlvbiBvciBzZXF1ZW5jZQorfSk7CisKICMgVXNlZCB0byByZXByZXNlbnQgJ2ludGVyZmFj
ZScgYmxvY2tzCiBzdHJ1Y3QoIGRvbUludGVyZmFjZSA9PiB7CiAgICAgbmFtZSA9PiAnJCcsICAg
ICAgIyBDbGFzcyBpZGVudGlmaWVyCkBAIC03OSwxOCArODYsMTIgQEAgc3RydWN0KCBkb21BdHRy
aWJ1dGUgPT4gewogICAgIHNpZ25hdHVyZSA9PiAnJCcsICAgICAgICAgIyBBdHRyaWJ1dGUgc2ln
bmF0dXJlCiB9KTsKIAotc3RydWN0KCBkb21UeXBlID0+IHsKLSAgICBuYW1lID0+ICAgICAgICAg
JyQnLCAjIFR5cGUgaWRlbnRpZmllcgotICAgIGlzTnVsbGFibGUgPT4gICAnJCcsICMgSXMgdGhl
IHR5cGUgTnVsbGFibGUgKFQ/KQotICAgIGlzVW5pb24gPT4gICAgICAnJCcsICMgSXMgdGhlIHR5
cGUgYSB1bmlvbiAoVCBvciBVKQotICAgIHN1YnR5cGVzID0+ICAgICAnQCcsICMgQXJyYXkgb2Yg
c3VidHlwZXMsIG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1ZW5jZQotfSk7Ci0KICMgVXNl
ZCB0byByZXByZXNlbnQgYSBtYXAgb2YgJ3ZhcmlhYmxlIG5hbWUnIDwtPiAndmFyaWFibGUgdHlw
ZScKIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAgICBkaXJlY3Rpb24gPT4gJyQnLCAgICMg
VmFyaWFibGUgZGlyZWN0aW9uIChpbiBvciBvdXQpCiAgICAgbmFtZSA9PiAnJCcsICAgICAgICAj
IFZhcmlhYmxlIG5hbWUKLSAgICB0eXBlID0+ICckJyAgICAgICwgICMgVmFyaWFibGUgdHlwZQor
ICAgIHR5cGUgPT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSB0eXBlIG5hbWUgKERFUFJFQ0FURUQg
LSBwbGVhc2UgdXNlIGlkbFR5cGUpCisgICAgaWRsVHlwZSA9PiAnJCcsICAgICAjIFZhcmlhYmxl
IHR5cGUKICAgICBzcGVjaWFscyA9PiAnQCcsICAgICMgU3BlY2lhbHMKICAgICBleHRlbmRlZEF0
dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMKICAgICBpc051bGxhYmxlID0+
ICckJywgICMgSXMgdmFyaWFibGUgdHlwZSBOdWxsYWJsZSAoVD8pCkBAIC03MDUsNiArNzA2LDcg
QEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJlcgogICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAk
c2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRtZW1iZXItPmlkbFR5cGUoJHR5cGUpOwogICAg
ICAgICAkbWVtYmVyLT50eXBlKCR0eXBlLT5uYW1lKTsKICAgICAgICAgJG1lbWJlci0+aXNOdWxs
YWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTEyNTIsNiArMTI1NCw3IEBAIHN1YiBwYXJz
ZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0
dXJlLT5uZXcoKSk7CiAgICAgICAgIAogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5
cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlkbFR5cGUoJHR5cGUpOwog
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAg
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxl
KTsKIApAQCAtMTU0NCw2ICsxNTQ3LDcgQEAgc3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJn
dW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICJvcHRpb25hbCIsIF9fTElORV9fKTsKIAogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJz
ZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAg
ICAkcGFyYW1EYXRhTm9kZS0+dHlwZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHR5
cGUtPm5hbWUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoJHR5cGUtPmlz
TnVsbGFibGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNPcHRpb25hbCgxKTsKQEAgLTE1
NTMsNiArMTU1Nyw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAg
fQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFs
dWUoKSA9fiAvJG5leHRFeGNlcHRpb25GaWVsZF8xLykgewogICAgICAgICBteSAkdHlwZSA9ICRz
ZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlkbFR5cGUoJHR5cGUp
OwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRw
YXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwoMCk7CkBAIC0xNjE1LDYgKzE2MjAsNyBAQCBzdWIgcGFy
c2VFeGNlcHRpb25GaWVsZAogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWdu
YXR1cmUtPm5ldygpKTsKIAogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsK
KyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTks
NyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdm9pZCB2
YXJpYWRpY1N0cmluZ01ldGhvZChET01TdHJpbmcgaGVhZCwgRE9NU3RyaW5nLi4uIHRhaWwpOwog
ICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2QodW5yZXN0cmljdGVkIGRvdWJsZSBoZWFkLCB1
bnJlc3RyaWN0ZWQgZG91YmxlLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNOb2RlTWV0aG9k
KE5vZGUgaGVhZCwgTm9kZS4uLiB0YWlsKTsKKyAgICB2b2lkIHZhcmlhZGljVW5pb25NZXRob2Qo
RE9NU3RyaW5nIGhlYWQsIChOb2RlIG9yIERPTVN0cmluZykuLi4gdGFpbCk7CiAKICAgICAvLyBO
dWxsYWJsZSBhdHRyaWJ1dGVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lv
biAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgPHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICNpbmNsdWRlICJKU1Rlc3RPYmplY3RBLmgi
CkBAIC05NzEsNiArOTcyLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpT
Qzo6RXhlY1N0YXRlKik7CkBAIC0xNTc3LDYgKzE1NzksNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAidmFyaWFkaWNTdHJpbmdNZXRob2QiLCBKU0M6
OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAo
aW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNEb3VibGVNZXRob2QiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNOb2RlTWV0aG9kIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkg
KDEpIH0gfSwKKyAgICB7ICJ2YXJpYWRpY1VuaW9uTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QpLCAoaW50cHRyX3QpICgxKSB9
IH0sCiAgICAgeyAiYW55IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFu
eSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24pLCAo
aW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFy
Z3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTY2MTks
OSArNjYyMiw4IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gYmxvYkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJp
YWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigqc3RhdGUsIDApOwotICAgIGlmICghYmxvYkFyZ3Mu
YXJndW1lbnRzKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIGJsb2JBcmdzLmFyZ3VtZW50SW5kZXgsICJibG9iQXJncyIsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOworICAgIGF1dG8gYmxvYkFyZ3MgPSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPEJsb2I+Pigqc3RhdGUsIDApOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MuYXJndW1lbnRzLnZhbHVl
KCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
NzEzNyw3ICs3MTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHRhaWwgPSB0
b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIFN0cmluZz4+KCpzdGF0ZSwg
MSk7CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETERPTVN0cmlu
Zz4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFyaWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFk
KSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTcxNTgsNyArNzE2MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGhlYWQgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byB0YWls
ID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVlLCBkb3VibGU+Pigqc3Rh
dGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbnJl
c3RyaWN0ZWREb3VibGU+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9k
KFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03MTgwLDEzICs3MTgyLDMz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICBhdXRvIGhl
YWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImhlYWQiLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRp
Y05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlh
ZGljSGVscGVyPEpTTm9kZSwgTm9kZT4+KCpzdGF0ZSwgMSk7Ci0gICAgaWYgKCF0YWlsLmFyZ3Vt
ZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCB0YWlsLmFyZ3VtZW50SW5kZXgsICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFk
aWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNB
cmd1bWVudHM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIDEpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC52YXJpYWRp
Y05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9u
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dmFyaWFkaWNVbmlvbk1ldGhvZCIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byB0YWlsID0g
Y29udmVydFZhcmlhZGljQXJndW1lbnRzPElETFVuaW9uPElETEludGVyZmFjZTxOb2RlPiwgSURM
RE9NU3RyaW5nPj4oKnN0YXRlLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZN
b3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0Js
b2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CkBAIC0xMzcsNyArMTM4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKUwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwotICAgIGF1
dG8gbG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIGlu
dDMyX3Q+Pigqc3RhdGUsIDApOworICAgIGF1dG8gbG9uZ0FyZ3MgPSBjb252ZXJ0VmFyaWFkaWNB
cmd1bWVudHM8SURMTG9uZz4oKnN0YXRlLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdzKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
LmlkbAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKIFsKICAgICBOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9kZSB7Ci0gICAgW1Vuc2NvcGFibGUsIE1heVRocm93
TGVnYWN5RXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3Vz
dG9tXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNj
b3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHJlcGxhY2VXaXRo
KChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rl
cyk7CisgICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGFmdGVy
KChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4u
IG5vZGVzKTsKICAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
cmVtb3ZlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAkocmV2aXNpb24g
MjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgbGFz
dEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGls
ZEVsZW1lbnRDb3VudDsKIAotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
biwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0g
ICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYXBw
ZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4g
bm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBh
cHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAKICAgICAvLyBbVW5zY29wYWJs
ZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsKICAgICAvLyBb
TmV3T2JqZWN0LCBVbnNjb3BhYmxlXSBFbGVtZW50cyBxdWVyeUFsbChET01TdHJpbmcgcmVsYXRp
dmVTZWxlY3RvcnMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290655</attachid>
            <date>2016-10-04 15:33:38 -0700</date>
            <delta_ts>2016-10-05 12:35:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161004153028.patch</filename>
            <type>text/plain</type>
            <size>66252</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUg
U1NMUG9saWN5RmxhZ3MgZnJvbSBTb3VwTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTQ2xpZW50UmVjdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCkBAIC0xMTAxLDcgKzExMDAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9y
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC0x
MTU0LDcgKzExNTIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U05vZGVPclN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlVGltaW5nQ3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKEQKICAgICBzZXRDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PFJlZjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTQsOCArMTE0LDggQEAgUmVmUHRyPFJUQ1J0
cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OgogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+
IG1lZGlhU3RyZWFtSWRzOwotICAgIGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAg
ICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLmdldCgpLmlkKCkpOworICAgIGZvciAoYXV0
byYgc3RyZWFtIDogc3RyZWFtcykKKyAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKHN0cmVh
bS0+aWQoKSk7CiAKICAgICBSVENSdHBTZW5kZXIqIHNlbmRlciA9IG51bGxwdHI7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiBsZWdhY3kgTWVkaWFTdHJlYW0tYmFzZWQg
QVBJIChtb3N0bHkgaW1wbGVtZW50ZWQgYXMgSlMgYnVpbHQtaW5zKQogICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1zKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kLT5nZXRSZW1vdGVTdHJlYW1zKCk7IH0KIAotICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFk
ZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxS
VENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0
b3I8UmVmPE1lZGlhU3RyZWFtPj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVU
cmFjayhSVENSdHBTZW5kZXImLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGlzIGVudW0g
aXMgbWlycm9yZWQgaW4gUlRDUnRwVHJhbnNjZWl2ZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2Nzcy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzI5LDggKzI3MjksNiBAQAogCQk3QzFFOTcyODFBOUY5ODM0MDA3
QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0Zp
bGxCdXR0b25FbGVtZW50LmggKi87IH07CiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBK
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5jcHAgKi87IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCAqLzsgfTsKLQkJN0MzM0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLzsg
fTsKLQkJN0MzM0YzNUUxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNGMzVD
MUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi87IH07CiAJCTdD
MzNGMzYyMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAxQjRB
MDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCTdD
M0E5MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNCODgw
MEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXIuY3BwICovOyB9OwpAQCAtMjc2NCw4ICsyNzYyLDYgQEAKIAkJN0M3OTQxRTQxQzU2QzI5MzAw
QTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyog
RGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJN0M3OTQxRTUxQzU2QzI5MzAw
QTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBE
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJCTdDODNERTg2MUQwNENDNUQwMEZF
QkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAq
LzsgfTsKLQkJN0M5MUEzOEYxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhEMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi87IH07Ci0JCTdDOTFBMzkwMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9k
ZU9yU3RyaW5nLmggKi87IH07CiAJCTdDOTNGMzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M5M0YzNDcxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5jcHAgKi87IH07CiAJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRl
bnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QzkzRjM0RDFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRC
MUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpA
QCAtOTgyNSw4ICs5ODIxLDYgQEAKIAkJN0MxRTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9G
aWxsQnV0dG9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRv
RmlsbEJ1dHRvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkRE
M0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyog
SlNET01HbG9iYWxPYmplY3RUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzNGMzVDMUI0QTA0Q0UwMDUwMkNB
RiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVu
dEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQTkx
RTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNz
YWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2Vy
TWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg3Miw4
ICs5ODY2LDYgQEAKIAkJN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRM
aW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZF
QkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ByaW5nU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDOTFBMzhEMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU05vZGVPclN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGVPclN0cmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDOTNGMzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzRCMUFBNkJGMDcw
MEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDYzLDggKzIxMDU1LDYgQEAKIAkJCQlFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJQzZGNDIw
QTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8sCiAJCQkJQzZG
NDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5oICovLAotCQkJCTdD
OTFBMzhEMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgKi8sCi0JCQkJN0M5
MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi8sCiAJCQkJQ0IzOEZE
NTUxQ0QyMUQ1QjAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAgKi8sCiAJ
CQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5oICovLApAQCAtMjExMTYsNyArMjExMDYsNiBAQAogCQkJCUJFNkRGNzEwMTcxQ0Ey
REEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQk4OTMxREU1
QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
LAotCQkJCTdDMzNGMzU4MUI0QTA0NDgwMDUwMkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwICovLAogCQkJCTQ2QTU4QUM0MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0
b20uY3BwICovLAogCQkJCUE1ODRGRTM3MTg2NERBQzEwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5l
QVBJSG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJN0NFRjI2MTgxRDZBOTJFMzAwQkU5MDVEIC8qIEpT
Q3J5cHRvQ3VzdG9tLmNwcCAqLywKQEAgLTIxMTM4LDcgKzIxMTI3LDYgQEAKIAkJCQk0OUM3QkE4
QzEwNDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQUREQTk0
QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0b20uaCAqLywKIAkJCQk3QzMzRjM2
MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLywKLQkJ
CQk3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwICov
LAogCQkJCUE5QzZFNjQ2MEQ3NDY1Q0EwMDY0NDJFOSAvKiBKU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwICovLAogCQkJCUE5QzZFNjRBMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QjBENzQ2NUU3MDA2NDQyRTkgLyogSlNET01Q
bHVnaW5DdXN0b20uY3BwICovLApAQCAtMjUyMTAsNyArMjUxOTgsNiBAQAogCQkJCTFBNzUwRDhF
MEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNEOUMyQzMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFEMjBCMThEMThFOUQyMzcwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3VzdG9tLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM1MDNDQTYxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUVDMUUyOTE0RkY2
MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg1OTAsNyArMjg1NzcsNiBAQAogCQkJCUZEQTE1RUExMTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVERjMxRjMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTQ2hhcmFjdGVyRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMzRjM1QTFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFy
YWN0ZXJEYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTg3MEYzQ0UyQTcw
MENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZBNThBQzUx
RDQ2QjNGQTAwNDMyMDM2IC8qIEpTQ2xpZW50UmVjdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0MwNjU4OTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI4NjYyLDcgKzI4NjQ4LDYgQEAKIAkJCQk3QzMzRjM2MjFCNEEwNTA0
MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTEyMjFFMDVGMUMwMkI0NDQwMDZBMUEwMCAvKiBKU0RvY3VtZW50VGltZWxpbmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRjUwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzNGMzVFMUI0QTA0Q0UwMDUwMkNBRiAvKiBK
U0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMyMjYwQzBEQjY5
RjE5MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzQjcwRDYzMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM2MEQ3QzAwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NQ29yZUV4Y2VwdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTI0LDcgKzI4OTA5LDYgQEAKIAkJCQkxQTc1MERE
NDBBOTBFNzI5MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEOUMyQzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNEOUMyNjUwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M5MUEzOEYxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpT
Tm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzNTAzQ0EzMTAxNzlBRDcwMDNC
NDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUwM0NBNTEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzFFQzFFMjgxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY3
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NoYXJhY3RlckRhdGEuaCIKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNDaGFyYWN0ZXJE
YXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB3cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6YWZ0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0ZXIo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlND
aGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmlu
Z1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0K
LSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9u
IDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDEsNDYgKzM0MSw2IEBAIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGgKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZh
bHVlVHJhaXRzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFz
cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlckJhc2Ugewot
ICAgIHVzaW5nIEl0ZW0gPSBET01DbGFzczsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBj
b252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBl
OwotICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OwotICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJp
YWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWlsdGluPjo6dHlwZT4gewotICAg
IHVzaW5nIENsYXNzID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOwotICAgIHVzaW5nIEl0ZW0g
PSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJ
dGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICBhdXRvKiB2YWx1ZSA9IEpTQ2xhc3M6OnRvV3JhcHBlZChqc1ZhbHVlKTsKLSAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnZhbHVlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlciA6
IHB1YmxpYyBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3M+IHsKLSAgICB1c2lu
ZyBJdGVtID0gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzPjo6
SXRlbTsKLSAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8SXRlbT47Ci0KLSAgICBzdHJ1Y3Qg
UmVzdWx0IHsKLSAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXg7Ci0gICAgICAgIE9wdGlvbmFs
PENvbnRhaW5lcj4gYXJndW1lbnRzOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBW
YXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAKIC8vIElubGluZSBm
dW5jdGlvbnMgYW5kIHRlbXBsYXRlIGRlZmluaXRpb25zLgogCkBAIC04OTMsMjQgKzg1Myw2IEBA
IGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWMKICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWRpY0hl
bHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQotewotICAgIHNpemVfdCBsZW5ndGgg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKLQotICAgIHR5cGVuYW1lIFZhcmlhZGljSGVs
cGVyOjpDb250YWluZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNIZWxwZXI6
OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsKLSAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHZhbHVlLnZhbHVlKCkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQogdGVtcGxhdGU8SlNDOjpO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gSlNDOjpFbmNvZGVkSlNW
YWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBsZW5ndGgsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDQ1ICs3Myw3NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IGlubGluCiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRDb252ZXJ0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVyaXZlZD4gc3Ry
dWN0IEJhc2VDb252ZXJ0ZXIgewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBPcHRpb25hbDxU
PjsKKworICAgIHN0YXRpYyBPcHRpb25hbDxUPiBjb252ZXJ0RmFpbGFibGUoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBhdXRvJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IERlcml2ZWQ6OmNvbnZlcnQoc3RhdGUsIHZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgTnVsbG9wdCk7CisKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFbmFibGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBEZWZhdWx0Q29udmVydGVy
PFQ+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZT4gc3RydWN0IENvbnZl
cnRlciA6IEJhc2VDb252ZXJ0ZXI8VCwgQ29udmVydGVyPFQ+PiB7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBEZWZhdWx0Q29udmVydGVyPGJvb2w+IHsKK3RlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjxib29sPiA6IEJhc2VDb252ZXJ0ZXI8Ym9vbCwgQ29udmVy
dGVyPGJvb2w+PiB7CiAgICAgc3RhdGljIGJvb2wgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS50b0Jv
b2xlYW4oJnN0YXRlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8
U3RyaW5nPiA6IERlZmF1bHRDb252ZXJ0ZXI8U3RyaW5nPiB7Ci0gICAgdXNpbmcgT3B0aW9uYWxW
YWx1ZSA9IFN0cmluZzsgLy8gVXNlIG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFs
dWUgd2FzIG5vdCBwcmVzZW50LgordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPFN0cmluZz4g
OiBCYXNlQ29udmVydGVyPFN0cmluZywgQ29udmVydGVyPFN0cmluZz4+IHsKKyAgICB1c2luZyBP
cHRpb25hbFZhbHVlID0gU3RyaW5nOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxJRExET01TdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsK
LSAgICB1c2luZyBPcHRpb25hbFZhbHVlID0gU3RyaW5nOyAvLyBVc2UgbnVsbCBzdHJpbmcgdG8g
bWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCit0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0
ZXI8SURMRE9NU3RyaW5nPj4geworICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7CiAg
ICAgc3RhdGljIFN0cmluZyBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVTVlN0cmlu
Zz4gOiBEZWZhdWx0Q29udmVydGVyPFN0cmluZz4gewotICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUg
PSBTdHJpbmc7IC8vIFVzZSBudWxsIHN0cmluZyB0byBtZWFuIGFuIG9wdGlvbmFsIHZhbHVlIHdh
cyBub3QgcHJlc2VudC4KK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVU1ZTdHJpbmc+
IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxJRExET01TdHJpbmc+PiB7CisgICAg
dXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0cmluZzsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gdmFsdWVUb1VTVlN0cmluZygmc3RhdGUsIHZhbHVlKTsKICAgICB9CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiA6IERlZmF1bHRDb252ZXJ0
ZXI8SlNDOjpKU1ZhbHVlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVy
PElETEludGVyZmFjZTxUPj4gOiBCYXNlQ29udmVydGVyPFJlZjxUPiwgQ29udmVydGVyPElETElu
dGVyZmFjZTxUPj4+IHsKKyAgICB1c2luZyBPcHRpb25hbFZhbHVlID0gUmVmUHRyPFQ+OworICAg
IHVzaW5nIFdyYXBwZXJUeXBlID0gdHlwZW5hbWUgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRz
PFQ+OjpXcmFwcGVyQ2xhc3M7CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFQ+PiBjb252ZXJ0
RmFpbGFibGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBhdXRvIG9iamVjdCA9IFdyYXBwZXJU
eXBlOjp0b1dyYXBwZWQodmFsdWUpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYWtlUmVmKCpvYmplY3QpOworICAg
IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxKU0M6OkpTVmFsdWU+IDogQmFz
ZUNvbnZlcnRlcjxKU0M6OkpTVmFsdWUsIENvbnZlcnRlcjxKU0M6OkpTVmFsdWU+PiB7CiAgICAg
dXNpbmcgT3B0aW9uYWxWYWx1ZSA9IEpTQzo6SlNWYWx1ZTsgLy8gVXNlIGpzVW5kZWZpbmVkKCkg
dG8gbWVhbiBhbiBvcHRpb25hbCB2YWx1ZSB3YXMgbm90IHByZXNlbnQuCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKQEAgLTExOSwxNCArMTQ5LDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxK
U0M6OkpTVmFsdWUKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29u
dmVydGVyPFZlY3RvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFZlY3RvcjxUPj4gewordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+IDogQmFzZUNvbnZlcnRl
cjxWZWN0b3I8VD4sIENvbnZlcnRlcjxWZWN0b3I8VD4+PiB7CiAgICAgc3RhdGljIFZlY3RvcjxU
PiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4oc3RhdGUsIHZhbHVlKTsKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlZmF1bHRDb252
ZXJ0ZXI8aW50OF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IEJh
c2VDb252ZXJ0ZXI8aW50OF90LCBDb252ZXJ0ZXI8aW50OF90Pj4gewogICAgIHN0YXRpYyBpbnQ4
X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE0MSw3ICsxNzEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8aW50OF90PiA6IERlCiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQ4X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50OF90PiB7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDhfdD4gOiBCYXNlQ29udmVydGVyPHVpbnQ4
X3QsIENvbnZlcnRlcjx1aW50OF90Pj4gewogICAgIHN0YXRpYyB1aW50OF90IGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9u
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25m
aWd1cmF0aW9uKSB7CkBAIC0xNTYsNyArMTg2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVy
dGVyPHVpbnQ4X3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRl
cjxpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MTZfdD4gewordGVtcGxhdGU8PiBzdHJ1
Y3QgQ29udmVydGVyPGludDE2X3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQxNl90LCBDb252ZXJ0ZXI8
aW50MTZfdD4+IHsKICAgICBzdGF0aWMgaW50MTZfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpA
QCAtMTcxLDcgKzIwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6
IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDE2X3Q+IDog
RGVmYXVsdENvbnZlcnRlcjx1aW50MTZfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVy
PHVpbnQxNl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDE2X3QsIENvbnZlcnRlcjx1aW50MTZfdD4+
IHsKICAgICBzdGF0aWMgdWludDE2X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE4Niw3
ICsyMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDE2X3Q+IDogCiAgICAg
fQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRGVmYXVsdENv
bnZlcnRlcjxpbnQzMl90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50MzJfdD4g
OiBCYXNlQ29udmVydGVyPGludDMyX3QsIENvbnZlcnRlcjxpbnQzMl90Pj4gewogICAgIHN0YXRp
YyBpbnQzMl90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBAIC0yMDEsNyArMjMxLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogRAogICAgIH0KIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiBEZWZhdWx0Q29udmVydGVyPHVpbnQz
Ml90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDogQmFzZUNvbnZl
cnRlcjx1aW50MzJfdCwgQ29udmVydGVyPHVpbnQzMl90Pj4gewogICAgIHN0YXRpYyB1aW50MzJf
dCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMjE2LDcgKzI0Niw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjx1aW50MzJfdD4gOiAKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0
cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBEZWZhdWx0Q29udmVydGVyPGludDY0X3Q+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8aW50NjRf
dCwgQ29udmVydGVyPGludDY0X3Q+PiB7CiAgICAgc3RhdGljIGludDY0X3QgY29udmVydChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQpAQCAtMjM0LDcgKzI2NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxp
bnQ2NF90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWlu
dDY0X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50NjRfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPHVpbnQ2NF90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDY0X3QsIENvbnZlcnRlcjx1
aW50NjRfdD4+IHsKICAgICBzdGF0aWMgdWludDY0X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkKQEAg
LTI1Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDY0X3Q+IDog
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46
OnR5cGU+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBCYXNlQ29udmVydGVyPFQsIENvbnZlcnRlcjxUPj4g
ewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKICAgICAgICAgSlND
OjpWTSYgdm0gPSBzdGF0ZS52bSgpOwpAQCAtMzA0LDcgKzMzNCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIExpc3QsIGJvb2wgY29uZGl0aW9uPgogdXNpbmcgQ29uZGl0aW9uYWxGcm9udCA9IHR5cGVu
YW1lIERldGFpbDo6Q29uZGl0aW9uYWxGcm9udDxMaXN0LCBjb25kaXRpb24+Ojp0eXBlOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4g
OiBEZWZhdWx0Q29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+OjpJbXBsZW1lbnRhdGlv
blR5cGU+CitzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiA6IEJhc2VDb252ZXJ0ZXI8
dHlwZW5hbWUgSURMVW5pb248VC4uLj46OkltcGxlbWVudGF0aW9uVHlwZSwgQ29udmVydGVyPElE
TFVuaW9uPFQuLi4+Pj4KIHsKICAgICB1c2luZyBUeXBlID0gSURMVW5pb248VC4uLj47CiAgICAg
dXNpbmcgVHlwZUxpc3QgPSB0eXBlbmFtZSBUeXBlOjpUeXBlTGlzdDsKQEAgLTQwOCw0ICs0Mzgs
MzQgQEAgc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdQogICAgIH0KIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXJS
ZXN1bHQgeworICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+OworCisgICAgc3RydWN0
IFJlc3VsdCB7CisgICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4OworICAgICAgICBPcHRpb25h
bDxDb250YWluZXI+IGFyZ3VtZW50czsKKyAgICB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
SURMVHlwZT4gdHlwZW5hbWUgVmFyaWFkaWNDb252ZXJ0ZXJSZXN1bHQ8SURMVHlwZT46OlJlc3Vs
dCBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qg
c3RhcnRJbmRleCkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgp
OworICAgIGlmIChzdGFydEluZGV4ID4gbGVuZ3RoKQorICAgICAgICByZXR1cm4geyAwLCBOdWxs
b3B0IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlclJlc3VsdDxJRExUeXBlPjo6
Q29udGFpbmVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5n
dGggLSBzdGFydEluZGV4KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IENvbnZlcnRlcjxJRExUeXBlPjo6
Y29udmVydEZhaWxhYmxlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0IH07CisgICAg
ICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdmFsdWUpKTsKKyAgICB9CisgICAg
cmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKK30KKworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYg
QEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNYTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtMTA4LDI0ICsxMDcsNiBAQCBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iCiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0
ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50Pihkb2N1bWVudCkpOwogfQogCi1K
U1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1Zl
Y3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3VtZW50OjphcHBlbmQo
RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFw
cGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQot
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91
Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMxICsyNywxMiBAQAogI2luY2x1ZGUg
IkpTRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTaGFkb3dSb290LmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNWYWx1ZSBKU0Rv
Y3VtZW50RnJhZ21lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVuZCh0b05vZGVPclN0cmluZ1ZlY3Rv
cihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFw
cGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci19Ci0KIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBpbXBsKQogewogICAg
IGlmIChpbXBsLT5pc1NoYWRvd1Jvb3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNjc3MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmJl
Zm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFmdGVyKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnRU
eXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmluZ1ZlY3Rvcihz
dGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lv
biAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTc1LDQ5ICs3NCw0IEBAIEpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICByZXR1cm4gY3JlYXRlTmV3RWxlbWVudFdyYXBw
ZXIoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsKIH0KIAotSlNWYWx1ZSBKU0VsZW1l
bnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7
Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjphZnRlcihFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5hZnRlcih0b05vZGVP
clN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBl
Yyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0VsZW1lbnQ6
OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRl
KSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChFeGVjU3RhdGUm
IHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVw
ZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVl
IEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmNwcAkocmV2aXNpb24gMjA2
NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi0jaW5jbHVkZSAiSURMVHlwZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1Rocm93U2NvcGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJp
bmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5n
IE5vZGVPclN0cmluZ1R5cGUgPSBJRExVbmlvbjxJRExJbnRlcmZhY2U8Tm9kZT4sIElETERPTVN0
cmluZz47Ci0gICAgdXNpbmcgQ29udmVydGVyVHlwZSA9IENvbnZlcnRlcjxOb2RlT3JTdHJpbmdU
eXBlPjsKLQotICAgIHVzaW5nIEludGVyZmFjZVR5cGVMaXN0ID0gdHlwZW5hbWUgQ29udmVydGVy
VHlwZTo6SW50ZXJmYWNlVHlwZUxpc3Q7Ci0gICAgdXNpbmcgSW50ZXJmYWNlVHlwZSA9IGJyaWdh
bmQ6OmZyb250PEludGVyZmFjZVR5cGVMaXN0PjsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZTxJbnRlcmZhY2VUeXBlLCBJRExJbnRlcmZhY2U8Tm9kZT4+Ojp2YWx1ZSwgIiIpOwotICAg
IHN0YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxJbnRlcmZhY2VUeXBlTGlzdD46OnZhbHVlID09
IDEsICIiKTsKLQotICAgIHVzaW5nIFN0cmluZ1R5cGVMaXN0ID0gdHlwZW5hbWUgQ29udmVydGVy
VHlwZTo6U3RyaW5nVHlwZUxpc3Q7Ci0gICAgdXNpbmcgU3RyaW5nVHlwZSA9IHR5cGVuYW1lIENv
bnZlcnRlclR5cGU6OlN0cmluZ1R5cGU7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
U3RyaW5nVHlwZSwgSURMRE9NU3RyaW5nPjo6dmFsdWUsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJyaWdhbmQ6OnNpemU8U3RyaW5nVHlwZUxpc3Q+Ojp2YWx1ZSA9PSAxLCAiIik7Ci0KLSAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgp
OwotCi0gICAgVmVjdG9yPHR5cGVuYW1lIE5vZGVPclN0cmluZ1R5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50
Q291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kp
IHsKLSAgICAgICAgIGF1dG8gaXRlbSA9IENvbnZlcnRlclR5cGU6OmNvbnZlcnQoc3RhdGUsIHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoaXRl
bSkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcu
aAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
T3JTdHJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gKLSNkZWZpbmUgSlNOb2RlT3JTdHJpbmdfaAotCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotVmVjdG9yPHN0ZDo6ZXhwZXJp
bWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4gdG9Ob2RlT3JTdHJpbmdWZWN0b3Io
SlNDOjpFeGVjU3RhdGUmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
SlNOb2RlT3JTdHJpbmdWZWN0b3JfaApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw4IEBAIHBhY2thZ2UgQ29kZUdlbmVyYXRvcjsKIHVzZSBzdHJpY3Q7CiAK
IHVzZSBGaWxlOjpGaW5kOwordXNlIENhcnAgcXc8bG9uZ21lc3M+OwordXNlIERhdGE6OkR1bXBl
cjsKIAogbXkgJHVzZURvY3VtZW50ID0gIiI7CiBteSAkdXNlR2VuZXJhdG9yID0gIiI7CkBAIC0x
MzksNiArMTQxLDE2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRhYmxlUHJvcGVydGllc05lZWRpbmcK
IG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRlcmZhY2VzID0ge307CiAKK3N1YiBhc3NlcnQK
K3sKKyAgICBteSAkbWVzc2FnZSA9IHNoaWZ0OworICAgIAorICAgIG15ICRtZXNzID0gbG9uZ21l
c3MoKTsKKyAgICBwcmludCBEdW1wZXIoJG1lc3MpOworCisgICAgZGllICRtZXNzYWdlOworfQor
CiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKIHsKQEAgLTMxMCw2ICszMjIsNyBAQCBz
dWIgUGFyc2VJbnRlcmZhY2UKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAg
cmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdPYmplY3QnOworICAgIHJldHVybiB1
bmRlZiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAnVU5JT04nOwogCiAgICAgaWYgKGV4aXN0cyAkY2Fj
aGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfSkgewogICAgICAgICByZXR1cm4gJGNhY2hl
ZEludGVyZmFjZXMtPnskaW50ZXJmYWNlTmFtZX07CkBAIC0zMTcsNyArMzMwLDcgQEAgc3ViIFBh
cnNlSW50ZXJmYWNlCiAKICAgICAjIFN0ZXAgIzE6IEZpbmQgdGhlIElETCBmaWxlIGFzc29jaWF0
ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRmaWxlbmFtZSA9ICRvYmplY3QtPklETEZpbGVG
b3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCi0gICAgICAgIG9yIGRpZSgiQ291bGQgTk9UIGZp
bmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIsIHJlYWNoYWJsZSBm
cm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFtZSAuICJcIiFcbiIpOworICAgICAgICBvciBh
c3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNl
TmFtZVwiLCByZWFjaGFibGUgZnJvbSBcIiIgLiAkb3V0ZXJJbnRlcmZhY2UtPm5hbWUgLiAiXCIh
XG4iKTsKIAogICAgIHByaW50ICIgIHwgIHw+ICBQYXJzaW5nIHBhcmVudCBJREwgXCIkZmlsZW5h
bWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIlxuIiBpZiAkdmVyYm9zZTsKIApA
QCAtNjEyLDYgKzYyNSwxMDggQEAgc3ViIEdldFNlcXVlbmNlT3JGcm96ZW5BcnJheUlubmVyVHlw
ZQogICAgIHJldHVybiAiIjsKIH0KIAorIyBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2Rmbi1mbGF0dGVuZWQtdW5pb24tbWVtYmVyLXR5cGVzCitzdWIgR2V0RmxhdHRlbmVkTWVtYmVy
VHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAgIG15
IEBmbGF0dGVuZWRNZW1iZXJUeXBlcyA9ICgpOworCisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlw
ZSAoQHskaWRsVW5pb25UeXBlLT5zdWJ0eXBlc30pIHsKKyAgICAgICAgaWYgKCRtZW1iZXJUeXBl
LT5pc1VuaW9uKSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVuZWRNZW1iZXJUeXBlcywgJG9i
amVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMoJG1lbWJlclR5cGUpCisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwdXNoIEBmbGF0dGVuZWRNZW1iZXJUeXBlcywgJG1lbWJlclR5cGU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQGZsYXR0ZW5lZE1lbWJlclR5cGVzOwor
fQorCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLW51bWJlci1vZi1udWxs
YWJsZS1tZW1iZXItdHlwZXMKK3N1YiBHZXROdW1iZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMKK3sK
KyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAgIG15ICRjb3VudCA9
IDA7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChAeyRpZGxVbmlvblR5cGUtPnN1YnR5
cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5cGUtPmlzTnVsbGFibGUpIHsKKyAgICAgICAg
ICAgICRjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCRtZW1iZXJUeXBlLT5pc1Vu
aW9uKSB7CisgICAgICAgICAgICAkY291bnQgKz0gJG9iamVjdC0+R2V0TnVtYmVyT2ZOdWxsYWJs
ZU1lbWJlclR5cGVzKCRtZW1iZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biAkY291bnQ7Cit9CisKK3N1YiBHZXRJRExVbmlvbk1lbWJlclR5cGVzCit7CisgICAgbXkgKCRv
YmplY3QsICRpbnRlcmZhY2UsICRpZGxVbmlvblR5cGUpID0gQF87CisKKyAgICBteSAkbnVtYmVy
T2ZOdWxsYWJsZU1lbWJlcnMgPSAkb2JqZWN0LT5HZXROdW1iZXJPZk51bGxhYmxlTWVtYmVyVHlw
ZXMoJGlkbFVuaW9uVHlwZSk7CisgICAgaWYgKCRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA+IDEp
IHsKKyAgICAgICAgYXNzZXJ0KCJVbmlvbiB0eXBlcyBtdXN0IG9ubHkgaGF2ZSAwIG9yIDEgbnVs
bGFibGUgdHlwZXMuIik7CisgICAgfQorCisgICAgbXkgQGlkbFVuaW9uTWVtYmVyVHlwZXMgPSAo
KTsKKworICAgIGlmICgkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPT0gMSkgeworICAgICAgICBw
dXNoIEBpZGxVbmlvbk1lbWJlclR5cGVzLCAiSURMTnVsbCI7CisgICAgfQorCisgICAgZm9yZWFj
aCBteSAkbWVtYmVyVHlwZSAoJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMoJGlkbFVu
aW9uVHlwZSkpIHsKKyAgICAgICAgcHVzaCBAaWRsVW5pb25NZW1iZXJUeXBlcywgJG9iamVjdC0+
R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJG1lbWJlclR5cGUpOworICAgIH0KKworICAgIHJl
dHVybiBAaWRsVW5pb25NZW1iZXJUeXBlczsKK30KKworc3ViIEdldEJhc2VJRExUeXBlCit7Cisg
ICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBlKSA9IEBfOworCisgICAgbXkgJUlE
TFR5cGVzID0gKAorICAgICAgICAiYW55IiA9PiAiSURMQW55IiwKKyAgICAgICAgImJvb2xlYW4i
ID0+ICJJRExCb29sZWFuIiwKKyAgICAgICAgImJ5dGUiID0+ICJJRExCeXRlIiwKKyAgICAgICAg
Im9jdGV0IiA9PiAiSURMT2N0ZXQiLAorICAgICAgICAic2hvcnQiID0+ICJJRExTaG9ydCIsCisg
ICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIklETFVuc2lnbmVkU2hvcnQiLAorICAgICAgICAi
bG9uZyIgPT4gIklETExvbmciLAorICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gIklETFVuc2ln
bmVkTG9uZyIsCisgICAgICAgICJsb25nIGxvbmciID0+ICJJRExMb25nTG9uZyIsCisgICAgICAg
ICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJJRExVbnNpZ25lZExvbmdMb25nIiwKKyAgICAgICAg
ImZsb2F0IiA9PiAiSURMRmxvYXQiLAorICAgICAgICAidW5yZXN0cmljdGVkIGZsb2F0IiA9PiAi
SURMVW5yZXN0cmljdGVkRmxvYXQiLAorICAgICAgICAiZG91YmxlIiA9PiAiSURMRG91YmxlIiwK
KyAgICAgICAgInVucmVzdHJpY3RlZCBkb3VibGUiID0+ICJJRExVbnJlc3RyaWN0ZWREb3VibGUi
LAorICAgICAgICAiRE9NU3RyaW5nIiA9PiAiSURMRE9NU3RyaW5nIiwKKyAgICAgICAgIkJ5dGVT
dHJpbmciID0+ICJJRExCeXRlU3RyaW5nIiwKKyAgICAgICAgIlVTVlN0cmluZyIgPT4gIklETFVT
VlN0cmluZyIsCisgICAgKTsKKworICAgIHJldHVybiAkSURMVHlwZXN7JGlkbFR5cGUtPm5hbWV9
IGlmIGV4aXN0cyAkSURMVHlwZXN7JGlkbFR5cGUtPm5hbWV9OworICAgIHJldHVybiAiSURMRW51
bWVyYXRpb248IiAuICRvYmplY3QtPkdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2Us
ICRpZGxUeXBlLT5uYW1lKSAuICI+IiBpZiAkb2JqZWN0LT5Jc0VudW1UeXBlKCRpZGxUeXBlLT5u
YW1lKTsKKyAgICByZXR1cm4gIklETERpY3Rpb25hcnk8IiAuICRvYmplY3QtPkdldERpY3Rpb25h
cnlDbGFzc05hbWUoJGludGVyZmFjZSwgJGlkbFR5cGUtPm5hbWUpIC4gIj4iIGlmICRvYmplY3Qt
PklzRGljdGlvbmFyeVR5cGUoJGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURMU2VxdWVu
Y2U8IiAuICRvYmplY3QtPkdldElETFR5cGUoJGludGVyZmFjZSwgQHskaWRsVHlwZS0+c3VidHlw
ZXN9WzBdKSAuICI+IiBpZiAkb2JqZWN0LT5Jc1NlcXVlbmNlVHlwZSgkaWRsVHlwZS0+bmFtZSk7
CisgICAgcmV0dXJuICJJRExGcm96ZW5BcnJheTwiIC4gJG9iamVjdC0+R2V0SURMVHlwZSgkaW50
ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRvYmplY3QtPklzRnJv
emVuQXJyYXlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETFVuaW9uPCIgLiBq
b2luKCIsICIsICRvYmplY3QtPkdldElETFVuaW9uTWVtYmVyVHlwZXMoJGludGVyZmFjZSwgJGlk
bFR5cGUpKSAuICI+IiBpZiAkaWRsVHlwZS0+aXNVbmlvbjsKKyAgICByZXR1cm4gIklETEludGVy
ZmFjZTwiIC4gJGlkbFR5cGUtPm5hbWUgLiAiPiI7Cit9CisKK3N1YiBHZXRJRExUeXBlCit7Cisg
ICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxUeXBlKSA9IEBfOworCisgICAgbXkgJGJh
c2VJRExUeXBlID0gJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJGlkbFR5cGUp
OworICAgIHJldHVybiAiSURMTnVsbGFibGU8IiAuICRiYXNlSURMVHlwZSAuICI+IiBpZiAkaWRs
VHlwZS0+aXNOdWxsYWJsZTsKKyAgICByZXR1cm4gJGJhc2VJRExUeXBlOworfQorCiAjIFRoZXNl
IG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5lZCBpbiBidWlsdGluc19nZW5l
cmF0b3IucHkuCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3Rpbmcg
V2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1M
RW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCkBAIC03OTEsNiArOTA2LDcg
QEAgc3ViIElzV3JhcHBlclR5cGUKIAogICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1JlZlB0
clR5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUo
JHR5cGUpOworICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJVTklPTiI7CiAgICAgcmV0dXJuIDAg
aWYgJHdlYkNvcmVUeXBlSGFzaHskdHlwZX07CiAKICAgICByZXR1cm4gMTsKQEAgLTgwNCw3ICs5
MjAsNyBAQCBzdWIgZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hCiAgICAgbXkg
JG9iamVjdCA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKLSAgICBt
eSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUp
IG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZh
Y2VOYW1lXCIhXG4iKTsKKyAgICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRl
cmZhY2UoJGludGVyZmFjZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUg
Zm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VOYW1lXCIhXG4iKTsKIAogICAgIG9wZW4gRklMRSwg
IjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgICAgbXkgQGxpbmVzID0gPEZJTEU+OwpAQCAtODM2LDcg
Kzk1Miw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogCiAgIHJldHVybiAwIHVu
bGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKIAotICBteSAkaWRsRmlsZSA9ICRv
YmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5cGUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQg
SURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKKyAgbXkgJGlkbEZpbGUgPSAk
b2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBm
aW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CiAKICAgb3BlbiBGSUxF
LCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgbXkgQGxpbmVzID0gPEZJTEU+OwpAQCAtODcyLDcg
Kzk4OCw3IEBAIHN1YiBDb21wdXRlSXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmEKIAogICBy
ZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSk7CiAKLSAg
bXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBvciBkaWUo
IkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7Cisg
IG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZSkgb3IgYXNz
ZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVcIiFcbiIp
OwogCiAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgIG15IEBsaW5lcyA9IDxG
SUxFPjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYg
KzIzOSwyOCBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfQogfQogCitzdWIgQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlCit7CisgICAgbXkgKCRpZGxUeXBlLCAkY29uZGl0aW9uYWwp
ID0gQF87CisKKyAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVy
KCRpZGxUeXBlLT5uYW1lKTsKKworICAgIGlmICgkaWRsVHlwZS0+aXNVbmlvbikgeworICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9WYXJpYW50Lmg+IiwgJGNvbmRpdGlvbmFsKTsKKwor
ICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBlIChAeyRpZGxUeXBlLT5zdWJ0eXBlc30pIHsK
KyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkbWVtYmVyVHlwZSwgJGNv
bmRpdGlvbmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGlkbFR5cGUtPm5hbWUpKSB7CisgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkaWRsVHlwZS0+bmFtZSAuICIuaCIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCiBzdWIgQWRkVG9JbXBsSW5jbHVkZXMKIHsKICAgICBt
eSAkaGVhZGVyID0gc2hpZnQ7CkBAIC0zOTA0LDYgKzM5MjYsNyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICBteSAkYXJndW1lbnRJbmRleCA9IDA7CiAgICAgZm9yZWFjaCBteSAk
cGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJHR5cGUg
PSAkcGFyYW1ldGVyLT50eXBlOworICAgICAgICBteSAkaWRsVHlwZSA9ICRwYXJhbWV0ZXItPmlk
bFR5cGU7CiAKICAgICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIG9mIG5vbi1udWxsYWJs
ZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAkcGFyYW1ldGVyLT5pc09wdGlv
bmFsICYmICEkcGFyYW1ldGVyLT5pc051bGxhYmxlICYmICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBw
ZXJUeXBlKCR0eXBlKTsKICAgICAgICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIHByZWNlZGlu
ZyB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAoJHBhcmFtZXRlci0+
aXNPcHRpb25hbCAmJiAgQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9WyRudW1QYXJhbWV0ZXJzIC0g
MV0tPmlzVmFyaWFkaWMpOwpAQCAtMzk2NSwxNyArMzk4OCwxMyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3Zl
KCRuYW1lKSI7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKLSAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7dHlwZX0uaCIsICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIHVubGVzcyAkY29kZUdl
bmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpIG9yICEkY29kZUdlbmVyYXRvci0+SXNX
cmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAgICAgICAgICBteSAoJHdyYXBwZXJUeXBlLCAkd3JhcHBl
ZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gdG9Bcmd1bWVudHM8VmFyaWFk
aWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGU+Pigqc3RhdGUsICRhcmd1bWVudElu
ZGV4KTtcbiIpOwotCi0gICAgICAgICAgICBpZiAoSXNOYXRpdmVUeXBlKCR0eXBlKSkgewotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKCEkbmFtZS5hcmd1bWVudHMpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgJG5hbWUuYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJm
YWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUNvbnZlcnQuaCJ9ID0gMTsK
KyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkaWRsVHlwZSwgJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAg
ICAgIAorICAgICAgICAgICAgbXkgJG1ldGFUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldElETFR5
cGUoJGludGVyZmFjZSwgJGlkbFR5cGUpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGF1dG8gJG5hbWUgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8JG1ldGFUeXBlPigq
c3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7XG4iKTsKKwogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUuYXJndW1lbnRz
LnZhbHVlKCkpIjsKIAogICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlw
ZSgkdHlwZSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtCShyZXZpc2lvbiAyMDY3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTMgQEAgc3Ry
dWN0KCBpZGxEb2N1bWVudCA9PiB7CiAgICAgZmlsZU5hbWUgPT4gJyQnLAogfSk7CiAKK3N0cnVj
dCggZG9tVHlwZSA9PiB7CisgICAgbmFtZSA9PiAgICAgICAgICckJywgIyBUeXBlIGlkZW50aWZp
ZXIKKyAgICBpc051bGxhYmxlID0+ICAgJyQnLCAjIElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykK
KyAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAjIElzIHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkK
KyAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFycmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlk
IGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKK30pOworCiAjIFVzZWQgdG8gcmVwcmVzZW50ICdpbnRl
cmZhY2UnIGJsb2Nrcwogc3RydWN0KCBkb21JbnRlcmZhY2UgPT4gewogICAgIG5hbWUgPT4gJyQn
LCAgICAgICMgQ2xhc3MgaWRlbnRpZmllcgpAQCAtNzksMTggKzg2LDEyIEBAIHN0cnVjdCggZG9t
QXR0cmlidXRlID0+IHsKICAgICBzaWduYXR1cmUgPT4gJyQnLCAgICAgICAgICMgQXR0cmlidXRl
IHNpZ25hdHVyZQogfSk7CiAKLXN0cnVjdCggZG9tVHlwZSA9PiB7Ci0gICAgbmFtZSA9PiAgICAg
ICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKLSAgICBpc051bGxhYmxlID0+ICAgJyQnLCAjIElz
IHRoZSB0eXBlIE51bGxhYmxlIChUPykKLSAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAjIElzIHRo
ZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKLSAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAjIEFycmF5
IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKLX0pOwotCiAj
IFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2YXJpYWJsZSBuYW1lJyA8LT4gJ3ZhcmlhYmxl
IHR5cGUnCiBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CiAgICAgZGlyZWN0aW9uID0+ICckJywg
ICAjIFZhcmlhYmxlIGRpcmVjdGlvbiAoaW4gb3Igb3V0KQogICAgIG5hbWUgPT4gJyQnLCAgICAg
ICAgIyBWYXJpYWJsZSBuYW1lCi0gICAgdHlwZSA9PiAnJCcgICAgICAsICAjIFZhcmlhYmxlIHR5
cGUKKyAgICB0eXBlID0+ICckJywgICAgICAgICMgVmFyaWFibGUgdHlwZSBuYW1lIChERVBSRUNB
VEVEIC0gcGxlYXNlIHVzZSBpZGxUeXBlKQorICAgIGlkbFR5cGUgPT4gJyQnLCAgICAgIyBWYXJp
YWJsZSB0eXBlCiAgICAgc3BlY2lhbHMgPT4gJ0AnLCAgICAjIFNwZWNpYWxzCiAgICAgZXh0ZW5k
ZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCiAgICAgaXNOdWxsYWJs
ZSA9PiAnJCcsICAjIElzIHZhcmlhYmxlIHR5cGUgTnVsbGFibGUgKFQ/KQpAQCAtNzA1LDYgKzcw
Niw3IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1iZXIKICAgICAgICAgJG1lbWJlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogCiAgICAgICAgIG15ICR0eXBl
ID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICAkbWVtYmVyLT5pZGxUeXBlKCR0eXBlKTsK
ICAgICAgICAgJG1lbWJlci0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRtZW1iZXItPmlz
TnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogCkBAIC0xMjUyLDYgKzEyNTQsNyBAQCBzdWIg
cGFyc2VBdHRyaWJ1dGVSZXN0CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNp
Z25hdHVyZS0+bmV3KCkpOwogICAgICAgICAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFy
c2VUeXBlKCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pZGxUeXBlKCR0eXBl
KTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5cGUtPm5hbWUpOwog
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxs
YWJsZSk7CiAKQEAgLTE1NDQsNiArMTU0Nyw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJl
ZEFyZ3VtZW50CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAib3B0aW9uYWwiLCBfX0xJTkVfXyk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+
cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5pZGxUeXBlKCR0eXBlKTsKICAg
ICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4
KCR0eXBlLT5uYW1lKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCR0eXBl
LT5pc051bGxhYmxlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwoMSk7CkBA
IC0xNTUzLDYgKzE1NTcsNyBAQCBzdWIgcGFyc2VPcHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudAog
ICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQt
PnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8pIHsKICAgICAgICAgbXkgJHR5cGUg
PSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5pZGxUeXBlKCR0
eXBlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAg
ICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAgICAgICAg
ICRwYXJhbURhdGFOb2RlLT5pc09wdGlvbmFsKDApOwpAQCAtMTYxNSw2ICsxNjIwLDcgQEAgc3Vi
IHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9t
U2lnbmF0dXJlLT5uZXcoKSk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBl
KCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pZGxUeXBlKCR0eXBlKTsKICAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5cGUtPm5hbWUpOwogICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7
CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiAr
MzU5LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZv
aWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoRE9NU3RyaW5nIGhlYWQsIERPTVN0cmluZy4uLiB0YWls
KTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKHVucmVzdHJpY3RlZCBkb3VibGUgaGVh
ZCwgdW5yZXN0cmljdGVkIGRvdWJsZS4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljTm9kZU1l
dGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFpbCk7CisgICAgdm9pZCB2YXJpYWRpY1VuaW9uTWV0
aG9kKERPTVN0cmluZyBoZWFkLCAoTm9kZSBvciBET01TdHJpbmcpLi4uIHRhaWwpOwogCiAgICAg
Ly8gTnVsbGFibGUgYXR0cmlidXRlcy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGRvdWJsZT8gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2
aXNpb24gMjA2NzcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRl
IDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAjaW5jbHVkZSAiSlNUZXN0T2JqZWN0
QS5oIgpAQCAtOTcxLDYgKzk3Miw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY0RvdWJsZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BbnkoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24o
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVu
dChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTU3Nyw2ICsxNTc5LDcgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgInZhcmlhZGljU3RyaW5nTWV0aG9kIiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9k
KSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGljRG91YmxlTWV0aG9kIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKSwg
KGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGljTm9kZU1ldGhvZCIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpLCAoaW50cHRy
X3QpICgxKSB9IH0sCisgICAgeyAidmFyaWFkaWNVbmlvbk1ldGhvZCIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKSwgKGludHB0cl90KSAo
MSkgfSB9LAogICAgIHsgImFueSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25BbnkpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbiIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxv
YXRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpLCAoaW50cHRyX3QpICgxKSB9IH0sCkBAIC02
NjE5LDkgKzY2MjIsOCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGJsb2JBcmdzID0gdG9Bcmd1bWVudHM8
VmFyaWFkaWNIZWxwZXI8SlNCbG9iLCBCbG9iPj4oKnN0YXRlLCAwKTsKLSAgICBpZiAoIWJsb2JB
cmdzLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCBibG9iQXJncy5hcmd1bWVudEluZGV4LCAiYmxvYkFyZ3MiLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBhdXRvIGJsb2JBcmdz
ID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETEludGVyZmFjZTxCbG9iPj4oKnN0YXRlLCAw
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGJsb2JBcmdzLmFyZ3VtZW50cy52
YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTcxMzcsNyArNzEzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGhlYWQgPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byB0YWls
ID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVlLCBTdHJpbmc+Pigqc3Rh
dGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExET01T
dHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUo
aGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03MTU4LDcgKzcxNjAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8g
dGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTQzo6SlNWYWx1ZSwgZG91YmxlPj4o
KnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURM
VW5yZXN0cmljdGVkRG91YmxlPigqc3RhdGUsIDEpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC52YXJpYWRpY0RvdWJsZU1l
dGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZhbHVlKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzE4MCwxMyArNzE4
MiwzMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgYXV0
byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJoZWFkIiwgIlRlc3RPYmplY3QiLCAidmFy
aWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKLSAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxW
YXJpYWRpY0hlbHBlcjxKU05vZGUsIE5vZGU+Pigqc3RhdGUsIDEpOwotICAgIGlmICghdGFpbC5h
cmd1bWVudHMpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgdGFpbC5hcmd1bWVudEluZGV4LCAidGFpbCIsICJUZXN0T2JqZWN0IiwgInZh
cmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlh
ZGljQXJndW1lbnRzPElETEludGVyZmFjZTxOb2RlPj4oKnN0YXRlLCAxKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFy
aWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZhbHVlKCkpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNV
bmlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInZhcmlhZGljVW5pb25NZXRob2QiKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBoZWFkID0gc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gdGFp
bCA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbmlvbjxJRExJbnRlcmZhY2U8Tm9kZT4s
IElETERPTVN0cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLnZhcmlhZGljVW5pb25NZXRob2Qo
V1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52YWx1ZSgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjA2NzcyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
SlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgpAQCAtMTM3LDcgKzEzOCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgY29uc3RydWN0SlMKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKLSAg
ICBhdXRvIGxvbmdBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1ZhbHVl
LCBpbnQzMl90Pj4oKnN0YXRlLCAwKTsKKyAgICBhdXRvIGxvbmdBcmdzID0gY29udmVydFZhcmlh
ZGljQXJndW1lbnRzPElETExvbmc+KCpzdGF0ZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShsb25nQXJncykpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
Tm9kZS5pZGwJKHJldmlzaW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5v
ZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiBbCiAgICAgTm9JbnRlcmZh
Y2VPYmplY3QsCiBdIGludGVyZmFjZSBDaGlsZE5vZGUgewotICAgIFtVbnNjb3BhYmxlLCBNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGJlZm9yZSgoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24s
IEN1c3RvbV0gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKLSAgICBb
VW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEN1c3RvbV0gdm9pZCByZXBsYWNl
V2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4g
bm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBh
ZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVwbGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLiBub2Rlcyk7CiAgICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHJldmlz
aW9uIDIwNjc3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50
IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
Y2hpbGRFbGVtZW50Q291bnQ7CiAKLSAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb24sIEN1c3RvbV0gdm9pZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMp
OwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lk
IGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcp
Li4uIG5vZGVzKTsKKyAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogCiAgICAgLy8gW1Vuc2Nv
cGFibGVdIEVsZW1lbnQ/IHF1ZXJ5KERPTVN0cmluZyByZWxhdGl2ZVNlbGVjdG9ycyk7CiAgICAg
Ly8gW05ld09iamVjdCwgVW5zY29wYWJsZV0gRWxlbWVudHMgcXVlcnlBbGwoRE9NU3RyaW5nIHJl
bGF0aXZlU2VsZWN0b3JzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290739</attachid>
            <date>2016-10-05 12:36:01 -0700</date>
            <delta_ts>2016-10-06 12:52:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161005123248.patch</filename>
            <type>text/plain</type>
            <size>67874</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxNi0xMC0wNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgUmVtb3ZlIGRlbGV0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NoYXJh
Y3RlckRhdGFDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05v
ZGVPclN0cmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgIFN3aXRjaCBmcm9tIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIgdG8gUmVmIHRv
IG1hdGNoIHNpbWlsYXIgdXNlcyBlbHNld2hlcmUgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmFyaWFkaWNIZWxwZXJCYXNlOjpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8gSlNET01Db252ZXJ0
LmggYW5kIHJlbmFtZWQgdG8gY29udmVydFZhcmlhZGljQXJndW1lbnRzIGFuZCBtYWtlCisgICAg
ICAgIGl0IHdvcmsgaW4gdGVybXMgb2YgSURMVHlwZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDb252ZXJ0ZXI6OmNvbnZl
cnRGYWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydEZhaWxhYmxlKToKKyAgICAgICAgUmVuYW1lZCBEZWZhdWx0Q29udmVydGVyIHRv
IEJhc2VDb252ZXJ0ZXIgYW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlciB0byBhbGxvdworICAgICAg
ICB1c2luZyB0aGUgY3VyaW91c2x5IHJlY3VycmluZyB0ZW1wbGF0ZSBwYXR0ZXJuIChDUlRQKSB0
byBhZGQgYSBzcGVjaWFsaXplZCAKKyAgICAgICAgY29udmVydEZhaWxhYmxlLiBjb252ZXJ0RmFp
bGFibGUgYWx3YXlzIHJldHVybnMgYW4gT3B0aW9uYWw8VD4gYW5kIGV4cGxpY2l0bHkKKyAgICAg
ICAgY2F0Y2hlcyBleGNlcHRpb25zLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpwcmVwZW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVu
dDo6YWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpyZXBsYWNl
V2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnByZXBlbmQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjphcHBlbmQpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbm93IGdlbmVyYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICBBZGQgYXNzZXJ0IHRvIGhlbHAgZGVidWdnaW5nLgorCisgICAgICAgIChQYXJzZUludGVyZmFj
ZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVzIGFzIGludGVyZmFjZXMuCisKKyAg
ICAgICAgKEdldEZsYXR0ZW5lZE1lbWJlclR5cGVzKToKKyAgICAgICAgKEdldE51bWJlck9mTnVs
bGFibGVNZW1iZXJUeXBlcyk6CisgICAgICAgIChHZXRJRExVbmlvbk1lbWJlclR5cGVzKToKKyAg
ICAgICAgSW1wbGVtZW50IFdlYklETCBhbGdvcml0aG1zIGZvciBnZXR0aW5nIHRoZSBmbGF0dGVu
ZWQgbWVtYmVyIGxpc3Qgb2YgdW5pb24sIGFuZCB1c2UgaXQKKyAgICAgICAgdG8gY29uc3RydWN0
IHRoZSBjKysgSURMVHlwZS4KKworICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICAo
R2V0SURMVHlwZSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBhbiBwYXJzZWQgaWRs
VHlwZSB0byBhIGMrKyBJRExUeXBlLgorCisgICAgICAgIChJc1dyYXBwZXJUeXBlKToKKyAgICAg
ICAgRG9uJ3QgdHJlYXQgdW5pb24gdHlwZXMgYXMgd3JhcHBlcnMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKToKKyAgICAgICAgQWRkIGhlbHBlciBmb3IgYWRkaW5nICNp
bmNsdWRlcyBiYXNlZCBvbiBhIHBhcnNlZCBpZGxUeXBlLiBJdCByZWN1cnNpdmVseSBoYW5kbGVz
IHVuaW9uIHR5cGVzLgorCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBmdW5jdGlvbiB0byBoYW5k
bGUgYWxsIHZhcmlhZGljIGFyZ3VtZW50cywgaW5jbHVkaW5nCisgICAgICAgIHVuaW9uIHR5cGVz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChw
YXJzZURpY3Rpb25hcnlNZW1iZXIpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VF
eGNlcHRpb25GaWVsZCk6CisgICAgICAgIEFkZCBhbiBpZGxUeXBlIHRvIGRvbVNpZ25hdHVyZSBh
bmQgcG9wdWxhdGUgaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzLgorCisgICAgICAgICogZG9t
L0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAgICBS
ZW1vdmUgQ3VzdG9tIGV4dGVuZGVkIGF0dHJpYnV0ZS4KIDIwMTYtMTAtMDUgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl1bRGlyZWN0MkRdIEFkZCBp
bml0aWFsIEQyRCBQYXRoIGFuZCBHcmFkaWVudCBpbXBsZW1lbnRhdGlvbgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDY1LDcgKzEwNjUsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDbGllbnRSZWN0Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKQEAgLTExMDIsNyArMTEwMSw2IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJh
Z21lbnRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RXJyb3JFdmVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAK
QEAgLTExNTUsNyArMTE1Myw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdz
L2pzL0pTTm9kZU9yU3RyaW5nLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VUaW1pbmdDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAkocmV2aXNpb24gMjA2ODE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcg
QEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVdpdGgoRAogICAgIHNldENvbmZp
Z3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8UlRDUnRwU2VuZGVy
PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2ssIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0
cmVhbXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNv
bm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBW
ZWN0b3I8UmVmPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTExNCw4ICsxMTQsOCBAQCBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6CiAgICAgfQogCiAgICAgVmVjdG9yPFN0
cmluZz4gbWVkaWFTdHJlYW1JZHM7Ci0gICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0g
ICAgICAgIG1lZGlhU3RyZWFtSWRzLmFwcGVuZChzdHJlYW0uZ2V0KCkuaWQoKSk7CisgICAgZm9y
IChhdXRvJiBzdHJlYW0gOiBzdHJlYW1zKQorICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQo
c3RyZWFtLT5pZCgpKTsKIAogICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0gbnVsbHB0cjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gMjA2ODE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXJ0IG9mIGxlZ2FjeSBNZWRpYVN0cmVhbS1i
YXNlZCBBUEkgKG1vc3RseSBpbXBsZW1lbnRlZCBhcyBKUyBidWlsdC1pbnMpCiAgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmQtPmdldFJlbW90ZVN0cmVhbXMoKTsgfQogCi0gICAgUmVmUHRyPFJUQ1J0cFNlbmRl
cj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVm
UHRyPFJUQ1J0cFNlbmRlcj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0
IFZlY3RvcjxSZWY8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJl
bW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFRoaXMg
ZW51bSBpcyBtaXJyb3JlZCBpbiBSVENSdHBUcmFuc2NlaXZlci5oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MDY4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MjksOCArMjcyOSw2IEBACiAJCTdDMUU5NzI4MUE5Rjk4
MzQwMDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUU5NzI2MUE5Rjk4MzQwMDdCRjBGQiAvKiBB
dXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLzsgfTsKIAkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1
IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcCAqLzsgfTsKIAkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpT
RE9NR2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5oICovOyB9OwotCQk3QzMzRjM1QTFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJE
YXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzNGMzU4MUI0QTA0NDgwMDUwMkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3Bw
ICovOyB9OwotCQk3QzMzRjM1RTFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mz
M0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJN0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzRjM2
MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLzsgfTsK
IAkJN0MzQTkxRTYxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQTkxRTUxQzk2
M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDM0I3OTcxMTkwODc1N0IwMEI0N0Ey
RCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdl
SGFuZGxlci5jcHAgKi87IH07CkBAIC0yNzY0LDggKzI3NjIsNiBAQAogCQk3Qzc5NDFFNDFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4
RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovOyB9OwogCQk3Qzc5NDFFNTFDNTZD
MjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThF
IC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLzsgfTsKIAkJN0M4M0RFODYxRDA0Q0M1
RDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZl
ci5oICovOyB9OwotCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5MUEz
OEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLzsgfTsKLQkJN0M5MUEz
OTAxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyog
SlNOb2RlT3JTdHJpbmcuaCAqLzsgfTsKIAkJN0M5M0YzNDkxQUE2QkE1RTAwQTk4QkFCIC8qIENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uLmNwcCAqLzsgfTsKIAkJN0M5M0YzNEExQUE2QkE1RTAwQTk4QkFCIC8qIENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M5M0YzNDgxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdDOTNGMzREMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGls
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5
M0YzNEIxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgKi87
IH07CkBAIC05ODI1LDggKzk4MjEsNiBAQAogCQk3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyog
QXV0b0ZpbGxCdXR0b25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYx
NSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdDMzNGMzU4MUI0QTA0NDgwMDUwMkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDaGFyYWN0ZXJEYXRhQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNUMxQjRBMDRDRTAw
NTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rv
Y3VtZW50RnJhZ21lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZEFjY2Vzc1BvbGljeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVzZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
ODcyLDggKzk4NjYsNiBAQAogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVj
dG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRM
aW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0Q0JE
NDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M5MUEz
OEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZU9yU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm9kZU9yU3RyaW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M5M0YzNDgxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxlZENvbnRl
bnRFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNEIxQUE2
QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNjQsOCArMjEwNTYsNiBAQAogCQkJCUUz
ODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLywKIAkJCQlD
NkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCAqLywKIAkJ
CQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggKi8sCi0J
CQkJN0M5MUEzOEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLywKLQkJ
CQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLywKIAkJCQlD
QjM4RkQ1NTFDRDIxRDVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcCAq
LywKIAkJCQk5M0I3MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcCAqLywKIAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmggKi8sCkBAIC0yMTExNyw3ICsyMTEwNyw2IEBACiAJCQkJQkU2REY3MTAx
NzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJCTg5
MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwICovLAogCQkJCTQ5RUVE
MTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHAgKi8sCi0JCQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1
c3RvbS5jcHAgKi8sCiAJCQkJNDZBNThBQzQxRDQ2QjNGQTAwNDMyMDM2IC8qIEpTQ2xpZW50UmVj
dEN1c3RvbS5jcHAgKi8sCiAJCQkJQTU4NEZFMzcxODY0REFDMTAwODQzQjEwIC8qIEpTQ29tbWFu
ZExpbmVBUElIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQk3Q0VGMjYxODFENkE5MkUzMDBCRTkwNUQg
LyogSlNDcnlwdG9DdXN0b20uY3BwICovLApAQCAtMjExMzksNyArMjExMjgsNiBAQAogCQkJCTQ5
QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlB
RERBOTRCRjE5Njg2RjgwMDA0NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5oICovLAogCQkJCTdD
MzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICov
LAotCQkJCTdDMzNGMzVDMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5j
cHAgKi8sCiAJCQkJQTlDNkU2NDYwRDc0NjVDQTAwNjQ0MkU5IC8qIEpTRE9NTWltZVR5cGVBcnJh
eUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1
Z2luQXJyYXlDdXN0b20uY3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBK
U0RPTVBsdWdpbkN1c3RvbS5jcHAgKi8sCkBAIC0yNTIxMiw3ICsyNTIwMCw2IEBACiAJCQkJMUE3
NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8qIEpTTm9kZUxpc3RDdXN0b20uaCBp
biBIZWFkZXJzICovLAotCQkJCTdDOTFBMzkwMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0
cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8qIEpT
Tm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUwM0NBNjEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRUMxRTI5
MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yODU5Miw3ICsyODU3OSw2IEBACiAJCQkJRkRBMTVFQTExMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkRBMTVFQTMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NURGMzFGMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0ZXJE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzNGMzVBMUI0QTA0NDgwMDUwMkNBRiAvKiBK
U0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODcwRjND
RTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NkE1
OEFDNTFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQzA2NTg5MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjg2NjQsNyArMjg2NTAsNiBAQAogCQkJCTdDMzNGMzYyMUI0
QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTIyMUUwNUYxQzAyQjQ0NDAwNkExQTAwIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFGNTA5RDFDQzYwMDAwQkUzMjUgLyogSlNEb2N1
bWVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzM0YzNUUxQjRBMDRDRTAwNTAyQ0FG
IC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzIyNjBD
MERCNjlGMTkwMDg5QjY2OSAvKiBKU0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNCNzBENjMwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzYwRDdDMDBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01Db3JlRXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5MjYsNyArMjg5MTEsNiBAQAogCQkJCTFB
NzUwREQ0MEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0Q5QzJDMjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlz
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEg
LyogSlNOb2RlT3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFE
NzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzNTAz
Q0E1MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMUVDMUUyODE0RkY2MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIwNjgx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJKU0NTU1ZhbHVlQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5jcHAiCiAjaW5jbHVkZSAiSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDbGllbnRSZWN0Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDcnlwdG9DdXN0
b20uY3BwIgpAQCAtNjksNyArNjgsNiBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5jcHAiCiAj
aW5jbHVkZSAiSlNEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Vycm9yRXZlbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTRXJyb3JIYW5kbGVyLmNwcCIKQEAgLTExNCw3ICsxMTIsNiBAQAog
I2luY2x1ZGUgIkpTTm9kZUZpbHRlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0
b3JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3RDdXN0b20uY3BwIgotI2luY2x1ZGUg
IkpTTm9kZU9yU3RyaW5nLmNwcCIKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwIgogI2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwIgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDY4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRh
dGFDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NoYXJhY3RlckRhdGEuaCIKLQotI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlND
aGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6YWZ0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVk
KCkuYWZ0ZXIodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpT
VmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJ
KHJldmlzaW9uIDIwNjgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsNDYgKzM0MSw2IEBAIHRlbXBsYXRlPEpTQzo6
TmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGgKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IE5hdGl2ZVZhbHVlVHJhaXRzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFt
ZSBET01DbGFzcywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBWYXJpYWRpY0hlbHBl
ckJhc2UgewotICAgIHVzaW5nIEl0ZW0gPSBET01DbGFzczsKLQotICAgIHN0YXRpYyBPcHRpb25h
bDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFs
dWUpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBU
cmFpdHNUeXBlOwotICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRy
YWl0c1R5cGU6Om5hdGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKLSAgICB9
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0
cnVjdCBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWlsdGluPjo6dHlw
ZT4gewotICAgIHVzaW5nIENsYXNzID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRl
Y2x0eXBlKHN0ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOwotICAgIHVz
aW5nIEl0ZW0gPSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKLQotICAgIHN0YXRpYyBP
cHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpzVmFs
dWUpCi0gICAgewotICAgICAgICBhdXRvKiB2YWx1ZSA9IEpTQ2xhc3M6OnRvV3JhcHBlZChqc1Zh
bHVlKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owot
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnZhbHVlKTsKLSAgICB9Ci19OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJpYWRp
Y0hlbHBlciA6IHB1YmxpYyBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3M+IHsK
LSAgICB1c2luZyBJdGVtID0gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERP
TUNsYXNzPjo6SXRlbTsKLSAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8SXRlbT47Ci0KLSAg
ICBzdHJ1Y3QgUmVzdWx0IHsKLSAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXg7Ci0gICAgICAg
IE9wdGlvbmFsPENvbnRhaW5lcj4gYXJndW1lbnRzOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBWYXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0
b0FyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAKIC8v
IElubGluZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRlIGRlZmluaXRpb25zLgogCkBAIC04OTMsMjQg
Kzg1Myw2IEBAIGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWMKICAgICBy
ZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQo
KSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBW
YXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQotewotICAgIHNpemVf
dCBsZW5ndGggPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPiBs
ZW5ndGgpCi0gICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKLQotICAgIHR5cGVuYW1lIFZh
cmlhZGljSGVscGVyOjpDb250YWluZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IHN0
YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFk
aWNIZWxwZXI6OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsKLSAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHZhbHVlLnZhbHVlKCkpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQogdGVtcGxh
dGU8SlNDOjpOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gSlNDOjpF
bmNvZGVkSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBsZW5ndGgs
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0aW9uKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA2ODE2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEVuYWJsZUlmRmxvYXRp
bmdQb2kKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gY29udmVydERpY3Rpb25h
cnkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogCisvLyBVc2VkIGZvciBJREwgZW51
bWVyYXRpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gcGFyc2UoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hh
ciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOworCiBlbnVtIGNsYXNzIElzTnVsbGFibGUg
eyBObywgWWVzIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFQqIGNvbnZl
cnRXcmFwcGVyVHlwZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSXNOdWxsYWJsZSk7
CiAKQEAgLTczLDIxICs3NywzMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+
IGlubGluCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRDb252ZXJ0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVy
aXZlZD4gc3RydWN0IEJhc2VDb252ZXJ0ZXIgewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBP
cHRpb25hbDxUPjsKKworICAgIHN0YXRpYyBPcHRpb25hbDxUPiBjb252ZXJ0RmFpbGFibGUoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBh
dXRvJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IERlcml2ZWQ6OmNvbnZlcnQoc3Rh
dGUsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgTnVsbG9wdCk7
CisKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGU+IHN0cnVjdCBDb252ZXJ0ZXIgOiBEZWZhdWx0
Q29udmVydGVyPFQ+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZT4gc3Ry
dWN0IENvbnZlcnRlciA6IEJhc2VDb252ZXJ0ZXI8VCwgQ29udmVydGVyPFQ+PiB7CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBEZWZhdWx0Q29udmVydGVyPGJvb2w+
IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxib29sPiA6IEJhc2VDb252ZXJ0ZXI8Ym9v
bCwgQ29udmVydGVyPGJvb2w+PiB7CiAgICAgc3RhdGljIGJvb2wgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2
YWx1ZS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBD
b252ZXJ0ZXI8U3RyaW5nPiA6IERlZmF1bHRDb252ZXJ0ZXI8U3RyaW5nPiB7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8U3RyaW5nPiA6IEJhc2VDb252ZXJ0ZXI8U3RyaW5nLCBDb252ZXJ0
ZXI8U3RyaW5nPj4gewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBTdHJpbmc7IC8vIFVzZSBu
dWxsIHN0cmluZyB0byBtZWFuIGFuIG9wdGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KICAg
ICBzdGF0aWMgU3RyaW5nIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCiAgICAgewpAQCAtOTUsNyArMTEwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPFN0cmluZz4gOiBEZQogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZl
cnRlcjxJRExET01TdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJpbmc+IHsKK3RlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjxJRExET01TdHJpbmc+IDogQmFzZUNvbnZlcnRlcjxTdHJpbmcs
IENvbnZlcnRlcjxJRExET01TdHJpbmc+PiB7CiAgICAgdXNpbmcgT3B0aW9uYWxWYWx1ZSA9IFN0
cmluZzsgLy8gVXNlIG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2FzIG5v
dCBwcmVzZW50LgogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMDMsNyArMTE4LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETERPTVN0cmluZwogICAgIH0KIH07CiAKLXRlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjxJRExVU1ZTdHJpbmc+IDogRGVmYXVsdENvbnZlcnRlcjxTdHJp
bmc+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVU1ZTdHJpbmc+IDogQmFzZUNv
bnZlcnRlcjxTdHJpbmcsIENvbnZlcnRlcjxJRExET01TdHJpbmc+PiB7CiAgICAgdXNpbmcgT3B0
aW9uYWxWYWx1ZSA9IFN0cmluZzsgLy8gVXNlIG51bGwgc3RyaW5nIHRvIG1lYW4gYW4gb3B0aW9u
YWwgdmFsdWUgd2FzIG5vdCBwcmVzZW50LgogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMTEsNyAr
MTI2LDI1IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExVU1ZTdHJpbmcKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiA6IERlZmF1
bHRDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29udmVydGVyPElETEludGVyZmFjZTxUPj4gOiBCYXNlQ29udmVydGVyPFJlZjxUPiwgQ29udmVy
dGVyPElETEludGVyZmFjZTxUPj4+IHsKKyAgICB1c2luZyBXcmFwcGVyVHlwZSA9IHR5cGVuYW1l
IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUPjo6V3JhcHBlckNsYXNzOworCisgICAgc3Rh
dGljIE9wdGlvbmFsPFJlZjxUPj4gY29udmVydEZhaWxhYmxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52
bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICAgICAgYXV0byBvYmplY3QgPSBXcmFwcGVyVHlwZTo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICAg
ICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOworICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gbWFrZVJlZigqb2JqZWN0KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBD
b252ZXJ0ZXI8SlNDOjpKU1ZhbHVlPiA6IEJhc2VDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlLCBDb252
ZXJ0ZXI8SlNDOjpKU1ZhbHVlPj4gewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBKU0M6OkpT
VmFsdWU7IC8vIFVzZSBqc1VuZGVmaW5lZCgpIHRvIG1lYW4gYW4gb3B0aW9uYWwgdmFsdWUgd2Fz
IG5vdCBwcmVzZW50LgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMTksMTQgKzE1MiwxNCBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SlNDOjpKU1ZhbHVlCiAgICAgfQogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxWZWN0b3I8VD4+IDogRGVmYXVsdENv
bnZlcnRlcjxWZWN0b3I8VD4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0
ZXI8VmVjdG9yPFQ+PiA6IEJhc2VDb252ZXJ0ZXI8VmVjdG9yPFQ+LCBDb252ZXJ0ZXI8VmVjdG9y
PFQ+Pj4gewogICAgIHN0YXRpYyBWZWN0b3I8VD4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0b05hdGl2ZUFy
cmF5PFQ+KHN0YXRlLCB2YWx1ZSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPGludDhfdD4gOiBEZWZhdWx0Q29udmVydGVyPGludDhfdD4gewordGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPGludDhfdD4gOiBCYXNlQ29udmVydGVyPGludDhfdCwgQ29udmVydGVy
PGludDhfdD4+IHsKICAgICBzdGF0aWMgaW50OF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25maWd1cmF0aW9uKSB7CkBA
IC0xNDEsNyArMTc0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDhfdD4gOiBE
ZQogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IERl
ZmF1bHRDb252ZXJ0ZXI8dWludDhfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVp
bnQ4X3Q+IDogQmFzZUNvbnZlcnRlcjx1aW50OF90LCBDb252ZXJ0ZXI8dWludDhfdD4+IHsKICAg
ICBzdGF0aWMgdWludDhfdCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewpAQCAtMTU2LDcgKzE4OSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50OF90PiA6IEQKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50MTZfdD4gOiBEZWZhdWx0Q29udmVydGVy
PGludDE2X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQxNl90PiA6IEJhc2VD
b252ZXJ0ZXI8aW50MTZfdCwgQ29udmVydGVyPGludDE2X3Q+PiB7CiAgICAgc3RhdGljIGludDE2
X3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAgLTE3MSw3ICsyMDQsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJ0ZXI8aW50MTZfdD4gOiBECiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQxNl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDE2X3Q+IHsK
K3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50MTZfdD4gOiBCYXNlQ29udmVydGVyPHVp
bnQxNl90LCBDb252ZXJ0ZXI8dWludDE2X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQxNl90IGNvbnZl
cnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChjb25maWd1cmF0aW9uKSB7CkBAIC0xODYsNyArMjE5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPHVpbnQxNl90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxpbnQzMl90PiA6IERlZmF1bHRDb252ZXJ0ZXI8aW50MzJfdD4gewordGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPGludDMyX3Q+IDogQmFzZUNvbnZlcnRlcjxpbnQzMl90LCBDb252
ZXJ0ZXI8aW50MzJfdD4+IHsKICAgICBzdGF0aWMgaW50MzJfdCBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlv
bikgewpAQCAtMjAxLDcgKzIzNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxpbnQz
Ml90PiA6IEQKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMy
X3Q+IDogRGVmYXVsdENvbnZlcnRlcjx1aW50MzJfdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPHVpbnQzMl90PiA6IEJhc2VDb252ZXJ0ZXI8dWludDMyX3QsIENvbnZlcnRlcjx1aW50
MzJfdD4+IHsKICAgICBzdGF0aWMgdWludDMyX3QgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKQEAg
LTIxNiw3ICsyNDksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDMyX3Q+IDog
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGludDY0X3Q+IDogRGVm
YXVsdENvbnZlcnRlcjxpbnQ2NF90PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50
NjRfdD4gOiBCYXNlQ29udmVydGVyPGludDY0X3QsIENvbnZlcnRlcjxpbnQ2NF90Pj4gewogICAg
IHN0YXRpYyBpbnQ2NF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKQEAgLTIzNCw3ICsyNjcsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8aW50NjRfdD4gOiBECiAgICAgfQogfTsKIAotdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWlu
dDY0X3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiBCYXNlQ29u
dmVydGVyPHVpbnQ2NF90LCBDb252ZXJ0ZXI8dWludDY0X3Q+PiB7CiAgICAgc3RhdGljIHVpbnQ2
NF90IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCkBAIC0yNTIsNyArMjg1LDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4g
ewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxULCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGU+IDogQmFz
ZUNvbnZlcnRlcjxULCBDb252ZXJ0ZXI8VD4+IHsKICAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0
ZSBhbGxvdykKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKQEAgLTMw
NCw3ICszMzcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0LCBib29sIGNvbmRpdGlvbj4KIHVz
aW5nIENvbmRpdGlvbmFsRnJvbnQgPSB0eXBlbmFtZSBEZXRhaWw6OkNvbmRpdGlvbmFsRnJvbnQ8
TGlzdCwgY29uZGl0aW9uPjo6dHlwZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLXN0cnVj
dCBDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDogRGVmYXVsdENvbnZlcnRlcjx0eXBlbmFtZSBJ
RExVbmlvbjxULi4uPjo6SW1wbGVtZW50YXRpb25UeXBlPgorc3RydWN0IENvbnZlcnRlcjxJRExV
bmlvbjxULi4uPj4gOiBCYXNlQ29udmVydGVyPHR5cGVuYW1lIElETFVuaW9uPFQuLi4+OjpJbXBs
ZW1lbnRhdGlvblR5cGUsIENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4+CiB7CiAgICAgdXNpbmcg
VHlwZSA9IElETFVuaW9uPFQuLi4+OwogICAgIHVzaW5nIFR5cGVMaXN0ID0gdHlwZW5hbWUgVHlw
ZTo6VHlwZUxpc3Q7CkBAIC00MDgsOCArNDQxLDMzIEBAIHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5p
b248VC4uLj4+IDogRGVmYXUKICAgICB9CiB9OwogCi0vLyBVc2VkIGZvciBJREwgZW51bWVyYXRp
b25zLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gcGFyc2UoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0
cnVjdCBWYXJpYWRpY0NvbnZlcnRlclJlc3VsdCB7CisgICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1l
IElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZTsKKyAgICB1c2luZyBDb250YWluZXIgPSBWZWN0
b3I8SXRlbT47CisKKyAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50
SW5kZXg7CisgICAgICAgIE9wdGlvbmFsPENvbnRhaW5lcj4gYXJndW1lbnRzOworICAgIH07Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRl
clJlc3VsdDxJRExUeXBlPjo6UmVzdWx0IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQoreworICAgIHNpemVfdCBsZW5ndGgg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCisg
ICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKKworICAgIHR5cGVuYW1lIFZhcmlhZGljQ29u
dmVydGVyUmVzdWx0PElETFR5cGU+OjpDb250YWluZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVl
ID0gQ29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0RmFpbGFibGUoc3RhdGUsIHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biB7IGksIE51bGxvcHQgfTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3Zl
KCp2YWx1ZSkpOworICAgIH0KKyAgICByZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9
OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA2ODE2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNYTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtMTA4LDI0
ICsxMDcsNiBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iCiAgICAg
cmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50
Pihkb2N1bWVudCkpOwogfQogCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRl
JiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJl
cGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1
ZSBKU0RvY3VtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0
YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUg
SlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNjgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMx
ICsyNywxMiBAQAogI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTaGFkb3dSb290LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucHJlcGVu
ZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBK
U0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFn
bWVudD4mJiBpbXBsKQogewogICAgIGlmIChpbXBsLT5pc1NoYWRvd1Jvb3QoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5j
cHAJKHJldmlzaW9uIDIwNjgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRUeXBlQ3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuaCIK
LQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5o
IgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFs
dWUgSlNEb2N1bWVudFR5cGU6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFmdGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3Jh
cHBlZCgpLmFmdGVyKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQot
Ci1KU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0
b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBw
ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIkpTTm9kZU9y
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTc1LDQ5ICs3NCw0
IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICByZXR1cm4g
Y3JlYXRlTmV3RWxlbWVudFdyYXBwZXIoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsK
IH0KIAotSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5iZWZvcmUodG9Ob2RlT3JTdHJp
bmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwot
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjphZnRl
cihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdy
YXBwZWQoKS5hZnRlcih0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRE
T01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQotSlNWYWx1ZSBKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9k
ZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVu
dDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRWxlbWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05v
ZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3Ry
aW5nLmNwcAkocmV2aXNpb24gMjA2ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlT3JTdHJpbmcuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgot
Ci0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNs
dWRlICJKU05vZGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rocm93U2NvcGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1WZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZh
cmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmluZ1ZlY3RvcihFeGVjU3RhdGUm
IHN0YXRlKQotewotICAgIHVzaW5nIE5vZGVPclN0cmluZ1R5cGUgPSBJRExVbmlvbjxJRExJbnRl
cmZhY2U8Tm9kZT4sIElETERPTVN0cmluZz47Ci0gICAgdXNpbmcgQ29udmVydGVyVHlwZSA9IENv
bnZlcnRlcjxOb2RlT3JTdHJpbmdUeXBlPjsKLQotICAgIHVzaW5nIEludGVyZmFjZVR5cGVMaXN0
ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6SW50ZXJmYWNlVHlwZUxpc3Q7Ci0gICAgdXNpbmcg
SW50ZXJmYWNlVHlwZSA9IGJyaWdhbmQ6OmZyb250PEludGVyZmFjZVR5cGVMaXN0PjsKLSAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxJbnRlcmZhY2VUeXBlLCBJRExJbnRlcmZhY2U8Tm9k
ZT4+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxJbnRlcmZh
Y2VUeXBlTGlzdD46OnZhbHVlID09IDEsICIiKTsKLQotICAgIHVzaW5nIFN0cmluZ1R5cGVMaXN0
ID0gdHlwZW5hbWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZUxpc3Q7Ci0gICAgdXNpbmcgU3Ry
aW5nVHlwZSA9IHR5cGVuYW1lIENvbnZlcnRlclR5cGU6OlN0cmluZ1R5cGU7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8U3RyaW5nVHlwZSwgSURMRE9NU3RyaW5nPjo6dmFsdWUsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJyaWdhbmQ6OnNpemU8U3RyaW5nVHlwZUxpc3Q+Ojp2YWx1
ZSA9PSAxLCAiIik7Ci0KLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0g
c3RhdGUuYXJndW1lbnRDb3VudCgpOwotCi0gICAgVmVjdG9yPHR5cGVuYW1lIE5vZGVPclN0cmlu
Z1R5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpIHsKLSAgICAgICAgIGF1dG8gaXRlbSA9IENvbnZlcnRlclR5
cGU6OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICByZXN1bHQudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUoaXRlbSkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZU9yU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlT3JTdHJpbmcuaAkocmV2aXNpb24gMjA2ODE2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gKLSNkZWZpbmUgSlNO
b2RlT3JTdHJpbmdfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBFeGVjU3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsK
LQotVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4g
dG9Ob2RlT3JTdHJpbmdWZWN0b3IoSlNDOjpFeGVjU3RhdGUmKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gSlNOb2RlT3JTdHJpbmdWZWN0b3JfaApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNp
b24gMjA2ODE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIHBhY2thZ2UgQ29kZUdlbmVy
YXRvcjsKIHVzZSBzdHJpY3Q7CiAKIHVzZSBGaWxlOjpGaW5kOwordXNlIENhcnAgcXc8bG9uZ21l
c3M+OwordXNlIERhdGE6OkR1bXBlcjsKIAogbXkgJHVzZURvY3VtZW50ID0gIiI7CiBteSAkdXNl
R2VuZXJhdG9yID0gIiI7CkBAIC0xMzksNiArMTQxLDE2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRh
YmxlUHJvcGVydGllc05lZWRpbmcKIG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRlcmZhY2Vz
ID0ge307CiAKK3N1YiBhc3NlcnQKK3sKKyAgICBteSAkbWVzc2FnZSA9IHNoaWZ0OworICAgIAor
ICAgIG15ICRtZXNzID0gbG9uZ21lc3MoKTsKKyAgICBwcmludCBEdW1wZXIoJG1lc3MpOworCisg
ICAgZGllICRtZXNzYWdlOworfQorCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKIHsK
QEAgLTMxMCw2ICszMjIsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwogCiAgICAgcmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdP
YmplY3QnOworICAgIHJldHVybiB1bmRlZiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAnVU5JT04nOwog
CiAgICAgaWYgKGV4aXN0cyAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfSkgewog
ICAgICAgICByZXR1cm4gJGNhY2hlZEludGVyZmFjZXMtPnskaW50ZXJmYWNlTmFtZX07CkBAIC0z
MTcsNyArMzMwLDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAgICAjIFN0ZXAgIzE6IEZpbmQg
dGhlIElETCBmaWxlIGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRmaWxlbmFt
ZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCi0gICAgICAg
IG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZh
Y2VOYW1lXCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFtZSAuICJc
IiFcbiIpOworICAgICAgICBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBp
bnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiLCByZWFjaGFibGUgZnJvbSBcIiIgLiAkb3V0ZXJJ
bnRlcmZhY2UtPm5hbWUgLiAiXCIhXG4iKTsKIAogICAgIHByaW50ICIgIHwgIHw+ICBQYXJzaW5n
IHBhcmVudCBJREwgXCIkZmlsZW5hbWVcIiBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVc
IlxuIiBpZiAkdmVyYm9zZTsKIApAQCAtNjIyLDYgKzYzNSwxMDggQEAgc3ViIEdldFNlcXVlbmNl
T3JGcm96ZW5BcnJheUlubmVyVHlwZQogICAgIHJldHVybiAiIjsKIH0KIAorIyBodHRwOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1mbGF0dGVuZWQtdW5pb24tbWVtYmVyLXR5cGVzCitz
dWIgR2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9u
VHlwZSkgPSBAXzsKKworICAgIG15IEBmbGF0dGVuZWRNZW1iZXJUeXBlcyA9ICgpOworCisgICAg
Zm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoQHskaWRsVW5pb25UeXBlLT5zdWJ0eXBlc30pIHsKKyAg
ICAgICAgaWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICBwdXNoKEBmbGF0
dGVuZWRNZW1iZXJUeXBlcywgJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVyVHlwZXMoJG1lbWJl
clR5cGUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGZsYXR0ZW5lZE1l
bWJlclR5cGVzLCAkbWVtYmVyVHlwZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
QGZsYXR0ZW5lZE1lbWJlclR5cGVzOworfQorCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dl
YmlkbC8jZGZuLW51bWJlci1vZi1udWxsYWJsZS1tZW1iZXItdHlwZXMKK3N1YiBHZXROdW1iZXJP
Zk51bGxhYmxlTWVtYmVyVHlwZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJGlkbFVuaW9uVHlwZSkg
PSBAXzsKKworICAgIG15ICRjb3VudCA9IDA7CisKKyAgICBmb3JlYWNoIG15ICRtZW1iZXJUeXBl
IChAeyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1lbWJlclR5cGUt
PmlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICRjb3VudCsrOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCRtZW1iZXJUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICAkY291bnQgKz0gJG9i
amVjdC0+R2V0TnVtYmVyT2ZOdWxsYWJsZU1lbWJlclR5cGVzKCRtZW1iZXJUeXBlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiAkY291bnQ7Cit9CisKK3N1YiBHZXRJRExVbmlvbk1l
bWJlclR5cGVzCit7CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpZGxVbmlvblR5cGUp
ID0gQF87CisKKyAgICBteSAkbnVtYmVyT2ZOdWxsYWJsZU1lbWJlcnMgPSAkb2JqZWN0LT5HZXRO
dW1iZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMoJGlkbFVuaW9uVHlwZSk7CisgICAgaWYgKCRudW1i
ZXJPZk51bGxhYmxlTWVtYmVycyA+IDEpIHsKKyAgICAgICAgYXNzZXJ0KCJVbmlvbiB0eXBlcyBt
dXN0IG9ubHkgaGF2ZSAwIG9yIDEgbnVsbGFibGUgdHlwZXMuIik7CisgICAgfQorCisgICAgbXkg
QGlkbFVuaW9uTWVtYmVyVHlwZXMgPSAoKTsKKworICAgIGlmICgkbnVtYmVyT2ZOdWxsYWJsZU1l
bWJlcnMgPT0gMSkgeworICAgICAgICBwdXNoKEBpZGxVbmlvbk1lbWJlclR5cGVzLCAiSURMTnVs
bCIpOworICAgIH0KKworICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKCRvYmplY3QtPkdldEZs
YXR0ZW5lZE1lbWJlclR5cGVzKCRpZGxVbmlvblR5cGUpKSB7CisgICAgICAgIHB1c2goQGlkbFVu
aW9uTWVtYmVyVHlwZXMsICRvYmplY3QtPkdldEJhc2VJRExUeXBlKCRpbnRlcmZhY2UsICRtZW1i
ZXJUeXBlKSk7CisgICAgfQorCisgICAgcmV0dXJuIEBpZGxVbmlvbk1lbWJlclR5cGVzOworfQor
CitzdWIgR2V0QmFzZUlETFR5cGUKK3sKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlk
bFR5cGUpID0gQF87CisKKyAgICBteSAlSURMVHlwZXMgPSAoCisgICAgICAgICJhbnkiID0+ICJJ
RExBbnkiLAorICAgICAgICAiYm9vbGVhbiIgPT4gIklETEJvb2xlYW4iLAorICAgICAgICAiYnl0
ZSIgPT4gIklETEJ5dGUiLAorICAgICAgICAib2N0ZXQiID0+ICJJRExPY3RldCIsCisgICAgICAg
ICJzaG9ydCIgPT4gIklETFNob3J0IiwKKyAgICAgICAgInVuc2lnbmVkIHNob3J0IiA9PiAiSURM
VW5zaWduZWRTaG9ydCIsCisgICAgICAgICJsb25nIiA9PiAiSURMTG9uZyIsCisgICAgICAgICJ1
bnNpZ25lZCBsb25nIiA9PiAiSURMVW5zaWduZWRMb25nIiwKKyAgICAgICAgImxvbmcgbG9uZyIg
PT4gIklETExvbmdMb25nIiwKKyAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyIgPT4gIklETFVu
c2lnbmVkTG9uZ0xvbmciLAorICAgICAgICAiZmxvYXQiID0+ICJJRExGbG9hdCIsCisgICAgICAg
ICJ1bnJlc3RyaWN0ZWQgZmxvYXQiID0+ICJJRExVbnJlc3RyaWN0ZWRGbG9hdCIsCisgICAgICAg
ICJkb3VibGUiID0+ICJJRExEb3VibGUiLAorICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIg
PT4gIklETFVucmVzdHJpY3RlZERvdWJsZSIsCisgICAgICAgICJET01TdHJpbmciID0+ICJJRExE
T01TdHJpbmciLAorICAgICAgICAiQnl0ZVN0cmluZyIgPT4gIklETEJ5dGVTdHJpbmciLAorICAg
ICAgICAiVVNWU3RyaW5nIiA9PiAiSURMVVNWU3RyaW5nIiwKKyAgICApOworCisgICAgcmV0dXJu
ICRJRExUeXBlc3skaWRsVHlwZS0+bmFtZX0gaWYgZXhpc3RzICRJRExUeXBlc3skaWRsVHlwZS0+
bmFtZX07CisgICAgcmV0dXJuICJJRExFbnVtZXJhdGlvbjwiIC4gJG9iamVjdC0+R2V0RW51bWVy
YXRpb25DbGFzc05hbWUoJGludGVyZmFjZSwgJGlkbFR5cGUtPm5hbWUpIC4gIj4iIGlmICRvYmpl
Y3QtPklzRW51bVR5cGUoJGlkbFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURMRGljdGlvbmFy
eTwiIC4gJG9iamVjdC0+R2V0RGljdGlvbmFyeUNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkaWRsVHlw
ZS0+bmFtZSkgLiAiPiIgaWYgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkaWRsVHlwZS0+bmFt
ZSk7CisgICAgcmV0dXJuICJJRExTZXF1ZW5jZTwiIC4gJG9iamVjdC0+R2V0SURMVHlwZSgkaW50
ZXJmYWNlLCBAeyRpZGxUeXBlLT5zdWJ0eXBlc31bMF0pIC4gIj4iIGlmICRvYmplY3QtPklzU2Vx
dWVuY2VUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1cm4gIklETEZyb3plbkFycmF5PCIg
LiAkb2JqZWN0LT5HZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JGlkbFR5cGUtPnN1YnR5cGVzfVsw
XSkgLiAiPiIgaWYgJG9iamVjdC0+SXNGcm96ZW5BcnJheVR5cGUoJGlkbFR5cGUtPm5hbWUpOwor
ICAgIHJldHVybiAiSURMVW5pb248IiAuIGpvaW4oIiwgIiwgJG9iamVjdC0+R2V0SURMVW5pb25N
ZW1iZXJUeXBlcygkaW50ZXJmYWNlLCAkaWRsVHlwZSkpIC4gIj4iIGlmICRpZGxUeXBlLT5pc1Vu
aW9uOworICAgIHJldHVybiAiSURMSW50ZXJmYWNlPCIgLiAkaWRsVHlwZS0+bmFtZSAuICI+IjsK
K30KKworc3ViIEdldElETFR5cGUKK3sKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlk
bFR5cGUpID0gQF87CisKKyAgICBteSAkYmFzZUlETFR5cGUgPSAkb2JqZWN0LT5HZXRCYXNlSURM
VHlwZSgkaW50ZXJmYWNlLCAkaWRsVHlwZSk7CisgICAgcmV0dXJuICJJRExOdWxsYWJsZTwiIC4g
JGJhc2VJRExUeXBlIC4gIj4iIGlmICRpZGxUeXBlLT5pc051bGxhYmxlOworICAgIHJldHVybiAk
YmFzZUlETFR5cGU7Cit9CisKICMgVGhlc2UgbWF0Y2ggV0tfbGNmaXJzdCBhbmQgV0tfdWNmaXJz
dCBkZWZpbmVkIGluIGJ1aWx0aW5zX2dlbmVyYXRvci5weS4KICMgVXBwZXJjYXNlIHRoZSBmaXJz
dCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4KICMgRS5n
LiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNvZGluZywgYnV0IHhtbGxsYW5nIGJlY29tZXMg
WG1sbGFuZy4KQEAgLTgwMSw2ICs5MTYsNyBAQCBzdWIgSXNXcmFwcGVyVHlwZQogCiAgICAgcmV0
dXJuIDAgaWYgISRvYmplY3QtPklzUmVmUHRyVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYg
JG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUg
ZXEgIlVOSU9OIjsKICAgICByZXR1cm4gMCBpZiAkd2ViQ29yZVR5cGVIYXNoeyR0eXBlfTsKIAog
ICAgIHJldHVybiAxOwpAQCAtODE0LDcgKzkzMCw3IEBAIHN1YiBnZXRJbnRlcmZhY2VFeHRlbmRl
ZEF0dHJpYnV0ZXNGcm9tTmEKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKIAotICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZv
ckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkgb3IgZGllKCJDb3VsZCBOT1QgZmluZCBJREwgZmls
ZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiFcbiIpOworICAgIG15ICRpZGxGaWxl
ID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkgb3IgYXNzZXJ0
KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVc
IiFcbiIpOwogCiAgICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAgICBteSBA
bGluZXMgPSA8RklMRT47CkBAIC04NDYsNyArOTYyLDcgQEAgc3ViIENvbXB1dGVJc0NhbGxiYWNr
SW50ZXJmYWNlCiAKICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzV3JhcHBlclR5cGUoJHR5
cGUpOwogCi0gIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZSkgb3IgZGllKCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVc
IiFcbiIpOworICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJHR5
cGUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0
eXBlXCIhXG4iKTsKIAogICBvcGVuIEZJTEUsICI8IiwgJGlkbEZpbGUgb3IgZGllOwogICBteSBA
bGluZXMgPSA8RklMRT47CkBAIC04ODIsNyArOTk4LDcgQEAgc3ViIENvbXB1dGVJc0Z1bmN0aW9u
T25seUNhbGxiYWNrSW50ZXJmYQogCiAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxi
YWNrSW50ZXJmYWNlKCR0eXBlKTsKIAotICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVG
b3JJbnRlcmZhY2UoJHR5cGUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGlu
dGVyZmFjZSBcIiR0eXBlXCIhXG4iKTsKKyAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxl
Rm9ySW50ZXJmYWNlKCR0eXBlKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZv
ciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CiAKICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxl
IG9yIGRpZTsKICAgbXkgQGxpbmVzID0gPEZJTEU+OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNjgx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNiArMjM5LDI4IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5
cGUKICAgICB9CiB9CiAKK3N1YiBBZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUKK3sKKyAgICBt
eSAoJGlkbFR5cGUsICRjb25kaXRpb25hbCkgPSBAXzsKKworICAgIHJldHVybiBpZiAkY29kZUdl
bmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJGlkbFR5cGUtPm5hbWUpOworCisgICAgaWYgKCRp
ZGxUeXBlLT5pc1VuaW9uKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1Zhcmlh
bnQuaD4iLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUg
KEB7JGlkbFR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNG
b3JJRExUeXBlKCRtZW1iZXJUeXBlLCAkY29uZGl0aW9uYWwpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlw
ZSgkaWRsVHlwZS0+bmFtZSkpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRp
ZGxUeXBlLT5uYW1lIC4gIi5oIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHN1YiBB
ZGRUb0ltcGxJbmNsdWRlcwogewogICAgIG15ICRoZWFkZXIgPSBzaGlmdDsKQEAgLTM5NjUsNiAr
Mzk4Nyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIG15ICRhcmd1bWVudElu
ZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkgewogICAgICAgICBteSAkdHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CisgICAgICAgIG15
ICRpZGxUeXBlID0gJHBhcmFtZXRlci0+aWRsVHlwZTsKIAogICAgICAgICBkaWUgIk9wdGlvbmFs
IHBhcmFtZXRlcnMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0
ZWQiIGlmICRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgISRwYXJhbWV0ZXItPmlzTnVsbGFibGUg
JiYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwogICAgICAgICBkaWUgIk9w
dGlvbmFsIHBhcmFtZXRlcnMgcHJlY2VkaW5nIHZhcmlhZGljIHBhcmFtZXRlcnMgYXJlIG5vdCBz
dXBwb3J0ZWQiIGlmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICBAeyRmdW5jdGlvbi0+cGFy
YW1ldGVyc31bJG51bVBhcmFtZXRlcnMgLSAxXS0+aXNWYXJpYWRpYyk7CkBAIC00MDI2LDE3ICs0
MDQ5LDEzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBh
cmFtZXRlci0+aXNWYXJpYWRpYykgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
JHt0eXBlfS5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nv
bmRpdGlvbmFsfSkgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlw
ZSkgb3IgISRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgICAg
IG15ICgkd3JhcHBlclR5cGUsICR3cmFwcGVkVHlwZSkgPSBHZXRWYXJpYWRpY1R5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
JG5hbWUgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjwkd3JhcHBlclR5cGUsICR3cmFwcGVk
VHlwZT4+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7Ci0KLSAgICAgICAgICAgIGlmIChJ
c05hdGl2ZVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISRuYW1lLmFyZ3VtZW50cylcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkbmFtZS5hcmd1bWVudEluZGV4LCBc
IiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUs
IFwiJHR5cGVcIik7XG4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTRE9NQ29udmVydC5oIn0gPSAxOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNG
b3JJRExUeXBlKCRpZGxUeXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgCisgICAgICAgICAgICBteSAkbWV0YVR5cGUg
PSAkY29kZUdlbmVyYXRvci0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkaWRsVHlwZSk7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IGNvbnZlcnRWYXJp
YWRpY0FyZ3VtZW50czwkbWV0YVR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpOworCiAgICAgICAgICAgICAkdmFsdWUg
PSAiV1RGTW92ZSgkbmFtZS5hcmd1bWVudHMudmFsdWUoKSkiOwogCiAgICAgICAgIH0gZWxzaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIwNjgxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCwxMyBAQCBzdHJ1Y3QoIGlkbERvY3VtZW50ID0+IHsKICAgICBmaWxl
TmFtZSA9PiAnJCcsCiB9KTsKIAorc3RydWN0KCBkb21UeXBlID0+IHsKKyAgICBuYW1lID0+ICAg
ICAgICAgJyQnLCAjIFR5cGUgaWRlbnRpZmllcgorICAgIGlzTnVsbGFibGUgPT4gICAnJCcsICMg
SXMgdGhlIHR5cGUgTnVsbGFibGUgKFQ/KQorICAgIGlzVW5pb24gPT4gICAgICAnJCcsICMgSXMg
dGhlIHR5cGUgYSB1bmlvbiAoVCBvciBVKQorICAgIHN1YnR5cGVzID0+ICAgICAnQCcsICMgQXJy
YXkgb2Ygc3VidHlwZXMsIG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1ZW5jZQorfSk7CisK
ICMgVXNlZCB0byByZXByZXNlbnQgJ2ludGVyZmFjZScgYmxvY2tzCiBzdHJ1Y3QoIGRvbUludGVy
ZmFjZSA9PiB7CiAgICAgbmFtZSA9PiAnJCcsICAgICAgIyBDbGFzcyBpZGVudGlmaWVyCkBAIC03
OSwxOCArODYsMTIgQEAgc3RydWN0KCBkb21BdHRyaWJ1dGUgPT4gewogICAgIHNpZ25hdHVyZSA9
PiAnJCcsICAgICAgICAgIyBBdHRyaWJ1dGUgc2lnbmF0dXJlCiB9KTsKIAotc3RydWN0KCBkb21U
eXBlID0+IHsKLSAgICBuYW1lID0+ICAgICAgICAgJyQnLCAjIFR5cGUgaWRlbnRpZmllcgotICAg
IGlzTnVsbGFibGUgPT4gICAnJCcsICMgSXMgdGhlIHR5cGUgTnVsbGFibGUgKFQ/KQotICAgIGlz
VW5pb24gPT4gICAgICAnJCcsICMgSXMgdGhlIHR5cGUgYSB1bmlvbiAoVCBvciBVKQotICAgIHN1
YnR5cGVzID0+ICAgICAnQCcsICMgQXJyYXkgb2Ygc3VidHlwZXMsIG9ubHkgdmFsaWQgaWYgaXNV
bmlvbiBvciBzZXF1ZW5jZQotfSk7Ci0KICMgVXNlZCB0byByZXByZXNlbnQgYSBtYXAgb2YgJ3Zh
cmlhYmxlIG5hbWUnIDwtPiAndmFyaWFibGUgdHlwZScKIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+
IHsKICAgICBkaXJlY3Rpb24gPT4gJyQnLCAgICMgVmFyaWFibGUgZGlyZWN0aW9uIChpbiBvciBv
dXQpCiAgICAgbmFtZSA9PiAnJCcsICAgICAgICAjIFZhcmlhYmxlIG5hbWUKLSAgICB0eXBlID0+
ICckJyAgICAgICwgICMgVmFyaWFibGUgdHlwZQorICAgIHR5cGUgPT4gJyQnLCAgICAgICAgIyBW
YXJpYWJsZSB0eXBlIG5hbWUgKERFUFJFQ0FURUQgLSBwbGVhc2UgdXNlIGlkbFR5cGUpCisgICAg
aWRsVHlwZSA9PiAnJCcsICAgICAjIFZhcmlhYmxlIHR5cGUKICAgICBzcGVjaWFscyA9PiAnQCcs
ICAgICMgU3BlY2lhbHMKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVk
IGF0dHJpYnV0ZXMKICAgICBpc051bGxhYmxlID0+ICckJywgICMgSXMgdmFyaWFibGUgdHlwZSBO
dWxsYWJsZSAoVD8pCkBAIC03MDcsNiArNzA4LDcgQEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJl
cgogICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAg
ICRtZW1iZXItPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkbWVtYmVyLT50eXBlKCR0eXBlLT5u
YW1lKTsKICAgICAgICAgJG1lbWJlci0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAK
QEAgLTEyNTQsNiArMTI1Niw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgJG5l
d0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAgICAgICAgIAogICAg
ICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2Rl
LT5zaWduYXR1cmUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJl
LT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKIApAQCAtMTU0Niw2ICsxNTQ5LDcgQEAg
c3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJvcHRpb25hbCIsIF9fTElORV9fKTsKIAog
ICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZShpZGVu
dGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHR5cGUtPm5hbWUpKTsKICAgICAgICAgJHBhcmFt
RGF0YU5vZGUtPmlzTnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogICAgICAgICAkcGFyYW1E
YXRhTm9kZS0+aXNPcHRpb25hbCgxKTsKQEAgLTE1NTUsNiArMTU1OSw3IEBAIHN1YiBwYXJzZU9w
dGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgfQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09
IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRFeGNlcHRpb25GaWVs
ZF8xLykgewogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAg
JHBhcmFtRGF0YU5vZGUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCR0
eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwoMCk7
CkBAIC0xNjE3LDYgKzE2MjIsNyBAQCBzdWIgcGFyc2VFeGNlcHRpb25GaWVsZAogICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKIAogICAgICAgICBt
eSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWdu
YXR1cmUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
dHlwZSgkdHlwZS0+bmFtZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051
bGxhYmxlKCR0eXBlLT5pc051bGxhYmxlKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDY4
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsg
ImhpZ2giLCAia2luZGEtbG93CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChET01TdHJp
bmcgaGVhZCwgRE9NU3RyaW5nLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRo
b2QodW5yZXN0cmljdGVkIGRvdWJsZSBoZWFkLCB1bnJlc3RyaWN0ZWQgZG91YmxlLi4uIHRhaWwp
OwogICAgIHZvaWQgdmFyaWFkaWNOb2RlTWV0aG9kKE5vZGUgaGVhZCwgTm9kZS4uLiB0YWlsKTsK
KyAgICB2b2lkIHZhcmlhZGljVW5pb25NZXRob2QoRE9NU3RyaW5nIGhlYWQsIChOb2RlIG9yIERP
TVN0cmluZykuLi4gdGFpbCk7CiAKICAgICAvLyBOdWxsYWJsZSBhdHRyaWJ1dGVzLgogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJp
YnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyMDY4MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4K
ICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKICNpbmNsdWRlICJKU1Rlc3RPYmplY3RBLmgiCkBAIC05ODMsNiArOTg0LDcgQEAgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljVW5pb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNTg5LDYg
KzE1OTEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAg
eyAidmFyaWFkaWNTdHJpbmdNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAi
dmFyaWFkaWNEb3VibGVNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFy
aWFkaWNOb2RlTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJ2YXJpYWRpY1Vu
aW9uTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
VW5pb25NZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYW55IiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAg
ICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAi
dGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCks
IChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTY2MzEsOSArNjYzNCw4IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1
dG8gYmxvYkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigq
c3RhdGUsIDApOwotICAgIGlmICghYmxvYkFyZ3MuYXJndW1lbnRzKQotICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIGJsb2JBcmdzLmFyZ3Vt
ZW50SW5kZXgsICJibG9iQXJncyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAi
QmxvYiIpOworICAgIGF1dG8gYmxvYkFyZ3MgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURM
SW50ZXJmYWNlPEJsb2I+Pigqc3RhdGUsIDApOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdU
Rk1vdmUoYmxvYkFyZ3MuYXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNzE0OSw3ICs3MTUxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0
cmluZyhzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxK
U0M6OkpTVmFsdWUsIFN0cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgYXV0byB0YWlsID0gY29udmVy
dFZhcmlhZGljQXJndW1lbnRzPElETERPTVN0cmluZz4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFy
aWFkaWNTdHJpbmdNZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52
YWx1ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTcxNzAsNyArNzE3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGhlYWQgPSBjb252ZXJ0
PGRvdWJsZT4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFNob3VsZEFsbG93
Tm9uRmluaXRlOjpZZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxw
ZXI8SlNDOjpKU1ZhbHVlLCBkb3VibGU+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNv
bnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpzdGF0ZSwgMSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFp
bC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC03MTkyLDEzICs3MTk0LDMzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKICAgICBhdXRvIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwg
ImhlYWQiLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAg
IGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTTm9kZSwgTm9kZT4+KCpz
dGF0ZSwgMSk7Ci0gICAgaWYgKCF0YWlsLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCB0YWlsLmFyZ3VtZW50SW5kZXgs
ICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAg
ICBhdXRvIHRhaWwgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPE5vZGU+
Pigqc3RhdGUsIDEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUo
dGFpbC5hcmd1bWVudHMudmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoc3RhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElE
TFVuaW9uPElETEludGVyZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5nPj4oKnN0YXRlLCAxKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IGltcGwudmFyaWFkaWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJn
dW1lbnRzLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CShyZXZpc2lvbiAyMDY4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0xMzcsNyArMTM4
LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwotICAgIGF1dG8gbG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxW
YXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIGludDMyX3Q+Pigqc3RhdGUsIDApOworICAgIGF1
dG8gbG9uZ0FyZ3MgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMTG9uZz4oKnN0YXRlLCAw
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShX
VEZNb3ZlKGxvbmdBcmdzKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlD
cmVhdGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3Qp
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjA2ODE2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDgg
KzIyLDggQEAKIFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9k
ZSB7Ci0gICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBDdXN0b21dIHZv
aWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxl
LCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGFmdGVyKChOb2RlIG9yIERP
TVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbiwgQ3VzdG9tXSB2b2lkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiZWZv
cmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGFibGUsIE1heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9k
ZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZXBs
YWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKICAgICBbVW5zY29wYWJsZSwg
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9QYXJlbnROb2RlLmlkbAkocmV2aXNpb24gMjA2ODE2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1BhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAotICAgIFtVbnNj
b3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVn
YWN5RXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4g
bm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBw
cmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4u
LiBub2Rlcyk7CiAKICAgICAvLyBbVW5zY29wYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5n
IHJlbGF0aXZlU2VsZWN0b3JzKTsKICAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BhYmxlXSBFbGVt
ZW50cyBxdWVyeUFsbChET01TdHJpbmcgcmVsYXRpdmVTZWxlY3RvcnMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290852</attachid>
            <date>2016-10-06 12:51:20 -0700</date>
            <delta_ts>2016-10-08 12:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162919-20161006124806.patch</filename>
            <type>text/plain</type>
            <size>67409</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0xMC0wNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEF1dG9nZW5lcmF0ZSBwYXNzaW5nIHVu
aW9uIHR5cGVzIGFzIHBhcnQgb2YgYSBmdW5jdGlvbnMgdmFyaWFkaWMgYXJndW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICBSZW1vdmUg
ZGVsZXRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaDoK
KyAgICAgICAgU3dpdGNoIHRvIHVzZSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyIGFzIGl0J3MgaW1w
bGVtZW50YXRpb24gdHlwZS4gV2UgbWF5IG5lZWQgbW9yZQorICAgICAgICBncmFudWxhcml0eSBo
ZXJlIGluIHRoZSBmdXR1cmUsIGJ1dCB0aGlzIHdpbGwgd29yayBmb3Igbm93LgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZhcmlhZGljSGVscGVy
QmFzZTo6Y29udmVydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0FyZ3VtZW50cyk6
IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIHRvIEpTRE9NQ29udmVydC5oIGFuZCByZW5hbWVkIHRv
IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyBhbmQgbWFrZQorICAgICAgICBpdCB3b3JrIGluIHRl
cm1zIG9mIElETFR5cGVzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+Pjo6Y29udmVydCk6
CisgICAgICAgIChXZWJDb3JlOjpWYXJpYWRpY0NvbnZlcnRlckJhc2U6OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmFyaWFkaWNDb252ZXJ0ZXJCYXNlPElETEludGVyZmFjZTxUPj46OmNv
bnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFZhcmlhZGljQXJndW1lbnRzKToKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjphcHBlbmQpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJh
Z21lbnQ6OnByZXBlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudEZy
YWdtZW50OjphcHBlbmQpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmJlZm9yZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OmFmdGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6cmVwbGFjZVdpdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SlNFbGVtZW50OjpwcmVwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkpTRWxlbWVudDo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG5vdyBnZW5lcmF0
ZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtOgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgQWRkIGFzc2VydCB0byBoZWxwIGRlYnVn
Z2luZy4KKworICAgICAgICAoUGFyc2VJbnRlcmZhY2UpOgorICAgICAgICBEb24ndCB0cmVhdCB1
bmlvbiB0eXBlcyBhcyBpbnRlcmZhY2VzLgorCisgICAgICAgIChHZXRGbGF0dGVuZWRNZW1iZXJU
eXBlcyk6CisgICAgICAgIChHZXROdW1iZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMpOgorICAgICAg
ICAoR2V0SURMVW5pb25NZW1iZXJUeXBlcyk6CisgICAgICAgIEltcGxlbWVudCBXZWJJREwgYWxn
b3JpdGhtcyBmb3IgZ2V0dGluZyB0aGUgZmxhdHRlbmVkIG1lbWJlciBsaXN0IG9mIHVuaW9uLCBh
bmQgdXNlIGl0CisgICAgICAgIHRvIGNvbnN0cnVjdCB0aGUgYysrIElETFR5cGUuCisKKyAgICAg
ICAgKEdldEJhc2VJRExUeXBlKToKKyAgICAgICAgKEdldElETFR5cGUpOgorICAgICAgICBBZGQg
aGVscGVyIHRvIGNvbnZlcnQgYW4gcGFyc2VkIGlkbFR5cGUgdG8gYSBjKysgSURMVHlwZS4KKwor
ICAgICAgICAoSXNXcmFwcGVyVHlwZSk6CisgICAgICAgIERvbid0IHRyZWF0IHVuaW9uIHR5cGVz
IGFzIHdyYXBwZXJzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSk6Cisg
ICAgICAgIEFkZCBoZWxwZXIgZm9yIGFkZGluZyAjaW5jbHVkZXMgYmFzZWQgb24gYSBwYXJzZWQg
aWRsVHlwZS4gSXQgcmVjdXJzaXZlbHkgaGFuZGxlcyB1bmlvbiB0eXBlcy4KKworICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICBVc2UgdGhlIG5ldyBjb252ZXJ0VmFy
aWFkaWNBcmd1bWVudHMgZnVuY3Rpb24gdG8gaGFuZGxlIGFsbCB2YXJpYWRpYyBhcmd1bWVudHMs
IGluY2x1ZGluZworICAgICAgICB1bmlvbiB0eXBlcy4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAocGFyc2VEaWN0aW9uYXJ5TWVtYmVyKToKKyAg
ICAgICAgKHBhcnNlQXR0cmlidXRlUmVzdCk6CisgICAgICAgIChwYXJzZU9wdGlvbmFsT3JSZXF1
aXJlZEFyZ3VtZW50KToKKyAgICAgICAgKHBhcnNlRXhjZXB0aW9uRmllbGQpOgorICAgICAgICBB
ZGQgYW4gaWRsVHlwZSB0byBkb21TaWduYXR1cmUgYW5kIHBvcHVsYXRlIGl0LgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNEb3VibGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQgYW5k
IHVwZGF0ZSB0ZXN0cy4KKworICAgICAgICAqIGRvbS9DaGlsZE5vZGUuaWRsOgorICAgICAgICAq
IGRvbS9QYXJlbnROb2RlLmlkbDoKKyAgICAgICAgUmVtb3ZlIEN1c3RvbSBleHRlbmRlZCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXIg
aW5zdGVhZCBvZiBSZWY8PiBmb3IgcGFzc2VkIGluIHBhcmFtZXRlcnMuCisKIDIwMTYtMTAtMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA2ODc0KQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNjYs
NyArMTA2Niw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NTU1Zh
bHVlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAotICAgIGJpbmRp
bmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NsaWVu
dFJlY3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcApAQCAt
MTEwMyw3ICsxMTAyLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9q
cy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckV2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAtMTE1Niw3ICsxMTU0LDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0
b3JDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1BlcmZvcm1h
bmNlRW50cnlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZVRpbWluZ0N1
c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjczMSw4ICsy
NzMxLDYgQEAKIAkJN0MxRTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
RTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9Owog
CQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdD
N0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJC
REQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAz
OEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07Ci0JCTdDMzNGMzVBMUI0QTA0
NDgwMDUwMkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8q
IEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDMzNGMzVFMUI0QTA0Q0UwMDUw
MkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1
bWVudFR5cGVDdXN0b20uY3BwICovOyB9OwogCQk3QzMzRjM2MjFCNEEwNTA0MDA1MDJDQUYgLyog
SlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50
RnJhZ21lbnRDdXN0b20uY3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyog
Q2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3
NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTI3NjYsOCAr
Mjc2NCw2IEBACiAJCTdDNzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW0gKi87IH07CiAJCTdDNzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5o
ICovOyB9OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRD
QkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07Ci0JCTdDOTFBMzhGMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JT
dHJpbmcuY3BwICovOyB9OwotCQk3QzkxQTM5MDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JT
dHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
OTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oICovOyB9OwogCQk3Qzkz
RjM0OTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ3MUFBNkJB
NUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk3Qzkz
RjM0QTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0ODFBQTZCQTVF
MDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQxQUE2QkYwNzAwQTk4QkFC
IC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAqLzsgfTsKQEAgLTk4MzMsOCArOTgyOSw2IEBACiAJCTdD
MUU5NzI2MUE5Rjk4MzQwMDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RP
TUdsb2JhbE9iamVjdFRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8q
IEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0
MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xp
cGJvYXJkQWNjZXNzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3
OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4ODAsOCArOTg3NCw2IEBACiAJCTdDNzk0MUUyMUM1
NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThF
IC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JT
dHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzkxQTM4RTFCNDk4QUJF
MDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNOb2RlT3JTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5
M0YzNDcxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBB
OThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTA3Nyw4ICsyMTA2OSw2IEBACiAJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5oICovLAogCQkJCUM2RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011
dGF0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJCUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBK
U011dGF0aW9uQ2FsbGJhY2suaCAqLywKLQkJCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyog
SlNOb2RlT3JTdHJpbmcuY3BwICovLAotCQkJCTdDOTFBMzhFMUI0OThBQkUwMDNGOUVGQSAvKiBK
U05vZGVPclN0cmluZy5oICovLAogCQkJCUNCMzhGRDU1MUNEMjFENUIwMDU5MkEzRiAvKiBKU1Bl
cmZvcm1hbmNlRW50cnlDdXN0b20uY3BwICovLAogCQkJCTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2
OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcwRDUwMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKQEAgLTIxMTMwLDcg
KzIxMTIwLDYgQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxv
YkN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKLQkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1
MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZC
M0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4
NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJ
CTdDRUYyNjE4MUQ2QTkyRTMwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCkBAIC0y
MTE1Miw3ICsyMTE0MSw2IEBACiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9j
dW1lbnRDdXN0b20uY3BwICovLAogCQkJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0Rv
Y3VtZW50Q3VzdG9tLmggKi8sCiAJCQkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8sCi0JCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FG
IC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2
NDQyRTkgLyogSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QTBE
NzQ2NUU3MDA2NDQyRTkgLyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJQTlD
NkU2NEIwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCAqLywKQEAgLTI1
MjI5LDcgKzI1MjE3LDYgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAv
KiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgw
ODMgLyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M5MUEzOTAxQjQ5
OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzUw
M0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzNTAzQ0E2MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFFQzFFMjkxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjExLDcgKzI4NTk4
LDYgQEAKIAkJCQlGREExNUVBMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlND
aGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUYzMDlEMUND
NjAwMDBCRTMyNSAvKiBKU0NoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0Mz
M0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVu
dFJlY3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0Qy
RDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY4Myw3ICsy
ODY2OSw2IEBACiAJCQkJN0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA1RjFDMDJCNDQ0MDA2QTFB
MDAgLyogSlNEb2N1bWVudFRpbWVsaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUY1
MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk3QzMzRjM1RTFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGlj
YXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I3MEQ2MzA5RUIwQzdDMDA5RDg0
NjggLyogSlNET01CaW5kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEN0MwMEQyOUE0
NjMwMEI5OTE4RiAvKiBKU0RPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODk0Niw3ICsyODkzMSw2IEBACiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMkMyMEMxN0I2OUUw
MDVDOTBBMiAvKiBKU05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTdDOTFBMzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMzUwM0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxRUMxRTI4MTRGRjYwRUUwMEM5
NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHJl
dmlzaW9uIDIwNjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOSArODQsOSBAQCBzdHJ1Y3QgSURMVVNWU3RyaW5n
IDogSURMU3RyaW5nIHsgfTsKIAogc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlw
ZSB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExJbnRlcmZhY2UgOiBJRExU
eXBlPFJlZjxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEludGVyZmFjZSA6
IElETFR5cGU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUPj4gewogICAgIHVzaW5nIFJhd1R5cGUg
PSBUOwotICAgIHVzaW5nIE51bGxhYmxlVHlwZSA9IFJlZlB0cjxUPjsKKyAgICB1c2luZyBOdWxs
YWJsZVR5cGUgPSBUKjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExEaWN0
aW9uYXJ5IDogSURMVHlwZTxUPiB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIwNjg3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJKU0NTU1ZhbHVlQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5jcHAiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNDbGllbnRSZWN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NvbW1h
bmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDcnlwdG9DdXN0b20uY3BwIgpA
QCAtNjksNyArNjgsNiBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5jcHAiCiAjaW5jbHVkZSAi
SlNEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCIKLSNpbmNsdWRlICJKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNF
bGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Vycm9yRXZlbnRDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTRXJyb3JIYW5kbGVyLmNwcCIKQEAgLTExNCw3ICsxMTIsNiBAQAogI2luY2x1ZGUg
IkpTTm9kZUZpbHRlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3RDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTTm9kZU9y
U3RyaW5nLmNwcCIKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2lu
Y2x1ZGUgIkpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY4
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NoYXJhY3RlckRhdGEuaCIKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTVmFsdWUgSlNDaGFyYWN0ZXJE
YXRhOjpiZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB3cmFwcGVkKCkuYmVmb3JlKHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMp
OwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTQ2hhcmFjdGVyRGF0YTo6YWZ0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0ZXIo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlND
aGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5yZXBsYWNlV2l0aCh0b05vZGVPclN0cmlu
Z1ZlY3RvcihzdGF0ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0K
LSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9u
IDIwNjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDEsNDYgKzM0MSw2IEBAIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGgKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZh
bHVlVHJhaXRzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFz
cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlckJhc2Ugewot
ICAgIHVzaW5nIEl0ZW0gPSBET01DbGFzczsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBj
b252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBl
OwotICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OwotICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJp
YWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWlsdGluPjo6dHlwZT4gewotICAg
IHVzaW5nIENsYXNzID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOwotICAgIHVzaW5nIEl0ZW0g
PSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKLQotICAgIHN0YXRpYyBPcHRpb25hbDxJ
dGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCi0gICAg
ewotICAgICAgICBhdXRvKiB2YWx1ZSA9IEpTQ2xhc3M6OnRvV3JhcHBlZChqc1ZhbHVlKTsKLSAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnZhbHVlKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KLXN0cnVjdCBWYXJpYWRpY0hlbHBlciA6
IHB1YmxpYyBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3M+IHsKLSAgICB1c2lu
ZyBJdGVtID0gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzPjo6
SXRlbTsKLSAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8SXRlbT47Ci0KLSAgICBzdHJ1Y3Qg
UmVzdWx0IHsKLSAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXg7Ci0gICAgICAgIE9wdGlvbmFs
PENvbnRhaW5lcj4gYXJndW1lbnRzOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBW
YXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAKIC8vIElubGluZSBm
dW5jdGlvbnMgYW5kIHRlbXBsYXRlIGRlZmluaXRpb25zLgogCkBAIC04OTMsMjQgKzg1Myw2IEBA
IGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWMKICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWRpY0hl
bHBlcj4gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQotewotICAgIHNpemVfdCBsZW5ndGgg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKLQotICAgIHR5cGVuYW1lIFZhcmlhZGljSGVs
cGVyOjpDb250YWluZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNIZWxwZXI6
OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsKLSAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHZhbHVlLnZhbHVlKCkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgbGVuZ3RoLCBXVEZNb3ZlKHJlc3VsdCkgfTsKLX0KLQogdGVtcGxhdGU8SlNDOjpO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gSlNDOjpFbmNvZGVkSlNW
YWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBsZW5ndGgsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA2ODc0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEVuYWJsZUlmRmxvYXRpbmdQb2kKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gY29udmVydERpY3Rpb25hcnkoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogCisvLyBVc2VkIGZvciBJREwgZW51bWVyYXRpb25z
LgordGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gcGFyc2UoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlcygpOworCiBlbnVtIGNsYXNzIElzTnVsbGFibGUgeyBObywgWWVz
IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFQqIGNvbnZlcnRXcmFwcGVy
VHlwZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSXNOdWxsYWJsZSk7CiAKQEAgLTEx
MSw2ICsxMTUsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETFVTVlN0cmluZwog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMSW50
ZXJmYWNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8VCo+IHsKKyAgICBzdGF0aWMgVCogY29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb252ZXJ0V3JhcHBlclR5cGU8VCwgdHlwZW5hbWUgSlNET01XcmFwcGVyQ29u
dmVydGVyVHJhaXRzPFQ+OjpXcmFwcGVyQ2xhc3M+KHN0YXRlLCB2YWx1ZSwgSXNOdWxsYWJsZTo6
Tm8pOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxKU0M6OkpTVmFs
dWU+IDogRGVmYXVsdENvbnZlcnRlcjxKU0M6OkpTVmFsdWU+IHsKICAgICB1c2luZyBPcHRpb25h
bFZhbHVlID0gSlNDOjpKU1ZhbHVlOyAvLyBVc2UganNVbmRlZmluZWQoKSB0byBtZWFuIGFuIG9w
dGlvbmFsIHZhbHVlIHdhcyBub3QgcHJlc2VudC4KICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNv
bnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgdmFsdWUpCkBAIC00MDgsOCArNDE5
LDY2IEBAIHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDogRGVmYXUKICAgICB9CiB9
OwogCi0vLyBVc2VkIGZvciBJREwgZW51bWVyYXRpb25zLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
T3B0aW9uYWw8VD4gcGFyc2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gCitzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXJCYXNl
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiAKK3N0cnVjdCBWYXJpYWRpY0NvbnZlcnRl
ckJhc2UgeworICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU7CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGF1dG8mIHZtID0g
c3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KHN0
YXRlLCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51bGxvcHQp
OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3N0cnVjdCBWYXJpYWRpY0NvbnZlcnRlckJhc2U8SURMSW50ZXJmYWNlPFQ+PiB7Cisg
ICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIElETEludGVyZmFjZTxUPjo6SW1wbGVtZW50YXRpb25U
eXBlOworCisgICAgc3RhdGljIE9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBhdXRvKiByZXN1bHQg
PSBDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFQ+Pjo6Y29udmVydChzdGF0ZSwgdmFsdWUpOworICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnJlc3VsdCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBWYXJpYWRpY0NvbnZlcnRlciA6IFZhcmlhZGljQ29udmVy
dGVyQmFzZTxJRExUeXBlPiB7CisgICAgdXNpbmcgSXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljQ29u
dmVydGVyQmFzZTxJRExUeXBlPjo6SXRlbTsKKyAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8
SXRlbT47CisKKyAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5k
ZXg7CisgICAgICAgIE9wdGlvbmFsPENvbnRhaW5lcj4gYXJndW1lbnRzOworICAgIH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBWYXJpYWRpY0NvbnZlcnRlcjxJ
RExUeXBlPjo6UmVzdWx0IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQoreworICAgIHNpemVfdCBsZW5ndGggPSBzdGF0ZS5h
cmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCisgICAgICAgIHJl
dHVybiB7IDAsIE51bGxvcHQgfTsKKworICAgIHR5cGVuYW1lIFZhcmlhZGljQ29udmVydGVyPElE
TFR5cGU+OjpDb250YWluZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOworCisgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5k
ZXg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gVmFyaWFkaWNDb252
ZXJ0ZXI8SURMVHlwZT46OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQg
fTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOworICAg
IH0KKworICAgIHJldHVybiB7IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Cit9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNI
VE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiSlNOb2Rl
T3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1hNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9jYXRp
b24uaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCkBAIC0xMDgsMjQgKzEwNyw2IEBAIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2IKICAgICByZXR1cm4gdG9KU05l
d2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+KGRvY3VtZW50KSk7
CiB9CiAKLUpTVmFsdWUgSlNEb2N1bWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9y
U3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnQ6
OmFwcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHdyYXBwZWQoKS5hcHBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0g
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci19Ci0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RvY3VtZW50Ojpj
cmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gMjA2ODc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEZyYWdtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzEgKzI3LDEyIEBACiAj
aW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJKU1NoYWRvd1Jvb3Qu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1Zh
bHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUmIHN0YXRlKQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZWQoKS5wcmVwZW5kKHRvTm9kZU9yU3Ry
aW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsK
LQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRG9jdW1lbnRGcmFn
bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgd3JhcHBlZCgpLmFwcGVuZCh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLX0KLQogSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwp
CiB7CiAgICAgaWYgKGltcGwtPmlzU2hhZG93Um9vdCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkocmV2aXNpb24g
MjA2ODc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0
b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5oIgotCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0RvY3VtZW50
VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0ZSksIGVj
KTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RvY3VtZW50VHlwZTo6YWZ0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYWZ0ZXIo
dG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNE
b2N1bWVudFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLnJlcGxhY2VXaXRoKHRvTm9kZU9yU3RyaW5n
VmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQot
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwNjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNp
bmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNzUsNDkgKzc0LDQgQEAgSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAgIHJldHVybiBjcmVhdGVOZXdFbGVt
ZW50V3JhcHBlcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwogfQogCi1KU1ZhbHVl
IEpTRWxlbWVudDo6YmVmb3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmJlZm9yZSh0b05vZGVPclN0cmluZ1ZlY3RvcihzdGF0
ZSksIGVjKTsKLSAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0KLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSYg
c3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlZCgpLmFmdGVy
KHRvTm9kZU9yU3RyaW5nVmVjdG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpT
RWxlbWVudDo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkucmVwbGFjZVdpdGgodG9Ob2RlT3JTdHJpbmdWZWN0
b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4
ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBl
ZCgpLnByZXBlbmQodG9Ob2RlT3JTdHJpbmdWZWN0b3Ioc3RhdGUpLCBlYyk7Ci0gICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0K
LUpTVmFsdWUgSlNFbGVtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICB3cmFwcGVkKCkuYXBwZW5kKHRvTm9kZU9yU3RyaW5nVmVj
dG9yKHN0YXRlKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShyZXZp
c2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmlu
Zy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCi0KLSNpbmNsdWRlICJJ
RExUeXBlcy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgotI2luY2x1ZGUgIkpTTm9kZS5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVGhyb3dTY29wZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8Tm9k
ZT4sIFN0cmluZz4+IHRvTm9kZU9yU3RyaW5nVmVjdG9yKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0g
ICAgdXNpbmcgTm9kZU9yU3RyaW5nVHlwZSA9IElETFVuaW9uPElETEludGVyZmFjZTxOb2RlPiwg
SURMRE9NU3RyaW5nPjsKLSAgICB1c2luZyBDb252ZXJ0ZXJUeXBlID0gQ29udmVydGVyPE5vZGVP
clN0cmluZ1R5cGU+OwotCi0gICAgdXNpbmcgSW50ZXJmYWNlVHlwZUxpc3QgPSB0eXBlbmFtZSBD
b252ZXJ0ZXJUeXBlOjpJbnRlcmZhY2VUeXBlTGlzdDsKLSAgICB1c2luZyBJbnRlcmZhY2VUeXBl
ID0gYnJpZ2FuZDo6ZnJvbnQ8SW50ZXJmYWNlVHlwZUxpc3Q+OwotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPEludGVyZmFjZVR5cGUsIElETEludGVyZmFjZTxOb2RlPj46OnZhbHVlLCAi
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChicmlnYW5kOjpzaXplPEludGVyZmFjZVR5cGVMaXN0Pjo6
dmFsdWUgPT0gMSwgIiIpOwotCi0gICAgdXNpbmcgU3RyaW5nVHlwZUxpc3QgPSB0eXBlbmFtZSBD
b252ZXJ0ZXJUeXBlOjpTdHJpbmdUeXBlTGlzdDsKLSAgICB1c2luZyBTdHJpbmdUeXBlID0gdHlw
ZW5hbWUgQ29udmVydGVyVHlwZTo6U3RyaW5nVHlwZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxTdHJpbmdUeXBlLCBJRExET01TdHJpbmc+Ojp2YWx1ZSwgIiIpOwotICAgIHN0YXRp
Y19hc3NlcnQoYnJpZ2FuZDo6c2l6ZTxTdHJpbmdUeXBlTGlzdD46OnZhbHVlID09IDEsICIiKTsK
LQotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotCi0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBzdGF0ZS5hcmd1bWVu
dENvdW50KCk7Ci0KLSAgICBWZWN0b3I8dHlwZW5hbWUgTm9kZU9yU3RyaW5nVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlPiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YXJndW1lbnRDb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291
bnQ7ICsraSkgewotICAgICAgICAgYXV0byBpdGVtID0gQ29udmVydGVyVHlwZTo6Y29udmVydChz
dGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSkpOwotICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RG
TW92ZShpdGVtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5oCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVPclN0cmluZy5oCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgSlNOb2RlT3JTdHJpbmdfaAotI2RlZmluZSBKU05vZGVPclN0cmluZ19o
Ci0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0
ZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1WZWN0b3I8c3Rk
OjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiB0b05vZGVPclN0cmlu
Z1ZlY3RvcihKU0M6OkV4ZWNTdGF0ZSYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBKU05vZGVPclN0cmluZ1ZlY3Rvcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDY4NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAgcGFja2FnZSBDb2RlR2VuZXJhdG9yOwogdXNlIHN0
cmljdDsKIAogdXNlIEZpbGU6OkZpbmQ7Cit1c2UgQ2FycCBxdzxsb25nbWVzcz47Cit1c2UgRGF0
YTo6RHVtcGVyOwogCiBteSAkdXNlRG9jdW1lbnQgPSAiIjsKIG15ICR1c2VHZW5lcmF0b3IgPSAi
IjsKQEAgLTEzOSw2ICsxNDEsMTYgQEAgbXkgJXN2Z1R5cGVXaXRoV3JpdGFibGVQcm9wZXJ0aWVz
TmVlZGluZwogbXkgJGlkbEZpbGVzOwogbXkgJGNhY2hlZEludGVyZmFjZXMgPSB7fTsKIAorc3Vi
IGFzc2VydAoreworICAgIG15ICRtZXNzYWdlID0gc2hpZnQ7CisgICAgCisgICAgbXkgJG1lc3Mg
PSBsb25nbWVzcygpOworICAgIHByaW50IER1bXBlcigkbWVzcyk7CisKKyAgICBkaWUgJG1lc3Nh
Z2U7Cit9CisKICMgRGVmYXVsdCBjb25zdHJ1Y3Rvcgogc3ViIG5ldwogewpAQCAtMzEyLDYgKzMy
NCw3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7
CiAKICAgICByZXR1cm4gdW5kZWYgaWYgJGludGVyZmFjZU5hbWUgZXEgJ09iamVjdCc7CisgICAg
cmV0dXJuIHVuZGVmIGlmICRpbnRlcmZhY2VOYW1lIGVxICdVTklPTic7CiAKICAgICBpZiAoZXhp
c3RzICRjYWNoZWRJbnRlcmZhY2VzLT57JGludGVyZmFjZU5hbWV9KSB7CiAgICAgICAgIHJldHVy
biAkY2FjaGVkSW50ZXJmYWNlcy0+eyRpbnRlcmZhY2VOYW1lfTsKQEAgLTMxOSw3ICszMzIsNyBA
QCBzdWIgUGFyc2VJbnRlcmZhY2UKIAogICAgICMgU3RlcCAjMTogRmluZCB0aGUgSURMIGZpbGUg
YXNzb2NpYXRlZCB3aXRoICdpbnRlcmZhY2UnCiAgICAgbXkgJGZpbGVuYW1lID0gJG9iamVjdC0+
SURMRmlsZUZvckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkKLSAgICAgICAgb3IgZGllKCJDb3Vs
ZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJGludGVyZmFjZU5hbWVcIiwgcmVh
Y2hhYmxlIGZyb20gXCIiIC4gJG91dGVySW50ZXJmYWNlLT5uYW1lIC4gIlwiIVxuIik7CisgICAg
ICAgIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRp
bnRlcmZhY2VOYW1lXCIsIHJlYWNoYWJsZSBmcm9tIFwiIiAuICRvdXRlckludGVyZmFjZS0+bmFt
ZSAuICJcIiFcbiIpOwogCiAgICAgcHJpbnQgIiAgfCAgfD4gIFBhcnNpbmcgcGFyZW50IElETCBc
IiRmaWxlbmFtZVwiIGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiXG4iIGlmICR2ZXJi
b3NlOwogCkBAIC02MjQsNiArNjM3LDEwOCBAQCBzdWIgR2V0U2VxdWVuY2VPckZyb3plbkFycmF5
SW5uZXJUeXBlCiAgICAgcmV0dXJuICIiOwogfQogCisjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGZuLWZsYXR0ZW5lZC11bmlvbi1tZW1iZXItdHlwZXMKK3N1YiBHZXRGbGF0dGVu
ZWRNZW1iZXJUeXBlcworeworICAgIG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBfOwor
CisgICAgbXkgQGZsYXR0ZW5lZE1lbWJlclR5cGVzID0gKCk7CisKKyAgICBmb3JlYWNoIG15ICRt
ZW1iZXJUeXBlIChAeyRpZGxVbmlvblR5cGUtPnN1YnR5cGVzfSkgeworICAgICAgICBpZiAoJG1l
bWJlclR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgIHB1c2goQGZsYXR0ZW5lZE1lbWJlclR5
cGVzLCAkb2JqZWN0LT5HZXRGbGF0dGVuZWRNZW1iZXJUeXBlcygkbWVtYmVyVHlwZSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAZmxhdHRlbmVkTWVtYmVyVHlwZXMsICRt
ZW1iZXJUeXBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAZmxhdHRlbmVkTWVt
YmVyVHlwZXM7Cit9CisKKyMgaHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbnVt
YmVyLW9mLW51bGxhYmxlLW1lbWJlci10eXBlcworc3ViIEdldE51bWJlck9mTnVsbGFibGVNZW1i
ZXJUeXBlcworeworICAgIG15ICgkb2JqZWN0LCAkaWRsVW5pb25UeXBlKSA9IEBfOworCisgICAg
bXkgJGNvdW50ID0gMDsKKworICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFVuaW9u
VHlwZS0+c3VidHlwZXN9KSB7CisgICAgICAgIGlmICgkbWVtYmVyVHlwZS0+aXNOdWxsYWJsZSkg
eworICAgICAgICAgICAgJGNvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBpZiAoJG1lbWJl
clR5cGUtPmlzVW5pb24pIHsKKyAgICAgICAgICAgICRjb3VudCArPSAkb2JqZWN0LT5HZXROdW1i
ZXJPZk51bGxhYmxlTWVtYmVyVHlwZXMoJG1lbWJlclR5cGUpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuICRjb3VudDsKK30KKworc3ViIEdldElETFVuaW9uTWVtYmVyVHlwZXMKK3sK
KyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlkbFVuaW9uVHlwZSkgPSBAXzsKKworICAg
IG15ICRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA9ICRvYmplY3QtPkdldE51bWJlck9mTnVsbGFi
bGVNZW1iZXJUeXBlcygkaWRsVW5pb25UeXBlKTsKKyAgICBpZiAoJG51bWJlck9mTnVsbGFibGVN
ZW1iZXJzID4gMSkgeworICAgICAgICBhc3NlcnQoIlVuaW9uIHR5cGVzIG11c3Qgb25seSBoYXZl
IDAgb3IgMSBudWxsYWJsZSB0eXBlcy4iKTsKKyAgICB9CisKKyAgICBteSBAaWRsVW5pb25NZW1i
ZXJUeXBlcyA9ICgpOworCisgICAgaWYgKCRudW1iZXJPZk51bGxhYmxlTWVtYmVycyA9PSAxKSB7
CisgICAgICAgIHB1c2goQGlkbFVuaW9uTWVtYmVyVHlwZXMsICJJRExOdWxsIik7CisgICAgfQor
CisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAoJG9iamVjdC0+R2V0RmxhdHRlbmVkTWVtYmVy
VHlwZXMoJGlkbFVuaW9uVHlwZSkpIHsKKyAgICAgICAgcHVzaChAaWRsVW5pb25NZW1iZXJUeXBl
cywgJG9iamVjdC0+R2V0QmFzZUlETFR5cGUoJGludGVyZmFjZSwgJG1lbWJlclR5cGUpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gQGlkbFVuaW9uTWVtYmVyVHlwZXM7Cit9CisKK3N1YiBHZXRCYXNl
SURMVHlwZQoreworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkaWRsVHlwZSkgPSBAXzsK
KworICAgIG15ICVJRExUeXBlcyA9ICgKKyAgICAgICAgImFueSIgPT4gIklETEFueSIsCisgICAg
ICAgICJib29sZWFuIiA9PiAiSURMQm9vbGVhbiIsCisgICAgICAgICJieXRlIiA9PiAiSURMQnl0
ZSIsCisgICAgICAgICJvY3RldCIgPT4gIklETE9jdGV0IiwKKyAgICAgICAgInNob3J0IiA9PiAi
SURMU2hvcnQiLAorICAgICAgICAidW5zaWduZWQgc2hvcnQiID0+ICJJRExVbnNpZ25lZFNob3J0
IiwKKyAgICAgICAgImxvbmciID0+ICJJRExMb25nIiwKKyAgICAgICAgInVuc2lnbmVkIGxvbmci
ID0+ICJJRExVbnNpZ25lZExvbmciLAorICAgICAgICAibG9uZyBsb25nIiA9PiAiSURMTG9uZ0xv
bmciLAorICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9PiAiSURMVW5zaWduZWRMb25nTG9u
ZyIsCisgICAgICAgICJmbG9hdCIgPT4gIklETEZsb2F0IiwKKyAgICAgICAgInVucmVzdHJpY3Rl
ZCBmbG9hdCIgPT4gIklETFVucmVzdHJpY3RlZEZsb2F0IiwKKyAgICAgICAgImRvdWJsZSIgPT4g
IklETERvdWJsZSIsCisgICAgICAgICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA9PiAiSURMVW5yZXN0
cmljdGVkRG91YmxlIiwKKyAgICAgICAgIkRPTVN0cmluZyIgPT4gIklETERPTVN0cmluZyIsCisg
ICAgICAgICJCeXRlU3RyaW5nIiA9PiAiSURMQnl0ZVN0cmluZyIsCisgICAgICAgICJVU1ZTdHJp
bmciID0+ICJJRExVU1ZTdHJpbmciLAorICAgICk7CisKKyAgICByZXR1cm4gJElETFR5cGVzeyRp
ZGxUeXBlLT5uYW1lfSBpZiBleGlzdHMgJElETFR5cGVzeyRpZGxUeXBlLT5uYW1lfTsKKyAgICBy
ZXR1cm4gIklETEVudW1lcmF0aW9uPCIgLiAkb2JqZWN0LT5HZXRFbnVtZXJhdGlvbkNsYXNzTmFt
ZSgkaW50ZXJmYWNlLCAkaWRsVHlwZS0+bmFtZSkgLiAiPiIgaWYgJG9iamVjdC0+SXNFbnVtVHlw
ZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJRExEaWN0aW9uYXJ5PCIgLiAkb2JqZWN0
LT5HZXREaWN0aW9uYXJ5Q2xhc3NOYW1lKCRpbnRlcmZhY2UsICRpZGxUeXBlLT5uYW1lKSAuICI+
IiBpZiAkb2JqZWN0LT5Jc0RpY3Rpb25hcnlUeXBlKCRpZGxUeXBlLT5uYW1lKTsKKyAgICByZXR1
cm4gIklETFNlcXVlbmNlPCIgLiAkb2JqZWN0LT5HZXRJRExUeXBlKCRpbnRlcmZhY2UsIEB7JGlk
bFR5cGUtPnN1YnR5cGVzfVswXSkgLiAiPiIgaWYgJG9iamVjdC0+SXNTZXF1ZW5jZVR5cGUoJGlk
bFR5cGUtPm5hbWUpOworICAgIHJldHVybiAiSURMRnJvemVuQXJyYXk8IiAuICRvYmplY3QtPkdl
dElETFR5cGUoJGludGVyZmFjZSwgQHskaWRsVHlwZS0+c3VidHlwZXN9WzBdKSAuICI+IiBpZiAk
b2JqZWN0LT5Jc0Zyb3plbkFycmF5VHlwZSgkaWRsVHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICJJ
RExVbmlvbjwiIC4gam9pbigiLCAiLCAkb2JqZWN0LT5HZXRJRExVbmlvbk1lbWJlclR5cGVzKCRp
bnRlcmZhY2UsICRpZGxUeXBlKSkgLiAiPiIgaWYgJGlkbFR5cGUtPmlzVW5pb247CisgICAgcmV0
dXJuICJJRExJbnRlcmZhY2U8IiAuICRpZGxUeXBlLT5uYW1lIC4gIj4iOworfQorCitzdWIgR2V0
SURMVHlwZQoreworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkaWRsVHlwZSkgPSBAXzsK
KworICAgIG15ICRiYXNlSURMVHlwZSA9ICRvYmplY3QtPkdldEJhc2VJRExUeXBlKCRpbnRlcmZh
Y2UsICRpZGxUeXBlKTsKKyAgICByZXR1cm4gIklETE51bGxhYmxlPCIgLiAkYmFzZUlETFR5cGUg
LiAiPiIgaWYgJGlkbFR5cGUtPmlzTnVsbGFibGU7CisgICAgcmV0dXJuICRiYXNlSURMVHlwZTsK
K30KKwogIyBUaGVzZSBtYXRjaCBXS19sY2ZpcnN0IGFuZCBXS191Y2ZpcnN0IGRlZmluZWQgaW4g
YnVpbHRpbnNfZ2VuZXJhdG9yLnB5LgogIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciB3aGls
ZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgogIyBFLmcuLCB4bWxFbmNvZGlu
ZyBiZWNvbWVzIFhNTEVuY29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxsYW5nLgpAQCAt
ODAzLDYgKzkxOCw3IEBAIHN1YiBJc1dyYXBwZXJUeXBlCiAKICAgICByZXR1cm4gMCBpZiAhJG9i
amVjdC0+SXNSZWZQdHJUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1R5
cGVkQXJyYXlUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiVU5JT04iOwog
ICAgIHJldHVybiAwIGlmICR3ZWJDb3JlVHlwZUhhc2h7JHR5cGV9OwogCiAgICAgcmV0dXJuIDE7
CkBAIC04MTYsNyArOTMyLDcgQEAgc3ViIGdldEludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlc0Zy
b21OYQogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNo
aWZ0OwogCi0gICAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCRp
bnRlcmZhY2VOYW1lKSBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZh
Y2UgXCIkaW50ZXJmYWNlTmFtZVwiIVxuIik7CisgICAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5J
RExGaWxlRm9ySW50ZXJmYWNlKCRpbnRlcmZhY2VOYW1lKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBm
aW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkaW50ZXJmYWNlTmFtZVwiIVxuIik7CiAKICAg
ICBvcGVuIEZJTEUsICI8IiwgJGlkbEZpbGUgb3IgZGllOwogICAgIG15IEBsaW5lcyA9IDxGSUxF
PjsKQEAgLTg0OCw3ICs5NjQsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UKIAog
ICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7CiAKLSAgbXkg
JGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlKSBvciBkaWUoIkNv
dWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CisgIG15
ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZSkgb3IgYXNzZXJ0
KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVcIiFcbiIpOwog
CiAgIG9wZW4gRklMRSwgIjwiLCAkaWRsRmlsZSBvciBkaWU7CiAgIG15IEBsaW5lcyA9IDxGSUxF
PjsKQEAgLTg4NCw3ICsxMDAwLDcgQEAgc3ViIENvbXB1dGVJc0Z1bmN0aW9uT25seUNhbGxiYWNr
SW50ZXJmYQogCiAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxiYWNrSW50ZXJmYWNl
KCR0eXBlKTsKIAotICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2Uo
JHR5cGUpIG9yIGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0
eXBlXCIhXG4iKTsKKyAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNl
KCR0eXBlKSBvciBhc3NlcnQoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZvciBpbnRlcmZhY2Ug
XCIkdHlwZVwiIVxuIik7CiAKICAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxlIG9yIGRpZTsKICAg
bXkgQGxpbmVzID0gPEZJTEU+OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNjg3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzksNiArMjM5LDI4IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9CiB9
CiAKK3N1YiBBZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUKK3sKKyAgICBteSAoJGlkbFR5cGUs
ICRjb25kaXRpb25hbCkgPSBAXzsKKworICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+U2tp
cEluY2x1ZGVIZWFkZXIoJGlkbFR5cGUtPm5hbWUpOworCisgICAgaWYgKCRpZGxUeXBlLT5pc1Vu
aW9uKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1ZhcmlhbnQuaD4iLCAkY29u
ZGl0aW9uYWwpOworCisgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlclR5cGUgKEB7JGlkbFR5cGUt
PnN1YnR5cGVzfSkgeworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRt
ZW1iZXJUeXBlLCAkY29uZGl0aW9uYWwpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkaWRsVHlwZS0+
bmFtZSkpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRpZGxUeXBlLT5uYW1l
IC4gIi5oIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHN1YiBBZGRUb0ltcGxJbmNs
dWRlcwogewogICAgIG15ICRoZWFkZXIgPSBzaGlmdDsKQEAgLTM5NjUsNiArMzk4Nyw3IEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKICAg
ICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAg
ICAgICBteSAkdHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CisgICAgICAgIG15ICRpZGxUeXBlID0g
JHBhcmFtZXRlci0+aWRsVHlwZTsKIAogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFtZXRlcnMg
b2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICRwYXJh
bWV0ZXItPmlzT3B0aW9uYWwgJiYgISRwYXJhbWV0ZXItPmlzTnVsbGFibGUgJiYgJGNvZGVHZW5l
cmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwogICAgICAgICBkaWUgIk9wdGlvbmFsIHBhcmFt
ZXRlcnMgcHJlY2VkaW5nIHZhcmlhZGljIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlm
ICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc31bJG51
bVBhcmFtZXRlcnMgLSAxXS0+aXNWYXJpYWRpYyk7CkBAIC00MDI2LDE3ICs0MDQ5LDEzIEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZh
bHVlID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNW
YXJpYWRpYykgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHt0eXBlfS5oIiwg
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkg
dW5sZXNzICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSkgb3IgISRjb2Rl
R2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgIG15ICgkd3JhcHBl
clR5cGUsICR3cmFwcGVkVHlwZSkgPSBHZXRWYXJpYWRpY1R5cGUoJGludGVyZmFjZSwgJHR5cGUp
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSB0b0Fy
Z3VtZW50czxWYXJpYWRpY0hlbHBlcjwkd3JhcHBlclR5cGUsICR3cmFwcGVkVHlwZT4+KCpzdGF0
ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7Ci0KLSAgICAgICAgICAgIGlmIChJc05hdGl2ZVR5cGUo
JHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoISRuYW1lLmFyZ3VtZW50cylcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkbmFtZS5hcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwi
JHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7
XG4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29u
dmVydC5oIn0gPSAxOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRp
ZGxUeXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0
aW9uYWx9KTsKKyAgICAgICAgCisgICAgICAgICAgICBteSAkbWV0YVR5cGUgPSAkY29kZUdlbmVy
YXRvci0+R2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkaWRsVHlwZSk7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50
czwkbWV0YVR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTtcbiIpOworCiAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgk
bmFtZS5hcmd1bWVudHMudmFsdWUoKSkiOwogCiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIwNjg3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCwxMyBAQCBzdHJ1Y3QoIGlkbERvY3VtZW50ID0+IHsKICAgICBmaWxlTmFtZSA9PiAnJCcs
CiB9KTsKIAorc3RydWN0KCBkb21UeXBlID0+IHsKKyAgICBuYW1lID0+ICAgICAgICAgJyQnLCAj
IFR5cGUgaWRlbnRpZmllcgorICAgIGlzTnVsbGFibGUgPT4gICAnJCcsICMgSXMgdGhlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzVW5pb24gPT4gICAgICAnJCcsICMgSXMgdGhlIHR5cGUgYSB1
bmlvbiAoVCBvciBVKQorICAgIHN1YnR5cGVzID0+ICAgICAnQCcsICMgQXJyYXkgb2Ygc3VidHlw
ZXMsIG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1ZW5jZQorfSk7CisKICMgVXNlZCB0byBy
ZXByZXNlbnQgJ2ludGVyZmFjZScgYmxvY2tzCiBzdHJ1Y3QoIGRvbUludGVyZmFjZSA9PiB7CiAg
ICAgbmFtZSA9PiAnJCcsICAgICAgIyBDbGFzcyBpZGVudGlmaWVyCkBAIC03OSwxOCArODYsMTIg
QEAgc3RydWN0KCBkb21BdHRyaWJ1dGUgPT4gewogICAgIHNpZ25hdHVyZSA9PiAnJCcsICAgICAg
ICAgIyBBdHRyaWJ1dGUgc2lnbmF0dXJlCiB9KTsKIAotc3RydWN0KCBkb21UeXBlID0+IHsKLSAg
ICBuYW1lID0+ICAgICAgICAgJyQnLCAjIFR5cGUgaWRlbnRpZmllcgotICAgIGlzTnVsbGFibGUg
PT4gICAnJCcsICMgSXMgdGhlIHR5cGUgTnVsbGFibGUgKFQ/KQotICAgIGlzVW5pb24gPT4gICAg
ICAnJCcsICMgSXMgdGhlIHR5cGUgYSB1bmlvbiAoVCBvciBVKQotICAgIHN1YnR5cGVzID0+ICAg
ICAnQCcsICMgQXJyYXkgb2Ygc3VidHlwZXMsIG9ubHkgdmFsaWQgaWYgaXNVbmlvbiBvciBzZXF1
ZW5jZQotfSk7Ci0KICMgVXNlZCB0byByZXByZXNlbnQgYSBtYXAgb2YgJ3ZhcmlhYmxlIG5hbWUn
IDwtPiAndmFyaWFibGUgdHlwZScKIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAgICBkaXJl
Y3Rpb24gPT4gJyQnLCAgICMgVmFyaWFibGUgZGlyZWN0aW9uIChpbiBvciBvdXQpCiAgICAgbmFt
ZSA9PiAnJCcsICAgICAgICAjIFZhcmlhYmxlIG5hbWUKLSAgICB0eXBlID0+ICckJyAgICAgICwg
ICMgVmFyaWFibGUgdHlwZQorICAgIHR5cGUgPT4gJyQnLCAgICAgICAgIyBWYXJpYWJsZSB0eXBl
IG5hbWUgKERFUFJFQ0FURUQgLSBwbGVhc2UgdXNlIGlkbFR5cGUpCisgICAgaWRsVHlwZSA9PiAn
JCcsICAgICAjIFZhcmlhYmxlIHR5cGUKICAgICBzcGVjaWFscyA9PiAnQCcsICAgICMgU3BlY2lh
bHMKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMK
ICAgICBpc051bGxhYmxlID0+ICckJywgICMgSXMgdmFyaWFibGUgdHlwZSBOdWxsYWJsZSAoVD8p
CkBAIC03MDcsNiArNzA4LDcgQEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJlcgogICAgICAgICAk
bWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAKICAg
ICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgICRtZW1iZXItPmlk
bFR5cGUoJHR5cGUpOwogICAgICAgICAkbWVtYmVyLT50eXBlKCR0eXBlLT5uYW1lKTsKICAgICAg
ICAgJG1lbWJlci0+aXNOdWxsYWJsZSgkdHlwZS0+aXNOdWxsYWJsZSk7CiAKQEAgLTEyNTQsNiAr
MTI1Niw3IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAgICAgICAgIAogICAgICAgICBteSAkdHlw
ZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgk
dHlwZS0+bmFtZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxl
KCR0eXBlLT5pc051bGxhYmxlKTsKIApAQCAtMTU0Niw2ICsxNTQ5LDcgQEAgc3ViIHBhcnNlT3B0
aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUo
JHNlbGYtPmdldFRva2VuKCksICJvcHRpb25hbCIsIF9fTElORV9fKTsKIAogICAgICAgICBteSAk
dHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlkbFR5
cGUoJHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZShpZGVudGlmaWVyUmVtb3Zl
TnVsbGFibGVQcmVmaXgoJHR5cGUtPm5hbWUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlz
TnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNP
cHRpb25hbCgxKTsKQEAgLTE1NTUsNiArMTU1OSw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1
aXJlZEFyZ3VtZW50CiAgICAgfQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJU
b2tlbiB8fCAkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRFeGNlcHRpb25GaWVsZF8xLykgewogICAg
ICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPmlkbFR5cGUoJHR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkdHlwZS0+
bmFtZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCR0eXBlLT5pc051bGxh
YmxlKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwoMCk7CkBAIC0xNjE3LDYg
KzE2MjIsNyBAQCBzdWIgcGFyc2VFeGNlcHRpb25GaWVsZAogICAgICAgICAkbmV3RGF0YU5vZGUt
PnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKIAogICAgICAgICBteSAkdHlwZSA9ICRz
ZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlkbFR5
cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZS0+
bmFtZSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKCR0eXBl
LT5pc051bGxhYmxlKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM1OSw2ICszNTksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2lu
ZGEtbG93CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChET01TdHJpbmcgaGVhZCwgRE9N
U3RyaW5nLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2QodW5yZXN0cmlj
dGVkIGRvdWJsZSBoZWFkLCB1bnJlc3RyaWN0ZWQgZG91YmxlLi4uIHRhaWwpOwogICAgIHZvaWQg
dmFyaWFkaWNOb2RlTWV0aG9kKE5vZGUgaGVhZCwgTm9kZS4uLiB0YWlsKTsKKyAgICB2b2lkIHZh
cmlhZGljVW5pb25NZXRob2QoRE9NU3RyaW5nIGhlYWQsIChOb2RlIG9yIERPTVN0cmluZykuLi4g
dGFpbCk7CiAKICAgICAvLyBOdWxsYWJsZSBhdHRyaWJ1dGVzLgogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAs
NyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICNpbmNsdWRl
ICJKU1Rlc3RPYmplY3RBLmgiCkBAIC05ODMsNiArOTg0LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldp
dGhGbG9hdEFyZ3VtZW50KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNTg5LDYgKzE1OTEsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAidmFyaWFkaWNT
dHJpbmdNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNEb3Vi
bGVNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNE
b3VibGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNOb2RlTWV0
aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1l
dGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJ2YXJpYWRpY1VuaW9uTWV0aG9kIiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2Qp
LCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYW55IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkFueSksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJ0ZXN0UHJv
bWlzZUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VG
dW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkg
KDEpIH0gfSwKQEAgLTY2MzEsOSArNjYzNCw4IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gYmxvYkFyZ3Mg
PSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigqc3RhdGUsIDApOwot
ICAgIGlmICghYmxvYkFyZ3MuYXJndW1lbnRzKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIGJsb2JBcmdzLmFyZ3VtZW50SW5kZXgsICJi
bG9iQXJncyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOworICAg
IGF1dG8gYmxvYkFyZ3MgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPEJs
b2I+Pigqc3RhdGUsIDApOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFy
Z3MuYXJndW1lbnRzLnZhbHVlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQpAQCAtNzE0OSw3ICs3MTUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gaGVhZCA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUs
IFN0cmluZz4+KCpzdGF0ZSwgMSk7CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJn
dW1lbnRzPElETERPTVN0cmluZz4oKnN0YXRlLCAxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwudmFyaWFkaWNTdHJpbmdN
ZXRob2QoV1RGTW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsLmFyZ3VtZW50cy52YWx1ZSgpKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTcxNzAsNyArNzE3
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGhlYWQgPSBjb252ZXJ0PGRvdWJsZT4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZ
ZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1Zh
bHVlLCBkb3VibGU+Pigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IGNvbnZlcnRWYXJpYWRp
Y0FyZ3VtZW50czxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpzdGF0ZSwgMSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnZh
cmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbC5hcmd1bWVudHMu
dmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC03MTkyLDEzICs3MTk0LDMzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICAgICBhdXRvIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImhlYWQiLCAiVGVz
dE9iamVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAgIGF1dG8gdGFpbCA9
IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTTm9kZSwgTm9kZT4+KCpzdGF0ZSwgMSk7Ci0g
ICAgaWYgKCF0YWlsLmFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCB0YWlsLmFyZ3VtZW50SW5kZXgsICJ0YWlsIiwgIlRl
c3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAgICBhdXRvIHRhaWwg
PSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMSW50ZXJmYWNlPE5vZGU+Pigqc3RhdGUsIDEp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUodGFpbC5hcmd1bWVu
dHMudmFsdWUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBh
dXRvIGhlYWQgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgYXV0byB0YWlsID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETFVuaW9uPElETElu
dGVyZmFjZTxOb2RlPiwgSURMRE9NU3RyaW5nPj4oKnN0YXRlLCAxKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwudmFyaWFk
aWNVbmlvbk1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwuYXJndW1lbnRzLnZhbHVl
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAy
MDY4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcg
QEAKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0xMzcsNyArMTM4LDcgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNh
c3RlZFRoaXMpOwotICAgIGF1dG8gbG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBl
cjxKU0M6OkpTVmFsdWUsIGludDMyX3Q+Pigqc3RhdGUsIDApOworICAgIGF1dG8gbG9uZ0FyZ3Mg
PSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMTG9uZz4oKnN0YXRlLCAwKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8g
b2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdB
cmdzKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkKHN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjA2ODc0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKIFsK
ICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9kZSB7Ci0gICAgW1Vu
c2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYmVmb3JlKChO
b2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4g
bm9kZXMpOwotICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9t
XSB2b2lkIHJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtV
bnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBiZWZvcmUoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhj
ZXB0aW9uXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtV
bnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZXBsYWNlV2l0aCgoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKICAgICBbVW5zY29wYWJsZSwgTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjA2ODc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzcsNyArODc3LDcgQEAgdW5zaWdu
ZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVybiBzdGQ6OmRpc3Rh
bmNlKGNoaWxkcmVuLmJlZ2luKCksIGNoaWxkcmVuLmVuZCgpKTsKIH0KIAotdm9pZCBDb250YWlu
ZXJOb2RlOjphcHBlbmQoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2Rl
PiwgU3RyaW5nPj4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBDb250YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tm9kZT4sIFN0cmluZz4+JiYgbm9kZU9yU3RyaW5nVmVj
dG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMp
OwogICAgIGlmIChlYyB8fCAhbm9kZSkKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OmFwcGVuZChWZWN0b3I8c3RkOjplCiAgICAgYXBwZW5kQ2hpbGQoKm5vZGUsIGVjKTsK
IH0KIAotdm9pZCBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRh
bDo6dmFyaWFudDxSZWY8Tm9kZT4sIFN0cmluZz4+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ29udGFpbmVyTm9kZTo6cHJlcGVuZChWZWN0b3I8c3RkOjpl
eHBlcmltZW50YWw6OnZhcmlhbnQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOb2RlPiwgU3RyaW5n
Pj4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0
cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoV1RGTW92ZShub2Rl
T3JTdHJpbmdWZWN0b3IpLCBlYyk7CiAgICAgaWYgKGVjIHx8ICFub2RlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGxhc3RFbGVtZW50Q2hpbGQoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0
OwotICAgIHZvaWQgYXBwZW5kKFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8
Tm9kZT4sIFN0cmluZz4+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHByZXBlbmQoVmVj
dG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4mJiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYXBwZW5kKFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6
dmFyaWFudDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+LCBTdHJpbmc+PiYmLCBFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBwcmVwZW5kKFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFy
aWFudDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+LCBTdHJpbmc+PiYmLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBib29sIGVuc3VyZVByZUluc2VydGlvblZhbGlkaXR5KE5vZGUmIG5ld0No
aWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCShyZXZpc2lvbiAyMDY4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNSwxMiArNDM1LDEyIEBAIGJvb2wgTm9kZTo6YXBwZW5kQ2hpbGQo
Tm9kZSYgbmV3Q2hpbGQsIEUKICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKnRo
aXMpLmFwcGVuZENoaWxkKG5ld0NoaWxkLCBlYyk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFJlZlB0
cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihjb25z
dCBWZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiYg
dmVjdG9yKQorc3RhdGljIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3Jt
ZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKGNvbnN0IFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6
dmFyaWFudDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+LCBTdHJpbmc+PiYgdmVjdG9yKQog
ewogICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0OwogCiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxOb2RlPiYgbm9kZSkg
eyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLnB0cigpKSk7IH0sCisgICAgICAg
IFsmXShjb25zdCBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+JiBub2RlKSB7IG5vZGVTZXQu
YWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KCZub2RlLmdldCgpKSk7IH0sCiAgICAgICAgIFtdKGNvbnN0
IFN0cmluZyYpIHsgfQogICAgICk7CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgUmVmUHRy
PE5vZGU+IGZpcnN0Rm9sbG93aW5nU2libGluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJl
ZlB0cjxOb2RlPiBOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShWZWN0b3I8c3Rk
OjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiYmIG5vZGVPclN0cmlu
Z1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8Tm9kZT4gTm9kZTo6Y29udmVydE5v
ZGVzT3JTdHJpbmdzSW50b05vZGUoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tm9kZT4sIFN0cmluZz4+JiYgbm9kZU9yU3RyaW5nVmVjdG9y
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobm9kZU9yU3RyaW5nVmVjdG9yLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NzcsNyArNDc3LDcgQEAgUmVmUHRy
PE5vZGU+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5ncwogICAgIG5vZGVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobm9kZU9yU3RyaW5nVmVjdG9yLnNpemUoKSk7CiAKICAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbJl0oUmVmPE5vZGU+JiBub2RlKSB7IG5v
ZGVzLnVuY2hlY2tlZEFwcGVuZChub2RlLmNvcHlSZWYoKSk7IH0sCisgICAgICAgIFsmXShzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+JiBub2RlKSB7IG5vZGVzLnVuY2hlY2tlZEFwcGVuZChu
b2RlKTsgfSwKICAgICAgICAgWyZdKFN0cmluZyYgc3RyaW5nKSB7IG5vZGVzLnVuY2hlY2tlZEFw
cGVuZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RyaW5nKSk7IH0KICAgICApOwogCkBAIC00
OTUsNyArNDk1LDcgQEAgUmVmUHRyPE5vZGU+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5ncwog
ICAgIHJldHVybiBXVEZNb3ZlKG5vZGVUb1JldHVybik7CiB9CiAKLXZvaWQgTm9kZTo6YmVmb3Jl
KFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8Tm9kZT4sIFN0cmluZz4+JiYg
bm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgTm9kZTo6YmVmb3Jl
KFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PE5vZGU+LCBTdHJpbmc+PiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAg
ICBpZiAoIXBhcmVudCkKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIE5vZGU6OmJlZm9yZShWZWN0
b3I8c3RkOjpleHBlcmltZW50CiAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoKm5vZGUsIHZpYWJs
ZVByZXZpb3VzU2libGluZy5nZXQoKSwgZWMpOwogfQogCi12b2lkIE5vZGU6OmFmdGVyKFZlY3Rv
cjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxSZWY8Tm9kZT4sIFN0cmluZz4+JiYgbm9kZU9y
U3RyaW5nVmVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgTm9kZTo6YWZ0ZXIoVmVjdG9y
PHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tm9kZT4s
IFN0cmluZz4+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICgh
cGFyZW50KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgTm9kZTo6YWZ0ZXIoVmVjdG9yPHN0ZDo6
ZXhwZXJpbWVudGEKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZSgqbm9kZSwgdmlhYmxlTmV4dFNp
YmxpbmcuZ2V0KCksIGVjKTsKIH0KIAotdm9pZCBOb2RlOjpyZXBsYWNlV2l0aChWZWN0b3I8c3Rk
OjpleHBlcmltZW50YWw6OnZhcmlhbnQ8UmVmPE5vZGU+LCBTdHJpbmc+PiYmIG5vZGVPclN0cmlu
Z1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE5vZGU6OnJlcGxhY2VXaXRoKFZlY3Rv
cjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+
LCBTdHJpbmc+PiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAo
IXBhcmVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjA2ODc0KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDkgKzIwMiw5IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0RWxlbWVudFNpYmxpbmcoKSBjb25z
dDsKIAogICAgIC8vIEZyb20gdGhlIENoaWxkTm9kZSAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jY2hpbGRub2RlCi0gICAgdm9pZCBiZWZvcmUoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFs
Ojp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4mJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgYWZ0ZXIoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3Ry
aW5nPj4mJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVwbGFjZVdpdGgoVmVjdG9yPHN0
ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4mJiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgYmVmb3JlKFZlY3RvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFu
dDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+LCBTdHJpbmc+PiYmLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBhZnRlcihWZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxOb2RlPiwgU3RyaW5nPj4mJiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZvaWQgcmVwbGFjZVdpdGgoVmVjdG9yPHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tm9kZT4sIFN0cmluZz4+JiYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShFeGNlcHRpb25Db2RlJik7CiAKICAgICAv
LyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCkBAIC02NTksNyArNjU5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgc2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5
cGUpIHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+U3R5bGVDaGFuZ2VNYXNrKSB8IGNo
YW5nZVR5cGU7IH0KICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yc0ZvclN0eWxlUmVjYWxjKCk7CiAK
LSAgICBSZWZQdHI8Tm9kZT4gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoVmVjdG9yPHN0
ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PFJlZjxOb2RlPiwgU3RyaW5nPj4mJiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShW
ZWN0b3I8c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxO
b2RlPiwgU3RyaW5nPj4mJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1BhcmVudE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJl
bnROb2RlLmlkbAkocmV2aXNpb24gMjA2ODc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BhcmVu
dE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAotICAgIFtVbnNjb3BhYmxlLCBN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5vZGUgb3IgRE9N
U3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgW1Vuc2NvcGFibGUsIE1heVRocm93TGVnYWN5RXhjZXB0
aW9uLCBDdXN0b21dIHZvaWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwor
ICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBwcmVwZW5kKChO
b2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtVbnNjb3BhYmxlLCBNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7
CiAKICAgICAvLyBbVW5zY29wYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5nIHJlbGF0aXZl
U2VsZWN0b3JzKTsKICAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BhYmxlXSBFbGVtZW50cyBxdWVy
eUFsbChET01TdHJpbmcgcmVsYXRpdmVTZWxlY3RvcnMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>