<?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>137243</bug_id>
          
          <creation_ts>2014-09-29 19:59:22 -0700</creation_ts>
          <short_desc>Generalize is&lt;&gt;() / downcast&lt;&gt;() support to all types</short_desc>
          <delta_ts>2014-09-30 14:33:04 -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>DOM</component>
          <version>528+ (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>
          <dependson>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038135</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 19:59:22 -0700</bug_when>
    <thetext>Generalize is&lt;&gt;() / downcast&lt;&gt;() support to all types, not just Nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038147</commentid>
    <comment_count>1</comment_count>
      <attachid>238907</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 21:25:39 -0700</bug_when>
    <thetext>Created attachment 238907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038148</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 21:26:49 -0700</bug_when>
    <thetext>Attachment 238907 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038151</commentid>
    <comment_count>3</comment_count>
      <attachid>238910</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 22:15:24 -0700</bug_when>
    <thetext>Created attachment 238910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038152</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 22:17:32 -0700</bug_when>
    <thetext>Attachment 238910 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038153</commentid>
    <comment_count>5</comment_count>
      <attachid>238911</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 22:18:38 -0700</bug_when>
    <thetext>Created attachment 238911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038154</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 22:22:30 -0700</bug_when>
    <thetext>Attachment 238911 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038209</commentid>
    <comment_count>7</comment_count>
      <attachid>238923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 06:48:22 -0700</bug_when>
    <thetext>Created attachment 238923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038210</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 06:49:36 -0700</bug_when>
    <thetext>Attachment 238923 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038296</commentid>
    <comment_count>9</comment_count>
      <attachid>238923</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-09-30 12:33:56 -0700</bug_when>
    <thetext>Comment on attachment 238923
Patch

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

&gt; Source/WebCore/bindings/js/JSEventListener.cpp:136
&gt; -        if (scriptExecutionContext-&gt;isWorkerGlobalScope()) {
&gt; +        if (is&lt;WorkerGlobalScope&gt;(scriptExecutionContext)) {
&gt;              bool terminatorCausedException = (exec-&gt;hadException() &amp;&amp; isTerminatedExecutionException(exec-&gt;exception()));
&gt;              if (terminatorCausedException || (vm.watchdog &amp;&amp; vm.watchdog-&gt;didFire()))

I wonder why those conditions are in that order, looks a bit backward to me.

&gt; Source/WebCore/dom/Element.h:789
&gt; +namespace WTF {
&gt; +template &lt;&gt;
&gt; +struct TypeCastTraits&lt;const WebCore::Element, const WebCore::Node&gt; {
&gt; +    static bool isOfType(const WebCore::Node&amp; node) { return node.isElementNode(); }
&gt; +};
&gt; +}

Would SPECIALIZE_TYPE_TRAITS_BEGIN work here?

&gt; Source/WebCore/dom/ScriptExecutionContext.h:-240
&gt; -#define SCRIPT_EXECUTION_CONTEXT_TYPE_CASTS(ToValueTypeName) \
&gt; -    template&lt;typename T&gt; inline ToValueTypeName* to##ToValueTypeName(const RefPtr&lt;T&gt;&amp; context) { return to##ToValueTypeName(context.get()); } \
&gt; -    TYPE_CASTS_BASE(ToValueTypeName, ScriptExecutionContext, context, context-&gt;is##ToValueTypeName(), context.is##ToValueTypeName())
&gt; -

Die preprocessor, die!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038301</commentid>
    <comment_count>10</comment_count>
      <attachid>238923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 12:46:02 -0700</bug_when>
    <thetext>Comment on attachment 238923
Patch

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

&gt;&gt; Source/WebCore/dom/Element.h:789
&gt;&gt; +}
&gt; 
&gt; Would SPECIALIZE_TYPE_TRAITS_BEGIN work here?

https://bugs.webkit.org/show_bug.cgi?id=137241 is taking care of this. It is in the commit queue. I&apos;ll rebase this patch as soon as the other one lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038314</commentid>
    <comment_count>11</comment_count>
      <attachid>238950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 13:10:06 -0700</bug_when>
    <thetext>Created attachment 238950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038315</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 13:11:19 -0700</bug_when>
    <thetext>Attachment 238950 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038324</commentid>
    <comment_count>13</comment_count>
      <attachid>238955</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-30 13:48:57 -0700</bug_when>
    <thetext>Created attachment 238955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038325</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 13:50:47 -0700</bug_when>
    <thetext>Attachment 238955 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLElement.h:159:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/mathml/MathMLElement.h:86:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038351</commentid>
    <comment_count>15</comment_count>
      <attachid>238955</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 14:32:59 -0700</bug_when>
    <thetext>Comment on attachment 238955
Patch

Clearing flags on attachment: 238955

Committed r174125: &lt;http://trac.webkit.org/changeset/174125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038352</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 14:33:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238907</attachid>
            <date>2014-09-29 21:25:39 -0700</date>
            <delta_ts>2014-09-29 22:15:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140929212539.patch</filename>
            <type>text/plain</type>
            <size>89558</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMxNjkyODlmN2E5OTk4ZjYyNGIyNWE4
ZjdiOTE4YWNjNGI4MmEzYzQuLjhjNjJhZThlZTBhMTRhMzA3OGY4ODQzYzMwNTE1MTljZTM0Y2Qz
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0
IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5oOgorICAgICAgICAoaXMpOgorICAgICAgICAoZG93bmNhc3QpOgorCiAyMDE0LTA5LTI5ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTc0MDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxYmQ4ZDdlMTBlODkxYTVl
ZGNlMGQ3MjQyZjg0ZDI1ODQxOTBiYjguLjIxNGFiODQ3YmMyNWNkN2FjZDM4NTRhZDQ2OWZjMTg0
NGVkYmRkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMDEgQEAKIDIwMTQtMDktMjkgIENocmlz
dG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8
PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisgICAgICAgIFRv
IGFjaGlldmUgdGhpcywgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAg
LSBNb3ZlIGlzPD4gLyBkb3duY2FzdDw+KCkgYW5kIE5vZGVUeXBlQ2FzdFRyYWl0cyBmcm9tIE5v
ZGUuaCB0bworICAgICAgICAgIEFzc2VydGlvbnMuaCAod2hpY2ggaXMgd2hlcmUgdGhlIFRZUEVf
Q0FTVFNfQkFTRSgpIG1hY3JvIGlzKS4gQWxzbworICAgICAgICAgIG1vdmUgdGhlbSB0byBnbG9i
YWwgc2NvcGUgaW5zdGVhZCBvZiBXZWJDb3JlIG5hbWVzcGFjZSBhcyB0aGV5IGNhbgorICAgICAg
ICAgIGJlIHVzZWQgZm9yIGNsYXNzZXMgaW4gb3RoZXIgbmFtZXNwYWNlcyAoZS5nLiBXZWJLaXQg
bmFtZXNwYWNlKS4KKyAgICAgICAgLSBSZW5hbWUgTm9kZVR5cGVDYXN0c1RyYWl0cyB0byBUeXBl
Q2FzdFRyYWl0cyBhcyBpdCBjYW4gYmUgc3BlY2lhbGl6ZWQKKyAgICAgICAgICBmb3Igbm9uLU5v
ZGVzLgorICAgICAgICAtIFNpbmNlIEMrKyBkb2VzIG5vdCBhbGxvdyB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbnMgaW4gZGlmZmVyZW50CisgICAgICAgICAgbmFtZXNwYWNlcywgSSBoYWQgdG8gbW92
ZSBhbGwgdGhlIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIHVzZXMgdG8KKyAgICAgICAgICB0
aGUgZ2xvYmFsIHNjb3BlIGFuZCB1c2UgdGhlIFdlYkNvcmU6OiBuYW1lc3BhY2UgZXhwbGljaXRs
eSBpbiB0aG9zZS4KKyAgICAgICAgICBUaGlzIGlzIGEgYml0IHVuZm9ydHVuYXRlIGJ1dCBJIGNv
dWxkbid0IGZpbmQgYSBiZXR0ZXIgd2F5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB0YWtl
cyBjYXJlIG9mIHN1cHBvcnRpbmcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvcgorICAgICAgICB0
aGUgV29ya2VyR2xvYmFsU2NvcGUgY2xhc3MsIHdoaWNoIGRvZXMgbm90IGRlcml2ZSBmcm9tIE5v
ZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBkb20v
QXR0ci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXR0cik6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzQ0RBVEFTZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzQ2hhcmFjdGVyRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudEZy
YWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZG93bmNhc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1By
b2Nlc3NpbmdJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1BzZXVkb0VsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdl
UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp2bSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2hhZG93Um9vdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1N0eWxlZEVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5w
bDoKKyAgICAgICAgKHByaW50VHlwZUhlbHBlcnMpOgorICAgICAgICAocHJpbnRUeXBlSGVscGVy
c0hlYWRlckZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgIChp
c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRG9jdW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjppc0hUTUxFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGcmFtZUVsZW1lbnRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTEZyYW1lT3duZXJFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxN
ZWRpYUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxUYWJsZUNlbGxFbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg6
CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVu
dC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW1hZ2VEb2N1bWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9MYWJlbGFibGVFbGVtZW50Lmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNMYWJlbGFibGVFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc01lZGlhRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvUGx1Z2luRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1BsdWdpbkRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5z
ZXJ0aW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1dlYlZUVEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYXRoTUxFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdBbmltYXRlRWxlbWVudEJhc2Up
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTVkdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0dyYWRpZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzU1ZHR3JhcGhpY3NFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NW
R1BvbHlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdUZXh0Q29u
dGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR1NNSUxF
bGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNr
OjpTaGFyZWRXb3JrZXJDb25uZWN0VGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpjb25uZWN0VG9JbnNwZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCisyMDE0
LTA5LTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBEb2N1bWVudAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjIxCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCBmNjcxMmZlOTZmNGI5OWE3ODRhOTgwM2JhMGUxYjIwODNlYjRmNzc3Li4xYmYxZmJlNmM3YWM3
MWI1NDQzOTU2MjNjMDE0ODQ4NjNkZTBiYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTcgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8gYWxs
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBH
ZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0eXBlcywgbm90
IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChE
T01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZSk6CisKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE1ha2UgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHdvcmsgZm9yIEhUTUxEb2N1bWVudCBhbmQgaXRzIHN1YmNsYXNzZXMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzE2OQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNjViNTY5MzZhOTFkODQ5MzVmMzU2M2FlZDc0ZWU3NWVkOTA4NmIzZS4uNWRmYmJhMWMzNThk
MTViZWRkOWFhNTBmMmIzYzlhNTk3NjRhNGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBA
CiAyMDE0LTA5LTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAg
ICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJh
bGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMsIG5vdCBqdXN0
IE5vZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NRG9jdW1lbnQubW06CisgICAgICAgICgtW1dLRE9NRG9jdW1lbnQgY3JlYXRlRWxlbWVudDpd
KToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBjcmVhdGVUZXh0Tm9kZTpdKToKKyAgICAgICAg
KC1bV0tET01Eb2N1bWVudCBib2R5XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbToKKyAgICAgICAgKC1bV0tET01UZXh0IGRhdGFdKToK
KyAgICAgICAgKC1bV0tET01UZXh0IHNldERhdGE6XSk6CisKKzIwMTQtMDktMjkgIENocmlzdG9w
aGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIERvY3VtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzcyMjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5oIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IGE0MGJjOGIwNjU2YWIw
ZDEwOWZiYmUwYWVhYTcyZDI1MmJlNDk2MmEuLmI4YWFhMmUyYTRmN2FiMjg1NDU0ZjU5NzkyNzAz
YjQ2ZGY5N2FhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTM4NCw2ICszODQsOCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCkKIAogLyogVFlQRSBDQVNUICov
CiAKKy8vIEZJWE1FOiBUaGlzIG1hY3JvIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvZGUg
YmFzZSBpcyBwb3J0ZWQgdG8gdXNpbmcKKy8vIHRoZSBuZXcgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U18qKCkgbWFjcm8uCiAjZGVmaW5lIFRZUEVfQ0FTVFNfQkFTRShUb0NsYXNzTmFtZSwgYXJndW1l
bnRUeXBlLCBhcmd1bWVudE5hbWUsIHBvaW50ZXJQcmVkaWNhdGUsIHJlZmVyZW5jZVByZWRpY2F0
ZSkgXAogaW5saW5lIFRvQ2xhc3NOYW1lKiB0byMjVG9DbGFzc05hbWUoYXJndW1lbnRUeXBlKiBh
cmd1bWVudE5hbWUpIFwKIHsgXApAQCAtNDA4LDQgKzQxMCw2MCBAQCBpbmxpbmUgY29uc3QgVG9D
bGFzc05hbWUmIHRvIyNUb0NsYXNzTmFtZShjb25zdCBhcmd1bWVudFR5cGUmIGFyZ3VtZW50TmFt
ZSkgXAogdm9pZCB0byMjVG9DbGFzc05hbWUoY29uc3QgVG9DbGFzc05hbWUqKTsgXAogdm9pZCB0
byMjVG9DbGFzc05hbWUoY29uc3QgVG9DbGFzc05hbWUmKTsKIAorI2lmZGVmIF9fY3BsdXNwbHVz
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Citz
dHJ1Y3QgVHlwZUNhc3RUcmFpdHMgeworICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUm
KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGU+CitzdHJ1Y3QgVHlwZUNh
c3RUcmFpdHM8RXhwZWN0ZWRUeXBlLCBFeHBlY3RlZFR5cGU+IHsKKyAgICBzdGF0aWMgYm9vbCBp
c09mVHlwZShFeHBlY3RlZFR5cGUmKSB7IHJldHVybiB0cnVlOyB9Cit9OworCisvLyBUeXBlIGNo
ZWNraW5nIGZ1bmN0aW9uLCB0byB1c2UgYmVmb3JlIGNhc3Rpbmcgd2l0aCBkb3duY2FzdDw+KCku
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5s
aW5lIGJvb2wgaXMoQXJnVHlwZSYgc291cmNlKQoreworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6
aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5
cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhwZWN0ZWRUeXBl
LCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoc291cmNlKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4KK2lubGluZSBib29sIGlzKEFyZ1R5
cGUqIHNvdXJjZSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2Fy
eSB0eXBlIGNoZWNrIik7CisgICAgcmV0dXJuIFR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVk
VHlwZSwgY29uc3QgQXJnVHlwZT46OmlzT2ZUeXBlKCpzb3VyY2UpOworfQorCisvLyBTYWZlIGRv
d25jYXN0aW5nIGZ1bmN0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPgoraW5saW5lIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxT
b3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGUgZG93bmNhc3QoU291
cmNlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdl
dCwgU291cmNlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSBjYXN0Iik7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaXM8VGFyZ2V0Pihzb3VyY2UpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46
OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZT4oc291cmNlKTsKK30KK3RlbXBs
YXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBpbmxpbmUgdHlwZW5hbWUgc3Rk
Ojpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQq
LCBUYXJnZXQqPjo6dHlwZSBkb3duY2FzdChTb3VyY2UqIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNz
YXJ5IGNhc3QiKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc291cmNl
IHx8IGlzPFRhcmdldD4oKnNvdXJjZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRh
cmdldCosIFRhcmdldCo+Ojp0eXBlPihzb3VyY2UpOworfQorCisvLyBBZGQgc3VwcG9ydCBmb3Ig
dHlwZSBjaGVja2luZyAvIGNhc3RpbmcgdXNpbmcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGhlbHBl
cnMgZm9yIGEgc3BlY2lmaWMgY2xhc3MuCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oQ2xhc3NOYW1lKSBcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+IFwKKyAg
ICBjbGFzcyBUeXBlQ2FzdFRyYWl0czxjb25zdCBDbGFzc05hbWUsIEFyZ1R5cGU+IHsgXAorICAg
IHB1YmxpYzogXAorICAgICAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBzb3VyY2Up
IHsgcmV0dXJuIGlzVHlwZShzb3VyY2UpOyB9IFwKKyAgICBwcml2YXRlOgorCisjZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkgXAorICAgIH07CisKKyNlbmRpZiAvLyBfX2NwbHVz
cGx1cworCiAjZW5kaWYgLyogV1RGX0Fzc2VydGlvbnNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjZTAxMDA3YTdkMDAwNzg4
ZTFjZjFiYTYxNDg1M2NkNzY2N2ZjMmU5Li4wMTI4ZjUwZDI5MjlmNTEyNWY4YjBiMTMyZGViYWQ3
ZWVhOGM2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEluZGV4ZWREQkRh
dGFiYXNlUGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwogICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0dGluZ3MoKS5pbmRleGVkREJE
YXRhYmFzZVBhdGgoKTsKICAgICB9Ci0gICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0
aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPmdyb3VwU2V0dGluZ3MoKTsKKyAg
ICBjb25zdCBHcm91cFNldHRpbmdzKiBncm91cFNldHRpbmdzID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpjb250ZXh0KS5ncm91cFNldHRpbmdzKCk7CiAgICAgaWYgKGdyb3VwU2V0dGlu
Z3MpCiAgICAgICAgIHJldHVybiBncm91cFNldHRpbmdzLT5pbmRleGVkREJEYXRhYmFzZVBhdGgo
KTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZS5jcHAKaW5kZXggOTFiMDQzYjEzZjFmNTQ3MDQzY2Y2MmRlOWUzZDg2NDE4N2ZjMmYxZi4u
YTNjMTI2NzIxOGY4MjI1MjA5M2Q0MjE4ZjA3NjU1ZTA3YTZmNTFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZSogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6
OmZyb20oU2NyaXB0RQogICAgIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqPihT
dXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9tKGNvbnRleHQsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAgICAgICAgU3RyaW5nIGRhdGFi
YXNlRGlyZWN0b3J5SWRlbnRpZmllcjsKLSAgICAgICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3Jv
dXBTZXR0aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPmdyb3VwU2V0dGluZ3Mo
KTsKKyAgICAgICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuZ3JvdXBTZXR0aW5ncygpOwogICAgICAgICBp
ZiAoZ3JvdXBTZXR0aW5ncykKICAgICAgICAgICAgIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmll
ciA9IGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNlUGF0aCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxNjU0ZGQ1NjBlMmM5NTA5OTIzZDY2OWZlZTZmOTg5
YjE3MDc1NDQ1Li44MzlmYTg3MjM2NmJkZTZlNDM3MDYwNTEyYWQyNjFmNGNkMDgyNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU1LDEzICs1NSwxMyBAQCBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6Y3JlYXRlKFNjcmlwdAogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoY2xpZW50
KTsKIAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAg
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29w
ZShjb250ZXh0KTsKLSAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlckdsb2Jh
bFNjb3BlLT50aHJlYWQoKS5ydW5Mb29wKCk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkgeworICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOworICAgICAgICBXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9vcCgp
OwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1vZGU7CiAgICAgICAgIG1vZGUuYXBwZW5kTGl0ZXJh
bCh3ZWJTb2NrZXRDaGFubmVsTW9kZSk7CiAgICAgICAgIG1vZGUuYXBwZW5kTnVtYmVyKHJ1bkxv
b3AuY3JlYXRlVW5pcXVlSWQoKSk7Ci0gICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUudG9T
dHJpbmcoKSk7CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6Y3JlYXRlKCZ3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLnRvU3RyaW5nKCkpOwog
ICAgIH0KIAogICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLCBjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDk5YzQwMmMzMjdlN2Y5N2NhY2U5ZWM2Mzk1
YzVkZWRlZGVkMDg1ZTQuLmQ0ZWRkNjkxZjkxY2IwMzk5M2FmOTNkMDQzMjY3Y2JiZTRhNTJjYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKQEAgLTEwOCw4ICsxMDgsOCBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9i
amVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25DbwogICAgIGlmIChp
czxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAgIHJldHVybiB0b0pT
RE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSwgZXhlYyk7CiAKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKQotICAgICAgICByZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAg
IGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI1LDggKzEyNSw4IEBA
IEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgaWYgKGlzPERvY3VtZW50PihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3QoZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3b3JsZCk7CiAKLSAgICBpZiAo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICBy
ZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+c2NyaXB0
KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT53b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAKaW5kZXggMmQyYTc1NDZkZjIxYTQ5MzNlYWZiYWMyYzQxNGI2MTdiNDljYmZk
NS4uNWM3NmI2ZDQ1ZmIyZWRkNDNmODg2MDExZGJmMGNjZjJlZjYyMjI0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMzEsMTAgKzEz
MSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+
c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCi0gICAgICAgIGlmIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewogICAgICAgICAgICAgYm9v
bCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjLT5leGNlcHRpb24oKSkpOwogICAgICAg
ICAgICAgaWYgKHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gfHwgKHZtLndhdGNoZG9nICYmIHZt
LndhdGNoZG9nLT5kaWRGaXJlKCkpKQotICAgICAgICAgICAgICAgIHRvV29ya2VyR2xvYmFsU2Nv
cGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsK
KyAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChleGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGQxMWU0NTRkYmE5N2M2MmUyMWUwNmU0NWRhYTEwYjhk
ZmMzY2Y4NjcuLmExYjUxYWEzNWYyNzM1OTMyMjkxMDI5MmZhN2M2MWJjODZmNzY1MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCiAgICAgICAg
IGV4ZWN1dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICBlbHNlCi0gICAgICAg
IGV4ZWN1dGUodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSk7CisgICAgICAgIGV4ZWN1dGUo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKIH0KIAogdm9pZCBTY2hlZHVs
ZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oCmluZGV4IDFmNmJjZTQzMTBiZmU0MzU1MDc3YzlhZWYzNDljNDYyOTEwYjU4
MzQuLmE3YTg5NDU0NzliZDU1MjNhYjM0MjczNWU3NzIxMzdjNDBlMGRhYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
aApAQCAtOTksMTAgKzk5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pZ25vcmVDaGls
ZHJlbkNoYW5nZWQ7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEF0dHIpCi0g
ICAgc3RhdGljIGJvb2wgaXNBdHRyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNB
dHRyaWJ1dGVOb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkF0dHIpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKwogI2VuZGlmIC8vIEF0dHJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCmlu
ZGV4IDZjZDRmNjhjNjBiOWQ2NWU5M2RlN2E5MTEwODkyNzZkYTYyZTk1OWEuLjdlOTgyM2UyZmE3
MzhhNzBhZTU2MWVkMDliY2M5ZTAzNmI3MmFkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
ZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihDREFUQVNlY3Rpb24pCi0gICAgc3RhdGljIGJvb2wgaXND
REFUQVNlY3Rpb24oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09
IE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6Q0RBVEFTZWN0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gV2ViQ29yZTo6
Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CisKICNlbmRpZiAvLyBDREFUQVNlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
aW5kZXggMDE2ZWRkNWFmMmZmODE1NDk2N2FiNjk5OTA0OWVkZDdkZWIxODVkYi4uMzE3ZDkzMWI0
Zjc1MjI1NmNjYmUwNjM4ZmI2MDBiMDQ0ODk1YzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCkBAIC03NiwxMCArNzYsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kYXRhOwog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDaGFyYWN0ZXJEYXRhKQotICAgIHN0
YXRpYyBib29sIGlzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzQ2hhcmFjdGVyRGF0YU5vZGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIENoYXJhY3RlckRhdGFf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmgKaW5kZXggMGE3ZGVjZWM5YTkyZGM5ZGUzMmM3MTFhNzI0YmExMGNl
NmI3MGEyOC4uYzFhNDlkNTlhOGE5YmJkOWU3OWE5ZGRkMGIyZjQ5YjFiN2I4M2ZlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tbWVudC5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKENvbW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNDb21t
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpD
T01NRU5UX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNv
bW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBXZWJDb3JlOjpOb2RlOjpDT01NRU5UX05PREU7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIENvbW1lbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNDJkNDQyYzYyOGFmMmU3NTNhYmRlNTJjZjdhZWUxYmI3
ODRkMDRmLi45MmRkZmMyMDAyYTY1ODE5NjkzMzVkNzFkMDkxNmRkMDk3YmZmNjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTc0MCwxMyArMTc0MCwxMyBAQCBpbmxpbmUgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAKIEVsZW1l
bnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVu
dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0
LmlzRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3VtZW50Tm9kZSgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4g
Y29udGV4dC5pc0RvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3VtZW50Tm9kZSgpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKIG5hbWVzcGFjZSBXVEYgewogaW5saW5lIFdlYkNv
cmU6OkRvY3VtZW50KiBnZXRQdHIoV2ViQ29yZTo6RG9jdW1lbnQmIHApIHsgcmV0dXJuICZwOyB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAppbmRleCBhYzdkNmY2NWJmNDVi
YmU0OWUxMGMyODg5Y2U0MjE0MWQ4ZGVhMTk0Li42N2ViZmMzZTk4NGI2ODA1ZDdkYjBlZmZiMzQz
NWRjMWJkZWI4NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTUy
LDEwICs1MiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2Vk
KE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oRG9jdW1lbnRGcmFnbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0RvY3VtZW50RnJhZ21l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3VtZW50RnJhZ21lbnQoKTsg
fQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci19IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdtZW50KCk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgK
aW5kZXggZjRlZjc5Y2UwZWQ1YTQwNWRhZDI5NWZkMDM4M2E0ZGUzOWRiMmZiMi4uYTliN2E2YTUy
OWE3YTdiZWRkMTFhOTIwYjMzNGRjMDZlODAxZjkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5
cGUuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3Vic2V0Owog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihEb2N1bWVudFR5cGUpCi0gICAgc3Rh
dGljIGJvb2wgaXNEb2N1bWVudFR5cGUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5u
b2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RG9jdW1lbnRUeXBlKQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkg
PT0gV2ViQ29yZTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNTIzOTM1NTQ0YWU2
NGRlZTQxNTA4NjFiOWZiY2M4NjZiOTExNTkzOC4uM2QzOGUzN2U4MDVkODViODk4NWI0MzM5NzZl
ZGJhNTZhN2UxZDFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NzAsMTEgKzY3MCw2IEBAIGlu
bGluZSBib29sIGlzRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxl
bWVudE5vZGUoKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoRWxlbWVudCkKIAotdGVtcGxhdGUgPD4K
LXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgRWxlbWVudCwgY29uc3QgTm9kZT4gewot
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
RWxlbWVudE5vZGUoKTsgfQotfTsKLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzQXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhpcykt
Pmhhc0F0dHJpYnV0ZXMoKTsKQEAgLTc4Niw0ICs3ODEsOSBAQCBpbmxpbmUgVW5pcXVlRWxlbWVu
dERhdGEmIEVsZW1lbnQ6OmVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR5cGVDYXN0VHJhaXRzPGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6Ok5vZGU+IHsKKyAgICBzdGF0aWMgYm9vbCBp
c09mVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVu
dE5vZGUoKTsgfQorfTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRl
eCBmMjRkNmM4YTc1ZmRlMWEzODBiZGE2OTMyOTgwN2MwMTY5MjliNzY0Li41OGJlYjdmOWFhNDZk
Njc2OTYyOWI2NGNiZGVjZjQ0OWVhNDE4NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2Vz
KCkKICAgICB3aGlsZSAobV9lbnRhbmdsZWRDaGFubmVsICYmIG1fZW50YW5nbGVkQ2hhbm5lbC0+
dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUobWVzc2FnZSwgY2hhbm5lbHMpKSB7CiAKICAgICAgICAg
Ly8gY2xvc2UoKSBpbiBXb3JrZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4
dCBtZXNzYWdlIGZyb20gZGlzcGF0Y2hpbmcuCi0gICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiB0b1dvcmtlckdsb2JhbFNjb3BlKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmlzQ2xvc2luZygpKQorICAgICAgICBpZiAoaXM8V29y
a2VyR2xvYmFsU2NvcGU+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmlzQ2xvc2luZygpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9y
dEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFdURjo6bW92ZShjaGFubmVscykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggN2M4YTlh
Njg1ZTM5N2IyY2RiZDc5NjQ0ZGEwNzQ2ZWY2NTJkYjEwNy4uM2IyMDI0MzJlMDNlY2VlZmRhZmM4
YzM3N2RjOWI3NTA3ZTkwMzFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03MzksNTggKzczOSw2IEBAIGlu
bGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCkg
Y29uc3QKICAgICByZXR1cm4gcGFyZW50Tm9kZSgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IE5vZGVUeXBlQ2FzdFRyYWl0
cyB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmKTsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFeHBlY3RlZFR5cGU+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRzPEV4cGVjdGVk
VHlwZSwgRXhwZWN0ZWRUeXBlPiB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEV4cGVjdGVkVHlw
ZSYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLS8vIFR5cGUgY2hlY2tpbmcgZnVuY3Rpb24gZm9y
IE5vZGVzLCB0byB1c2UgYmVmb3JlIGNhc3Rpbmcgd2l0aCBkb3duY2FzdDw+KCkuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotaW5saW5lIGJvb2wg
aXMoQXJnVHlwZSYgbm9kZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBlIGNoZWNrIik7
Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUsIGNvbnN0
IEFyZ1R5cGU+Ojppc1R5cGUobm9kZSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3Rl
ZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpcyhBcmdUeXBlKiBub2RlKQot
ewotICAgIEFTU0VSVChub2RlKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBlIGNoZWNrIik7
Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUsIGNvbnN0
IEFyZ1R5cGU+Ojppc1R5cGUoKm5vZGUpOwotfQotCi0vLyBEb3duY2FzdGluZyBmdW5jdGlvbnMg
Zm9yIE5vZGUgdHlwZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4KLWlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNl
Pjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSYg
c291cmNlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNv
dXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1
ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7Ci19Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1lIHN0ZDo6Y29u
ZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0KiwgVGFy
Z2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCi17Ci0gICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSBj
YXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNvdXJjZSB8fCBp
czxUYXJnZXQ+KCpzb3VyY2UpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3Rk
Ojpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQq
LCBUYXJnZXQqPjo6dHlwZT4oc291cmNlKTsKLX0KLQotLy8gQWRkIHN1cHBvcnQgZm9yIHR5cGUg
Y2hlY2tpbmcgLyBjYXN0aW5nIHVzaW5nIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBoZWxwZXJzIGZv
ciBhIHNwZWNpZmljIGNsYXNzLgotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KENsYXNzTmFtZSkgXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPiBcCi0gICAgY2xh
c3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNzTmFtZSwgQXJnVHlwZT4geyBcCi0gICAg
cHVibGljOiBcCi0gICAgICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBub2RlKSB7IHJl
dHVybiBpcyMjQ2xhc3NOYW1lKG5vZGUpOyB9IFwKLSAgICBwcml2YXRlOgotCi0jZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkgXAotICAgIH07Ci0KIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSByZW1vdmVkIGFuZCBhbGwgdXNlcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTXyooKS4KICNkZWZpbmUgTk9ERV9UWVBFX0NBU1RTKFRvQ2xhc3NO
YW1lKSBcCiAgICAgVFlQRV9DQVNUU19CQVNFKFRvQ2xhc3NOYW1lLCBOb2RlLCBub2RlLCBXZWJD
b3JlOjppcyMjVG9DbGFzc05hbWUoKm5vZGUpLCBXZWJDb3JlOjppcyMjVG9DbGFzc05hbWUobm9k
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggYjMy
NWMzOGRhZjU0MGEwOWU4ZmJkYjUzOGZjZTdiZjAzZWU4MDM5YS4uM2Q3MjNhYWY4MWU4OGFjMWE2
ZDQzZWNiODQ0N2Y3YTYxNzk4Y2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaApAQCAtOTEsMTAgKzkxLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHJvY2Vzc2luZ0luc3RydWN0aW9uKQotICAg
IHN0YXRpYyBib29sIGlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05P
REU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBXZWJDb3JlOjpO
b2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAppbmRleCAwYTkw
YTQ1ZTYwMTk5MmNlNDczMDA5MjhkMjQ4MWU0ZDU1M2MxZGZiLi40YmU1Yzk2OTEwMzM5Yjk2N2M3
NmFjY2Y2NTkzYmU0ZGExNzk5MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKQEAg
LTc3LDEwICs3NywxMCBAQCBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5k
aXNwbGF5KCkgIT0gTk9ORSAmJiAoc3R5bGUtPmNvbnRlbnREYXRhKCkgfHwgc3R5bGUtPmhhc0Zs
b3dGcm9tKCkpOwogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFBzZXVkb0VsZW1l
bnQpCi0gICAgc3RhdGljIGJvb2wgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UHNldWRvRWxlbWVudCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1Bz
ZXVkb0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1
MGE4NGM3Nzk0ODFiOThlN2I3ZmExM2M2YWFiZWVhY2I5ZGJmMDY4Li41NDNjYzViYWFmYWY5YTgw
OGU5MjAyNzA4NjM5MTVkYmMxNTZkNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNTgsMTYgKzE1OCwxNiBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogCiB2b2lkIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2Fn
ZVBvcnQpCiB7Ci0gICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0g
ICAgICAgIHx8IChpc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHRv
V29ya2VyR2xvYmFsU2NvcGUodGhpcyktPnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICBBU1NF
UlQoKGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHx8IChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKIAogICAg
IG1fbWVzc2FnZVBvcnRzLmFkZCgmbWVzc2FnZVBvcnQpOwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9y
dCkKIHsKLSAgICBBU1NFUlQoKGlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAg
ICAgfHwgKGlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3Jr
ZXJHbG9iYWxTY29wZSh0aGlzKS0+dGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgo
aXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogCiAgICAgbV9t
ZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CkBAIC00NDUsMTAgKzQ0NSwxMCBA
QCBkb3VibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dGltZXJBbGlnbm1lbnRJbnRlcnZhbCgp
IGNvbnN0CiAKIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKIHsKLSAgICAg
aWYgKGlzRG9jdW1lbnQoKSkKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAgICAg
cmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25WTSgpOwogCi0gICAgcmV0dXJuIHRvV29ya2VyR2xv
YmFsU2NvcGUoKnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIHJldHVybiBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogfQogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IGRhZGQ5YWExOTY2YTE5Nzk4NTFhZmMwNjEwYzE5Y2VmZjlmMTJlZTkuLmZjZTE4MDQ2
ZjE0ZWY5MjExY2ViYjdiNGU0OTJjYWE0NDdiZjIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjM0LDEwICsyMzQsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi0jZGVmaW5lIFNDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9UWVBFX0NBU1RT
KFRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUb1Zh
bHVlVHlwZU5hbWUqIHRvIyNUb1ZhbHVlVHlwZU5hbWUoY29uc3QgUmVmUHRyPFQ+JiBjb250ZXh0
KSB7IHJldHVybiB0byMjVG9WYWx1ZVR5cGVOYW1lKGNvbnRleHQuZ2V0KCkpOyB9IFwKLSAgICBU
WVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVOYW1lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b250ZXh0LCBjb250ZXh0LT5pcyMjVG9WYWx1ZVR5cGVOYW1lKCksIGNvbnRleHQuaXMjI1RvVmFs
dWVUeXBlTmFtZSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDcwZDEyZjg5
OThiY2RjNWFlODZhOTM2NjgwZDA3YjcyNmY1MGJjZjIuLjg5MDNkZGYzYjEwMDhiZWE0MGZhZDEy
MjkyN2RmYzAxYjQ5ZDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtOTUsMTAgKzk1
LDYgQEAgaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiB0cmVlU2NvcGUoKS5mb2N1c2VkRWxlbWVudCgpOwogfQogCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFNoYWRvd1Jvb3QpCi0gICAgc3RhdGljIGJvb2wgaXNTaGFkb3dS
b290KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTaGFkb3dSb290KCk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6OnNo
YWRvd1Jvb3QoKSBjb25zdAogewogICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQpAQCAtMTE5LDYg
KzExNSwxMCBAQCBpbmxpbmUgYm9vbCBoYXNTaGFkb3dSb290UGFyZW50KGNvbnN0IE5vZGUmIG5v
ZGUpCiAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZSgpICYmIG5vZGUucGFyZW50Tm9kZSgpLT5p
c1NoYWRvd1Jvb3QoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFkb3dSb290KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzU2hhZG93Um9vdCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDA5YmMwMzgxNTYxODIz
MDQ0ZWE2Y2E2OTFhOTVhNTlkOWQ5OWM3Mi4uM2Y3MGYzZGQzMjU5M2NmNmUzM2JkMmZkYTEwYzQ3
Njg5NGMwYjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0xMDYsMTAgKzEw
NiwxMCBAQCBpbmxpbmUgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBTdHlsZWRFbGVtZW50OjpwcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPnByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oU3R5bGVkRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1N0eWxlZEVsZW1lbnQoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1N0eWxlZEVsZW1lbnQoKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vbmFtZXNw
YWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNTdHlsZWRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCA4Yjg0OGFiNzdhYmVjNGZiMjEyMjBmZjE0MDc4
OTNkNDUxOTNhZWQxLi42MGRlZWY5NDRlZDAzOWZjNzRhN2UwNTkzMTZkOGU2NjQwMGViMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmgKQEAgLTc0LDEwICs3NCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRleHQpCi0gICAgc3RhdGljIGJvb2wgaXNUZXh0
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgpOyB9Ci1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0KQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzVGV4dE5vZGUo
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gVGV4dF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDkyYTk3OTZlNDY3NzM1Zjc4OWNhYjk4NzAyZTIy
NWNiOGU5ZGMzYjYuLjBiYmFkNzkxZGI5MTFmMzNhOGUwODc3YzExZjFmYTFmZDRiMjBlMTQgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02MzksMjQgKzYzOSwyNiBAQCBzdWIgcHJpbnRU
eXBlSGVscGVycwogICAgICAgICBuZXh0IGlmICR0YWdDb3VudCA+IDE7CiAgICAgICAgIG15ICRu
YW1lID0gJGNsYXNzVG9UYWdzeyRjbGFzc31bMF07CiAgICAgICAgIHByaW50IEYgPDxFTkQKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzICRjbGFzczsKK30KIHRlbXBsYXRlIDx0eXBlbmFtZSBB
cmdUeXBlPgotY2xhc3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0ICRjbGFzcywgQXJnVHlwZT4g
eworY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6JGNsYXNzLCBBcmdUeXBlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJu
IGNoZWNrVGFnTmFtZShub2RlKTsgfQorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUm
IG5vZGUpIHsgcmV0dXJuIGNoZWNrVGFnTmFtZShub2RlKTsgfQogcHJpdmF0ZToKIEVORAogICAg
ICAgIDsKICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIgJiYgJHBh
cnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewogICAgICAg
ICAgICBwcmludCBGIDw8RU5ECi0gICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IEhU
TUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3duRWxlbWVu
dCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7
bmFtZX1UYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBjaGVja1RhZ05hbWUoZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShj
b25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNI
VE1MVW5rbm93bkVsZW1lbnQoKSAmJiBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQorICAgIHN0YXRpYyBib29sIGNo
ZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3Jl
OjpIVE1MRWxlbWVudD4obm9kZSkgJiYgY2hlY2tUYWdOYW1lKGRvd25jYXN0PFdlYkNvcmU6OkhU
TUxFbGVtZW50Pihub2RlKSk7IH0KIEVORAogICAgICAgICAgICA7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShj
b25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7
IH0KLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRh
Zyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFn
TmFtZShXZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9
CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZShXZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9
TmFtZXM6OiR7bmFtZX1UYWcpOyB9CiBFTkQKICAgICAgICAgICAgOwogICAgICAgIH0KQEAgLTY3
OCwxMSArNjgwLDkgQEAgc3ViIHByaW50VHlwZUhlbHBlcnNIZWFkZXJGaWxlCiAgICAgcHJpbnQg
RiAiI2lmbmRlZiAiLiRwYXJhbWV0ZXJze25hbWVzcGFjZX0uIkVsZW1lbnRUeXBlSGVscGVyc19o
XG4iOwogICAgIHByaW50IEYgIiNkZWZpbmUgIi4kcGFyYW1ldGVyc3tuYW1lc3BhY2V9LiJFbGVt
ZW50VHlwZUhlbHBlcnNfaFxuXG4iOwogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiIi4kcGFyYW1l
dGVyc3tuYW1lc3BhY2V9LiJOYW1lcy5oXCJcblxuIjsKLSAgICBwcmludCBGICJuYW1lc3BhY2Ug
V2ViQ29yZSB7XG5cbiI7CiAKICAgICBwcmludFR5cGVIZWxwZXJzKCRGLCBcJWFsbFRhZ3MpOwog
Ci0gICAgcHJpbnQgRiAifVxuXG4iOwogICAgIHByaW50IEYgIiNlbmRpZlxuIjsKIAogICAgIGNs
b3NlIEY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCAwYTliNWEyYmYwZDViMWM1
ODBhNGUzOWRiM2FhN2UwYmY4MGZiYTFlLi5hNjVjMzc5MDJiZjYxZTkwZDdiZDI1MTIyNzg1MzQy
N2I0OWJkYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTk3LDExICs5Nywx
MSBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX3dpbmRvd05hbWVkSXRlbTsK
IH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTERvY3VtZW50KQotICAgIHN0
YXRpYyBib29sIGlzSFRNTERvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1
cm4gZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTERv
Y3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERvY3VtZW50Pihub2RlKSAmJiBp
c0hUTUxEb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1l
bnQuaXNIVE1MRG9jdW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYg
aXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEhUTUxEb2N1bWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgKaW5kZXggNjhmMjMxYjdjN2Q3ODQ0NGFjYzFhZDJhZjdiY2FhODE2YjZk
ODg0YS4uODEyMzQ3OGRkOWUwYWVhNDM5NzU2NzM5ZWFkMDU2NWE1YjFiOWRiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTQ2LDEwICsxNDYsNiBAQCBpbmxpbmUgSFRNTEVsZW1l
bnQ6OkhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudAogICAgIEFTU0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wg
aXNIVE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1l
bnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUgYm9vbCBOb2Rl
OjpoYXNUYWdOYW1lKGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAg
IHJldHVybiBpczxIVE1MRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50Pigq
dGhpcykuaGFzVGFnTmFtZShuYW1lKTsKQEAgLTE1Nyw2ICsxNTMsMTAgQEAgaW5saW5lIGJvb2wg
Tm9kZTo6aGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OkhUTUxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRUeXBlSGVscGVycy5o
IgogCiAjZW5kaWYgLy8gSFRNTEVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBkOTIwODNhMDY3NmE1YThlZTk1ZDc2ZjAxN2Q0NTJk
NTA4ZDRlNDBjLi41M2NmMWE3MzdhMDQ2OTM5YmFlODBlYjUyZmRjZWM3OWNjYmI3Mjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTkwLDEy
ICsxOTAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXV0b2ZvY3VzZWQgOiAxOwogfTsK
IAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRm9ybUNvbnRyb2xFbGVtZW50KQot
ICAgIHN0YXRpYyBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLmlzRm9ybUNvbnRy
b2xFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQo
Y29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChub2RlKS5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oCmluZGV4IGYzODE1M2Y4YjExMWUzZmViMTUwMzU5YWJiNDdhMWJkMjBkZjM5
MjMuLjNjYTdhYjEzZTMxNmRhZjZmNWNjZjFkNjdkY2U4ZjAzYjBjN2IzYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTc2LDExICs3NiwxMSBAQCBw
cml2YXRlOgogICAgIGludCBtX21hcmdpbkhlaWdodDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oSFRNTEZyYW1lRWxlbWVudEJhc2UpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1M
RnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXM8
SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNIVE1MRnJhbWVFbGVt
ZW50QmFzZShkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZSkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGlzPFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPFdlYkNvcmU6OkhU
TUxJRnJhbWVFbGVtZW50PihlbGVtZW50KTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4o
bm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEhUTUxGcmFtZUVsZW1l
bnRCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmlu
ZGV4IDA2YTQ1Mzc0NThhODk2Njg1NDQwY2ViOWIxYzk1YTA3NzE1YWY1ODkuLjljM2IyN2U4ZDRh
ZjQwZDdjMmUwZDU3ZjUwMmE4Yzg4MThhOGQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNjksMTEgKzY5LDYgQEAgcHJpdmF0ZToKICAgICBT
YW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKEhUTUxGcmFtZU93bmVyRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGcmFt
ZU93bmVyRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRnJhbWVPd25l
ckVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0KIGNsYXNzIFN1
YmZyYW1lTG9hZGluZ0Rpc2FibGVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcihDb250YWluZXJOb2RlJiByb290KQpAQCAtMTAxLDQgKzk2LDggQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0ZyYW1lT3du
ZXJFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8v
IEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGQzN2ExNDEwZmNkOTZjMDc3ZmEzNDY5MGEwYTUyMDhjMGZkNWVmYjguLjhmNTFl
NjVlMTllODg0OTAyY2NiMDYyMTExMGZlYjczZDEwNzU0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC05MDksMTEgKzkwOSw2IEBAIHN0cnVjdCBWYWx1ZVRvU3Ry
aW5nPFRleHRUcmFja0N1ZSo+IHsKICNlbmRpZgogI2VuZGlmCiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oSFRNTE1lZGlhRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxNZWRp
YUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc01lZGlh
RWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MTWVkaWFFbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzSFRNTE1lZGlhRWxl
bWVudCh0b0VsZW1lbnQobm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
ICNpZm5kZWYgTkRFQlVHCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgVmFsdWVUb1N0cmluZzxNZWRpYVRp
bWU+IHsKQEAgLTkyNCw3ICs5MTksMTIgQEAgc3RydWN0IFZhbHVlVG9TdHJpbmc8TWVkaWFUaW1l
PiB7CiB9OwogI2VuZGlmCiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnRO
b2RlKCkgJiYgaXNUeXBlKHRvRWxlbWVudChub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKIAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaAppbmRleCAwZjU3ZjQ2YTFjNzEwYTg3YTUzZGVhNTRjMjNjYzIyZWQ4ODkxZDMwLi5m
OGJjN2Y5YzYzMDY2YTM0Y2JkNWI0OTY4YzkxNmZiNjI0NWY2NjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBwcml2YXRlOgog
ICAgIERpc3BsYXlTdGF0ZSBtX2Rpc3BsYXlTdGF0ZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oSFRNTFBsdWdJbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MUGx1
Z0luRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxlbWVu
dCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5pc1BsdWdpbkVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSFRNTFBsdWdJbkVsZW1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCAwNzg2ZjIxMmFiYTYwNjc1
MGY5ZjVjZmJhMThiYzQwNmQ3MzdiZjA2Li44NmRjYzg2OTI4ZWFhNDY2ZTEyMWJjOTY3NTVhMzM0
MzMwMDFhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaApAQCAtMTU3LDExICsxNTcsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGx1Z0luRGlt
ZW5zaW9uc1NwZWNpZmllZDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRN
TFBsdWdJbkltYWdlRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFBsdWdJbklt
YWdlRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MUGx1Z0luRWxlbWVu
dD4obm9kZSkgJiYgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGRvd25jYXN0PEhUTUxQbHVnSW5F
bGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzUGx1
Z0luSW1hZ2VFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+KG5v
ZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aAppbmRleCAwMzZiZWI2YWJjZGYyOTFiY2M2MzhmYTA1N2IxZjMzODc0YWJlOGM2Li4zY2RiOWFi
ZmRmYzRlMWJhMTA4ZTRhN2QzMzRiZjkxMzNiMjIyZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
SFRNTFRhYmxlQ2VsbEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVDZWxsRWxl
bWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRo
VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVu
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRk
VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0aFRhZyk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJD
b3JlOjpIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5oCmluZGV4IDY4NDU3MDc3OTE3MmVkZTQ4MTIzMzQxOGI0ZmYzZTYxNDU5YTE1YzIuLjUwNWNj
ZGUyMjhjOWU4MzNhNTliM2FjNmZiMTkyZTE4YjJlOTI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNI
VE1MVGFibGVTZWN0aW9uRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp0Ym9keVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBp
c0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
fSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1M
VGFibGVTZWN0aW9uRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnRoZWFkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6
SFRNTE5hbWVzOjp0Zm9vdFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxO
YW1lczo6dGJvZHlUYWcpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBp
c1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAzMzM3ZmQ5Mzc0M2NjOTVmNWFhOWMz
NWEyMWZkYWY1MjZlNTY1Yjc2Li5iZDYwYWZmMTljZDlkZWY5ZTUyNzIwZGE1MjY2NTE4NDIyZDk2
OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCkBAIC0xNTEsMTMgKzE1MSwxMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGNoYXIg
bV9pc1BsYWNlaG9sZGVyVmlzaWJsZSA6IDE7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4g
ZWxlbWVudC5pc1RleHRGb3JtQ29udHJvbCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxl
bWVudE5vZGUoKSAmJiBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KHRvRWxlbWVudChub2Rl
KSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYpOwogCi19
IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzVGV4dEZvcm1Db250cm9sKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkg
JiYgaXNUeXBlKHRvRWxlbWVudChub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCmluZGV4IDc4MWQwMmNh
MzYzZDhmZmE0NWRkZjI3ODdmN2E1ODUxYTIzYzk5NDguLmUxZTlkZTI3ZGZkOGFhOGEyMzg5ZjA3
ZGRhNjcyZTc4ZDJjZjczM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCkBAIC04
MiwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2hyaW5rSW1hZ2U7CiB9
OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEltYWdlRG9jdW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNJbWFnZURvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1
cm4gZG9jdW1lbnQuaXNJbWFnZURvY3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0ltYWdl
RG9jdW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYm
IGlzSW1hZ2VEb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW1hZ2VEb2N1bWVudCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBk
b2N1bWVudC5pc0ltYWdlRG9jdW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9k
ZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmIC8vIEltYWdlRG9jdW1lbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAppbmRleCAyNzRjMmFiOTkwNjAwODlhYzc5
MTlmYzE3ZGE2YWI0ZDY4ZGE4YWI3Li5jMmE2MzFhMWU1MDY2Y2U5ODc4NGJhZjlkMDMxNWRlN2Q4
NjFiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaApAQCAtNTAsMTEg
KzUwLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzTGFiZWxhYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihMYWJlbGFibGVFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzTGFiZWxhYmxl
RWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0xh
YmVsYWJsZSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc0xhYmVsYWJsZUVs
ZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6TGFiZWxhYmxlRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1l
bnQuaXNMYWJlbGFibGUoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYg
aXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5oCmluZGV4IGFiNWVkMDgxYTZhNDMxODRkODc5ZGUwN2RiYTYwMjAwZGNjYzRlMGQuLjAzZWQ4
MWI1MDhlZTEwNmI5MzlkYmU5MzRjNWI2NzgxNTA2YjgwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5oCkBAIC01NiwxMiArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9v
dXRnb2luZ1JlZmVycmVyOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihNZWRp
YURvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFEb2N1bWVudChjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzTWVkaWFEb2N1bWVudCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgaXNNZWRpYURvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PERvY3VtZW50Pihub2RlKSAmJiBpc01lZGlhRG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5v
ZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhRG9j
dW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNNZWRpYURvY3VtZW50KCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2Vi
Q29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVu
dD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKaW5kZXggMTg4MzRkNjhlMGEzNWE1
ZTNmMTY2MDA4YWJmYmZjMWFhMmNhN2I1Yy4uNmZjNmViY2Y4MTlhMGNiMDU2ZGQ0OGRlMWRjNzll
ZmQ3N2Q5MWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaApAQCAtNjEsMTEg
KzYxLDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdp
bkVsZW1lbnQ7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFBsdWdpbkRvY3Vt
ZW50KQotICAgIHN0YXRpYyBib29sIGlzUGx1Z2luRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1BsdWdpbkRvY3VtZW50KCk7IH0KLSAgICBzdGF0
aWMgYm9vbCBpc1BsdWdpbkRvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERv
Y3VtZW50Pihub2RlKSAmJiBpc1BsdWdpbkRvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2Rl
KSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpQbHVnaW5Eb2N1
bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1BsdWdpbkRvY3VtZW50KCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2Vi
Q29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVu
dD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBQ
bHVnaW5Eb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaAppbmRleCA2ZThiN2NjMWM1YWRlZjNkMmZkYzk4ODJiZmUyNDNlNjdjYTFhOTI1Li41NDdh
MjEwNTJiMzI5NTg2MTAxZDMxNTQ5N2QwYzM2ZDI2YTdhODE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTc1LDEwICs3NSw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2hhc0Rpc3RyaWJ1dGlvbjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oSW5zZXJ0aW9uUG9pbnQpCi0gICAgc3RhdGljIGJvb2wgaXNJbnNlcnRpb25Qb2lu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2Vy
dGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUgJiYgaXM8SW5z
ZXJ0aW9uUG9pbnQ+KG5vZGUpICYmIGRvd25jYXN0PEluc2VydGlvblBvaW50Pigqbm9kZSkuaXNB
Y3RpdmUoKTsKQEAgLTEyNyw0ICsxMjMsOCBAQCBpbmxpbmUgYm9vbCBoYXNTaGFkb3dSb290T3JB
Y3RpdmVJbnNlcnRpb25Qb2ludFBhcmVudChjb25zdCBOb2RlJiBub2RlKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5z
ZXJ0aW9uUG9pbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNlcnRpb25Qb2ludCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmlu
ZGV4IGJiN2IwMzIwMWJiYzAyZTU5YjA1N2E2NTY3MDRlMzZjZTA3Y2M5ODguLmMzMTI4YjhjYmZi
ZDY1NDlkNmFhOTg0NTI5ZGExNjgwNmFlOGYwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC03MCwxMSArNzAs
NiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChjb25zdCBO
b2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25F
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKQEAgLTEwNyw2ICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FwdHVy
aW5nOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2Fz
dDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
aAppbmRleCAzYjNkOTExMGNiODBjNWUyZTZmMDI3ODcwNTRmNzgzYTk5YzE3YTAyLi41MmFlNDg3
OGNkMjc0ZTljOTFhZTZmMzdkZGM0MjZjNGQ1ZmYxZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtODAsMTAgKzgwLDEwIEBAIHByaXZhdGU6CiAgICAg
QXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYlZUVEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNXZWJWVFRFbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNX
ZWJWVFRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGVmMDA4ZDNhMjZmZWQ3NjkyNWMzODU0MWRkMzJjNjM2NjVmMzVjODMu
LjhlOTQ3Y2E1OGQyYmJhM2NmYTY5OTIzMmFhYmM3YWM1ZjQyNzk5MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC0xMjYyLDggKzEyNjIsOCBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYQogCiBJbnN0cnVtZW50
aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNG
b3JOb25Eb2N1bWVudENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4g
aW5zdHJ1bWVudGF0aW9uRm9yV29ya2VyR2xvYmFsU2NvcGUodG9Xb3JrZXJHbG9iYWxTY29wZShj
b250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAg
ICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyZThjMmJmZjdh
YzBjMDNmY2E1MGU3NjQ4MTMwY2EyNGYwYjhjZWE0Li5lM2RjZGI0ODZmMTllNzEwNTMyZDkyMDlm
OTVmNjU5NzFmZTAwNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC01Niw4ICs1Niw4IEBAIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgQVNT
RVJUKGNsaWVudCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogCi0gICAgaWYgKGNvbnRleHQtPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSh0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCksIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBjbGll
bnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIHJlcXVlc3QsIG9wdGlvbnMpOwogCiAg
ICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERvY3Vt
ZW50PigqY29udGV4dCksICpjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQpAQCAtNjYsOCAr
NjYsOCBAQCB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogewogICAgIEFTU0VSVChjb250ZXh0KTsK
IAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh0b1dvcmtlckds
b2JhbFNjb3BlKGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMpOworICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
CmluZGV4IDlmZmI5NWI5OGUzZGQ2YmViMjViNTY1ZWZmMjc0NzU4NDBlZWYyZmYuLjJlODc4MDk1
ZjI3MWIxYzAyZTM5YTQ2MDE5NTJhN2Y1ZmIxYTEyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNzUyLDggKzc1Miw4IEBAIHZvaWQgTWVtb3J5
Q2FjaGU6OnJlbW92ZVVybEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChjb250ZXh0LT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+
dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFk
VGFzaygmY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlLCByZXF1ZXN0LCBzZXNzaW9u
SUQpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKSB7CisgICAgICAg
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9h
ZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jvc3NUaHJlYWRS
ZW1vdmVSZXF1ZXN0RnJvbUNhY2hlLCByZXF1ZXN0LCBzZXNzaW9uSUQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzY4LDggKzc2OCw4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNv
CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAg
ICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94
eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVhZFJlbW92ZVJl
cXVlc3RGcm9tU2Vzc2lvbkNhY2hlcywgcmVxdWVzdCkpOworICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCpjb250ZXh0KS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIo
Q3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hl
cywgcmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlbW92ZVJlcXVlc3RG
cm9tU2Vzc2lvbkNhY2hlc0ltcGwoY29udGV4dCwgcmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuaAppbmRleCBlMDk5MDY3MmQwY2ViZTViMDdiOWFkOWQ0YzZiZGEwOTU5
NGE0OTg0Li5iOThmYmViNzJlYTdmYTM2OTgzOWUwYTk4ZDEwYWI3ZmJkYTA4MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTczLDEwICs3Myw2IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oTWF0aE1MRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBp
c01hdGhNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVs
ZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUgYm9vbCBO
b2RlOjpoYXNUYWdOYW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGlzTWF0aE1MRWxlbWVudCgpICYmIGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+
KCp0aGlzKS5oYXNUYWdOYW1lKG5hbWUpOwpAQCAtODQsNiArODAsMTAgQEAgaW5saW5lIGJvb2wg
Tm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6TWF0aE1MRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudFR5cGVI
ZWxwZXJzLmgiCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCmluZGV4IDdkOTRhM2Q0YjgyN2Y5ZGE2NmQ4ODQyODVl
YzkyZmU5NTk5ZDBhYzQuLmU3MjExYjM5MjlmMTk2MDhlNTJjZWJlOTBkYTk1ZTI3YjUyMjhkMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKQEAgLTcyLDE1
ICs3MiwxNSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGVB
bmltYXRvcj4gbV9hbmltYXRvcjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKQotICAgIHN0YXRpYyBib29sIGlzU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlKGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50
JiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRl
Q29sb3JUYWcpCi0gICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFu
aW1hdGVUcmFuc2Zvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6
YW5pbWF0ZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjphbmlt
YXRlQ29sb3JUYWcpCisgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6
U1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJD
b3JlOjpTVkdOYW1lczo6c2V0VGFnKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdBbmlt
YXRlRWxlbWVudEJhc2UoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4o
bm9kZSkgJiYgaXNTVkdBbmltYXRlRWxlbWVudEJhc2UoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9k
ZSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2Fz
dDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCiAjZW5kaWYgLy8gU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKaW5kZXggNmNhY2YwM2E4MWU4Y2Jj
NzNiOTRmYmU2MmYzYTM0NWJmOGViZjc5Ni4uZWY1YmUyZWVjZDAyNTA0NmYyYjUxZWI5ZGEwOTNh
MThkNTQ2NDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKQEAgLTUyLDExICs1MiwxMSBA
QCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiB9OwogCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFNWR0RvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHRG9j
dW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1NWR0Rv
Y3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR0RvY3VtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIGlzPERvY3VtZW50Pihub2RlKSAmJiBpc1NWR0RvY3VtZW50KGRvd25jYXN0
PERvY3VtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OlNWR0RvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6
OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2Vu
ZGlmIC8vIFNWR0RvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDlhMmU5NmM4
ZmMxYmRlYzkxYzJlNzBhOWQ4ZjA3NTU5ZGYwYzIyMzQuLmQ4MzNjMDYxZjA5NTE3YjgxZGRiYWM0
OWZlMDQ3MTU5ODNjNjc4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMjIxLDEwICsy
MjEsNiBAQCBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGIp
IHsgcmV0dXJuIGEubWF0Y2hlcyhiKTsgfQogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihTVkdFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHRWxlbWVudChjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgU1ZHUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaXNTVkdFbGVtZW50KCkgJiYg
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CkBAIC0yMzIsNiAr
MjI4LDEwIEBAIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgU1ZHUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0VsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVt
ZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCAwY2Ix
OWVmZTNlNjMyMTM0MGE4NjkwOWUwNzFiZDQ0MjE1ODFjNzlkLi42NmFjM2MyMTA1M2FmMTBhMDE4
ODU4ZDI2YTJmOTZmYmJmMjMwMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC04MiwxMSArODIs
MTEgQEAgcHJpdmF0ZToKIAogdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNW
R0VsZW1lbnQqKTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5pc0ZpbHRlckVmZmVjdCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1l
bnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsgfQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpT
VkdFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4o
bm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCmluZGV4IDUzMzgwOGZjODFiY2Y5ZmJhNDY3
ZTA5ZTQ1ZmIxMTcxNDgxYjZkMmYuLjM2NTg5YmI1MjM2ZGIxZGI3OWQ3NDhjYTg2ZDQyYTg4ODVl
NGNmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKQEAgLTEwNywx
NyArMTA3LDE3IEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdHcmFkaWVudEVsZW1lbnQp
Ci1zdGF0aWMgYm9vbCBpc1NWR0dyYWRpZW50RWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVt
ZW50KQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudCkKK3N0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKTsKKyAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZyk7CiB9Ci1zdGF0
aWMgYm9vbCBpc1NWR0dyYWRpZW50RWxlbWVudChjb25zdCBOb2RlJiBub2RlKQorc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIGlzPFNW
R0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHR3JhZGllbnRFbGVtZW50KGRvd25jYXN0PFNWR0VsZW1l
bnQ+KG5vZGUpKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYg
aXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsKIH0KIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAppbmRleCA0MzNmMzFjMDA5NzNh
ZDhiOTFlMmI3ZGMxYmQ2MDViYWFiOWM4ZTA5Li42MTI2NjZmNDVlNWZjMTMxMGNkNTA2ODJiNWVi
ODEwNTI3OTBhYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBA
IC04MiwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSXNvbGF0ZUJsZW5k
aW5nOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdHcmFwaGljc0VsZW1l
bnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgU1ZHRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NWR0dyYXBoaWNzRWxlbWVudCgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdHcmFwaGljc0VsZW1lbnQoZG93bmNh
c3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdHcmFw
aGljc0VsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpO
b2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSAmJiBpc1R5
cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBTVkdHcmFwaGljc0VsZW1lbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAppbmRleCAwMDlhZTY2MmIxMDk3YTQzNzgxYTgwYjE1OWQ5
MTQ1Mjg3Zjc3MjM3Li5mYzQ2ZDdjN2I5ODcxMjJhMmUwZGY3M2E1MmQzNmNmNDYwNDlkZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaApAQCAtNjIsMTEgKzYyLDExIEBAIHByb3Rl
Y3RlZDoKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQ
b2ludExpc3Q+IG1fcG9pbnRzOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihT
VkdQb2x5RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6
cG9seWdvblRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5bGluZVRhZyk7
IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHUG9seUVsZW1lbnQoZG93bmNhc3Q8
U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpTVkdQb2x5RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNv
cmU6OlNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6
U1ZHTmFtZXM6OnBvbHlsaW5lVGFnKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2Rl
KSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IGE1OTJhYmU3MjUzY2U5YzcwM2NiZTYxMDhkM2Y2
MDdkYjAzZjk1ZjEuLjA5ZjIwZTQwY2NlNjNmNGNlMTY4NWUwM2ZmYjY5MDVlYzIzMTE3NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKQEAgLTExOSwxMSAr
MTE5LDExIEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdUZXh0Q29udGVudEVsZW1lbnQp
Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250ZW50KCk7IH0KLSAgICBzdGF0
aWMgYm9vbCBpc1NWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR1RleHRDb250ZW50RWxlbWVudChkb3duY2Fz
dDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRD
b250ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYg
bm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRv
d25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuaAppbmRleCA0ZDhjMzFiNjc2ODVjYTgzMTk0MmUzYTViYjRkMDM2NjZiZGNh
YzhlLi44NzVkY2I5ZTU5YTA4MzMyNjc5M2YwNDc5Mjk2MTQxNGRkYjg0YTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCkBAIC0yMzcsMTEgKzIz
NywxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb25kaXRpb25FdmVudExpc3RlbmVy
OwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdTTUlMRWxlbWVudCkKLSAg
ICBzdGF0aWMgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNT
VkdTTUlMRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihu
b2RlKSAmJiBpc1NWR1NNSUxFbGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdF
bGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9k
ZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBTVkdTTUlM
RWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGY5ZDBlM2FiODg1YTgwNDQ1NzkyYzZiMjc0
NzQyZTY5M2M2YTBmMzQuLjA0NjQ4Mjc1MDFmMzk1NTNmNWNhM2I3M2QyYWY4YTE4NTdmMTkyZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJl
cG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwCkBAIC0yNTcsMTIgKzI1NywxMiBAQCBwdWJsaWM6CiAgICAgICAg
IDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1l
c3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7CiAgICAgICAgICAgICBwb3J0LT5lbnRhbmdsZShz
dGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPihjaGFubmVsKSk7Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7Ci0gICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2Nv
cGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKKyAgICAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7
CisgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgICAgICAvLyBTaW5jZSBj
bG9zZSgpIHN0b3BzIHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwgdGhpcyBzaG91bGQgbm90IGV2ZXIg
Z2V0IGNhbGxlZCB3aGlsZSBjbG9zaW5nLgotICAgICAgICAgICAgQVNTRVJUKCF3b3JrZXJHbG9i
YWxTY29wZS0+aXNDbG9zaW5nKCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04od29ya2VyR2xvYmFsU2NvcGUtPmlzU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUo
KSk7Ci0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVD
b25uZWN0RXZlbnQocG9ydCkpOworICAgICAgICAgICAgQVNTRVJUKCF3b3JrZXJHbG9iYWxTY29w
ZS5pc0Nsb3NpbmcoKSk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTih3b3JrZXJHbG9iYWxTY29wZS5pc1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKCkpOworICAg
ICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZl
bnQocG9ydCkpOwogICAgICAgICB9KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGRlMTIxNGU2NWU1NzI0ZjI0MTM4M2Y1
ZmI3YzM2YzZlYTU0YWYyMzcuLmUwMDllNTc1NDI1ZGE0NmU0ZTY0N2RhNzg4N2U2NGQxODE1ZDdk
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC0xMzMsMTAgKzEzMywxMCBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSgpCiAgICAg
Ly8gdGFza3Mgd2l0aCBpc0NsZWFudXBUYXNrKCk9PXRydWUgd2lsbCBiZSBleGVjdXRlZC4KICAg
ICBtX2Nsb3NpbmcgPSB0cnVlOwogICAgIHBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSk7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgLy8gTm90aWZ5IHBhcmVu
dCB0aGF0IHRoaXMgY29udGV4dCBpcyBjbG9zZWQuIFBhcmVudCBpcyByZXNwb25zaWJsZSBmb3Ig
Y2FsbGluZyBXb3JrZXJUaHJlYWQ6OnN0b3AoKS4KLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUt
PnRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2NvcGVDbG9zZWQo
KTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJv
eHkoKS53b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpOwogICAgIH0gfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA0MDRhMjAxMmMyMTljZmM4
NDkzMTJjYmVjMjJjZDk4M2Q1ZmRiMjVmLi5lZjZmYmQ0NTg3NWFlYjAzNDQ3ZjE1NTY2MWQxZjBj
M2UwNWRmNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CkBAIC0xODEsOCArMTgxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKICAgICB9OwogCi1TQ1JJUFRfRVhFQ1VUSU9O
X0NPTlRFWFRfVFlQRV9DQVNUUyhXb3JrZXJHbG9iYWxTY29wZSkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Oldvcmtlckds
b2JhbFNjb3BlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gV29y
a2VyR2xvYmFsU2NvcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcAppbmRleCAyYmNhYTRiZDljODFjODMwMmQxZmUyYTZlMjgyODZkODhlZThm
NzA2Li4yYTUwMTg4OTQ4ZTgxZTk4MzcxNDFjYzE0N2QxZmVhNzBiNjhhZDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNjgsMTUg
KzY4LDE1IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3Jr
ZXIqIHdvcmtlck9iamVjdCkKICNlbmRpZgogewogICAgIEFTU0VSVChtX3dvcmtlck9iamVjdCk7
Ci0gICAgQVNTRVJUKChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBp
c01haW5UaHJlYWQoKSkKLSAgICAgICAgICAgfHwgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0b1dvcmtlckdsb2Jh
bFNjb3BlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElEKCkpKTsK
KyAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElE
KCkpKTsKIH0KIAogV29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSgp
CiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlck9iamVjdCk7Ci0gICAgQVNTRVJUKChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAg
ICAgfHwgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpICYm
IGN1cnJlbnRUaHJlYWQoKSA9PSB0b1dvcmtlckdsb2JhbFNjb3BlKCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICBBU1NFUlQoKGlzPERvY3VtZW50
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAg
fHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBj
dXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVS
TCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9X
b3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShp
c09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5l
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnRO
YW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyNCwxNyArMjI0LDE3IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3RvcihXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQ
YWdlSW5zcGVjCiAgICAgQVNTRVJUKCFtX3BhZ2VJbnNwZWN0b3IpOwogICAgIG1fcGFnZUluc3Bl
Y3RvciA9IHBhZ2VJbnNwZWN0b3I7CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
KTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKIH0KIAog
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogewot
ICAgIG1fcGFnZUluc3BlY3RvciA9IDA7CisgICAgbV9wYWdlSW5zcGVjdG9yID0gbnVsbHB0cjsK
ICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAgICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCkt
Pndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCk7CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW21lc3NhZ2VDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlQ29weSk7CisgICAg
ICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2VDb3B5KTsKICAg
ICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKICAgICBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjppbnRlcnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKG1fd29y
a2VyVGhyZWFkLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCAwNWM1ZmE0YjczZjg2N2E1M2NkZmQ5NTA2OTkzNmExMDk2OGE4
ZjAxLi45NjRhMGFhYTQ3YjM1NjI4MDkwNDZkNTc2OWYzMTU2M2Q3MTE4YzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC02MSwxNCArNjEs
MTQgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGkKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAg
b3B0aW9ucy5zZXRBbGxvd0NyZWRlbnRpYWxzKEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAg
IG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5OwogICAgIG9wdGlvbnMuc2V0U2VuZExvYWRDYWxsYmFja3MoU2VuZENhbGxiYWNrcyk7CiAK
LSAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHRv
V29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhp
cywgb3B0aW9ucyk7CisgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCksICpyZXF1ZXN0LCAqdGhpcywgb3B0aW9ucyk7CiB9CiAgICAgCiB2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQq
IGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBlNDQy
MjUwYTM0OWZhM2NiYTZkY2ZhNmVmMDAwODRiYmI2NjNiMzE5Li5hZGU1Njk5MzRiZjkyM2VjMmM0
OTc1ZTFjMzRmZjA0MzkyNTI3NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMSBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAg
ICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQobV93b3JrZXJHbG9iYWxTY29wZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgbV9y
dW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
azo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ICkgewot
ICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3Jr
ZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7
CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBzdG9wIHRoZSBkYXRhYmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygp
IGJlbG93PwogICAgICAgICAgICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIGNsZWFudXBTeW5j
OwotICAgICAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERhdGFiYXNlcyh3
b3JrZXJHbG9iYWxTY29wZSwgJmNsZWFudXBTeW5jKTsKKyAgICAgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMoJndvcmtlckdsb2JhbFNjb3BlLCAmY2xlYW51
cFN5bmMpOwogI2VuZGlmCiAKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5zdG9wQWN0
aXZlRE9NT2JqZWN0cygpOworICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuc3RvcEFjdGl2
ZURPTU9iamVjdHMoKTsKIAotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPm5vdGlmeU9i
c2VydmVyc09mU3RvcCgpOworICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUubm90aWZ5T2Jz
ZXJ2ZXJzT2ZTdG9wKCk7CiAKICAgICAgICAgICAgIC8vIEV2ZW50IGxpc3RlbmVycyB3b3VsZCBr
ZWVwIERPTVdyYXBwZXJXb3JsZCBvYmplY3RzIGFsaXZlIGZvciB0b28gbG9uZy4gQWxzbywgdGhl
eSBoYXZlIHJlZmVyZW5jZXMgdG8gSlMgb2JqZWN0cywKICAgICAgICAgICAgIC8vIHdoaWNoIGJl
Y29tZSBkYW5nbGluZyBvbmNlIEhlYXAgaXMgZGVzdHJveWVkLgotICAgICAgICAgICAgd29ya2Vy
R2xvYmFsU2NvcGUtPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgICAgICB3b3Jr
ZXJHbG9iYWxTY29wZS5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICAgICAgICAgIC8vIFdlIHdhaXQgZm9yIHRoZSBkYXRhYmFzZSB0aHJl
YWQgdG8gY2xlYW4gdXAgYWxsIGl0cyBzdHVmZiBzbyB0aGF0IHdlCkBAIC0yMzgsMTAgKzIzOCwx
MCBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAKICAgICAgICAgICAgIC8vIFN0aWNrIGEg
c2h1dGRvd24gY29tbWFuZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28gdGhhdCB3ZSBkZWFs
CiAgICAgICAgICAgICAvLyB3aXRoIGFsbCB0aGUgY2xlYW51cCB0YXNrcyB0aGUgZGF0YWJhc2Vz
IHBvc3QgZmlyc3QuCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soeyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKKyAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICAgICAg
ICAgIC8vIEl0J3Mgbm90IHNhZmUgdG8gY2FsbCBjbGVhclNjcmlwdCB1bnRpbCBhbGwgdGhlIGNs
ZWFudXAgdGFza3MgcG9zdGVkIGJ5IGZ1bmN0aW9ucyBpbml0aWF0ZWQgYnkgV29ya2VyVGhyZWFk
U2h1dGRvd25TdGFydFRhc2sgaGF2ZSBjb21wbGV0ZWQuCi0gICAgICAgICAgICAgICAgd29ya2Vy
R2xvYmFsU2NvcGUtPmNsZWFyU2NyaXB0KCk7CisgICAgICAgICAgICAgICAgd29ya2VyR2xvYmFs
U2NvcGUuY2xlYXJTY3JpcHQoKTsKICAgICAgICAgICAgIH0gfSk7CiAKICAgICAgICAgfSB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCAzMzdjZGExOTE5YzIyZDIzMjJl
ZjcwODA0MTQyNWYxOTQ4YTliMTdiLi45YzUwYmNkODQxNGQyYjQyYzYyMTFkN2MzMGU0OWFjZGU4
NjMwZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xNTAwLDIyICsx
NTAwLDIyIEBAIElET01FbGVtZW50KiBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShXZWJDb3Jl
OjpFbGVtZW50KiBlKQogICAgIEhSRVNVTFQgaHI7CiAgICAgSURPTUVsZW1lbnQqIGRvbUVsZW1l
bnQgPSAwOwogCi0gICAgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4o
ZSkpIHsKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PihlKSkgewogICAgICAg
ICBET01IVE1MRm9ybUVsZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTEZvcm1FbGVtZW50
KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxl
bWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1l
KGlmcmFtZVRhZykpIHsKICAgICAgICAgRE9NSFRNTElGcmFtZUVsZW1lbnQqIG5ld0VsZW1lbnQg
PSBuZXcgRE9NSFRNTElGcmFtZUVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+
UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAg
ICB9IGVsc2UgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+KGUpKSB7
CisgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PihlKSkgewogICAg
ICAgICBET01IVE1MSW5wdXRFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJbnB1dEVs
ZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lE
T01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYkNvcmU6
OmlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8
V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxPcHRpb25F
bGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxPcHRpb25FbGVtZW50KGUpOwogICAgICAg
ICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQq
KikmZG9tRWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykp
IHsKICAgICAgICAgRE9NSFRNTFNlbGVjdEVsZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRN
TFNlbGVjdEVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZh
Y2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYg
KFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ+KGUpKSB7CisgICAgfSBl
bHNlIGlmIChpczxXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50PihlKSkgewogICAgICAgICBE
T01IVE1MVGV4dEFyZWFFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lE
T01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKICAgICB9IGVsc2UgaWYgKGUtPmlzSFRN
TEVsZW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQppbmRleCBkZGQ3
YmQ2ZDkwNDU2YzUyNGI5NDNiY2M0ZDNjZWQ5MGRkNWVlMTk0Li44MzE2NjI5YmNlZDRkYjc2NGE5
YjdmNGYyYjE0YzFjZWM1MDFiZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5t
bQpAQCAtMzksMTcgKzM5LDE3IEBAIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5T
U3RyaW5nICopdGFnTmFtZQogewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJvdXQgdGhl
IGV4Y2VwdGlvbi4KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1
cm4gV2ViS2l0Ojp0b1dLRE9NRWxlbWVudChXZWJDb3JlOjpkb3duY2FzdDxXZWJDb3JlOjpEb2N1
bWVudD4oKl9pbXBsKS5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9XS0RPTUVsZW1lbnQoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpf
aW1wbCkuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCkpOwogfQogCiAtIChXS0RPTVRl
eHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6dG9XS0RPTVRleHQoV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1w
bCkuY3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tE
T01UZXh0KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZVRleHROb2Rl
KGRhdGEpLmdldCgpKTsKIH0KIAogLSAoV0tET01FbGVtZW50ICopYm9keQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvV0tET01FbGVtZW50KFdlYkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3Vt
ZW50PigqX2ltcGwpLmJvZHkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVsZW1lbnQo
ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuYm9keSgpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVRleHQubW0KaW5kZXggZDkxZTgxMjA0NjE2MjYyNmU2MmM5NGYyYjNk
OTViYjQ3YmUwM2I0MS4uZTMwYWUzY2QyNGE4ZDA0ZTRlMmM4ZmQ3YWM5ODc0NWRjOWFkMjExOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tCkBAIC0zNSwxNCArMzUsMTQgQEAgQGltcGxlbWVu
dGF0aW9uIFdLRE9NVGV4dAogCiAtIChOU1N0cmluZyAqKWRhdGEKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6VGV4dD4oKl9pbXBsKS5kYXRhKCk7CisgICAgcmV0dXJu
IGRvd25jYXN0PFdlYkNvcmU6OlRleHQ+KCpfaW1wbCkuZGF0YSgpOwogfQogCiAtICh2b2lkKXNl
dERhdGE6KE5TU3RyaW5nICopZGF0YQogewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJv
dXQgdGhlIGV4Y2VwdGlvbi4KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjOwotICAgIFdl
YkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OlRleHQ+KCpfaW1wbCkuc2V0RGF0YShkYXRhLCBlYyk7
CisgICAgZG93bmNhc3Q8V2ViQ29yZTo6VGV4dD4oKl9pbXBsKS5zZXREYXRhKGRhdGEsIGVjKTsK
IH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238910</attachid>
            <date>2014-09-29 22:15:24 -0700</date>
            <delta_ts>2014-09-29 22:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140929221524.patch</filename>
            <type>text/plain</type>
            <size>91417</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMxNjkyODlmN2E5OTk4ZjYyNGIyNWE4
ZjdiOTE4YWNjNGI4MmEzYzQuLjc2OTU0ZWI0MmQ4NzM4ZjhiM2M2NmI5ZmRkMTM2OTkwNjQ0YmM4
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0
IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5oOgorICAgICAgICAqIHd0Zi9UeXBlQ2FzdHMuaDogQWRkZWQuCisgICAgICAgIChXVEY6Omlz
KToKKyAgICAgICAgKFdURjo6ZG93bmNhc3QpOgorCiAyMDE0LTA5LTI5ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTc0MDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxYmQ4ZDdlMTBlODkxYTVlZGNlMGQ3MjQyZjg0
ZDI1ODQxOTBiYjguLmNkMmY1NGVmNGYxYzJjZGQ1ODQ3YjdjYzUzOTU4OWY3OWQ5YmVlNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMDEgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNh
c3Q8PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBw
b3J0IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisgICAgICAgIFRvIGFjaGlldmUgdGhp
cywgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgLSBNb3ZlIGlzPD4g
LyBkb3duY2FzdDw+KCkgYW5kIE5vZGVUeXBlQ2FzdFRyYWl0cyBmcm9tIE5vZGUuaCB0byBhIG5l
dworICAgICAgICAgIHd0Zi9UeXBlQ2FzdHMuaCBoZWFkZXIuIEFsc28gbW92ZSB0aGVtIHRvIFdU
RiBuYW1lc3BhY2UgaW5zdGVhZCBvZgorICAgICAgICAgIFdlYkNvcmUgbmFtZXNwYWNlIGFzIHRo
ZXkgY2FuIGJlIHVzZWQgZm9yIGNsYXNzZXMgaW4gb3RoZXIgbmFtZXNwYWNlcworICAgICAgICAg
IChlLmcuIFdlYktpdCBuYW1lc3BhY2UpLgorICAgICAgICAtIFJlbmFtZSBOb2RlVHlwZUNhc3Rz
VHJhaXRzIHRvIFR5cGVDYXN0VHJhaXRzIGFzIGl0IGNhbiBiZSBzcGVjaWFsaXplZAorICAgICAg
ICAgIGZvciBub24tTm9kZXMuCisgICAgICAgIC0gU2luY2UgQysrIGRvZXMgbm90IGFsbG93IHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9ucyBpbiBkaWZmZXJlbnQKKyAgICAgICAgICBuYW1lc3BhY2Vz
LCBJIGhhZCB0byBtb3ZlIGFsbCB0aGUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkgdXNlcyB0
bworICAgICAgICAgIHRoZSBnbG9iYWwgc2NvcGUgYW5kIHVzZSB0aGUgV2ViQ29yZTo6IG5hbWVz
cGFjZSBleHBsaWNpdGx5IGluIHRob3NlLgorICAgICAgICAgIFRoaXMgaXMgYSBiaXQgdW5mb3J0
dW5hdGUgYnV0IEkgY291bGRuJ3QgZmluZCBhIGJldHRlciB3YXkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIHRha2VzIGNhcmUgb2Ygc3VwcG9ydGluZyBpczw+KCkgLyBkb3duY2FzdDw+KCkg
Zm9yCisgICAgICAgIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBjbGFzcywgd2hpY2ggZG9lcyBub3Qg
ZGVyaXZlIGZyb20gTm9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
Ojpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTUdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgor
ICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNBdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNDREFUQVNlY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
Q29tbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0RvY3VtZW50RnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5
cGUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50VHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVz
c2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVz
c2FnZXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjppcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkb3duY2FzdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUHNldWRvRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTaGFkb3dSb290KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU3R5
bGVkRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5
bGVkRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1RleHQpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRUeXBlSGVscGVycyk6CisgICAgICAgIChw
cmludFR5cGVIZWxwZXJzSGVhZGVyRmlsZSk6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxEb2N1bWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZyYW1lRWxlbWVudEJhc2UpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVPd25lckVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzSFRNTE1lZGlhRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTFBsdWdJbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFBsdWdJbkltYWdlRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFRhYmxlQ2VsbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNJbWFnZURvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0xhYmVsYWJsZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5oOgorICAgICAg
ICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWVkaWFEb2N1bWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUGx1Z2luRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV2ViVlRURWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVu
dENvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyk6CisgICAgICAgICogbWF0aG1s
L01hdGhNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c01hdGhNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0FuaW1h
dGVFbGVtZW50QmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6Cisg
ICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAo
aXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHR3JhZGllbnRFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdHcmFwaGljc0VsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzU1ZHUG9seUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1NWR1RleHRDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU1ZHU01JTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyQ29ubmVjdFRhc2s6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2Jh
bFNjb3BlOjpjbG9zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgor
ICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6fldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
TWVzc2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
c3RvcCk6CisKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIERvY3VtZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyMjEKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IGY2NzEyZmU5NmY0Yjk5YTc4NGE5ODAzYmEwZTFiMjA4M2ViNGY3Nzcu
LjFiZjFmYmU2YzdhYzcxYjU0NDM5NTYyM2MwMTQ4NDg2M2RlMGJiMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkg
c3VwcG9ydCB0byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8g
YWxsIHR5cGVzLCBub3QganVzdCBOb2Rlcy4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNw
cDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKworMjAxNC0wOS0yOSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgTWFrZSBpczw+
KCkgLyBkb3duY2FzdDw+KCkgd29yayBmb3IgSFRNTERvY3VtZW50IGFuZCBpdHMgc3ViY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTY5
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2NWI1NjkzNmE5MWQ4NDkzNWYzNTYzYWVkNzRlZTc1ZWQ5MDg2YjNl
Li41ZGZiYmExYzM1OGQxNWJlZGQ5YWE1MGYyYjNjOWE1OTc2NGE0ZjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMjIgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBv
cnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0
eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBj
cmVhdGVFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGNyZWF0ZVRleHROb2Rl
Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGJvZHldKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tOgorICAgICAgICAoLVtXS0RP
TVRleHQgZGF0YV0pOgorICAgICAgICAoLVtXS0RPTVRleHQgc2V0RGF0YTpdKToKKworMjAxNC0w
OS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRG9jdW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyMQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXgg
YTQwYmM4YjA2NTZhYjBkMTA5ZmJiZTBhZWFhNzJkMjUyYmU0OTYyYS4uNzJiZTNkNjM4Y2QzNWQ1
ODVjNTRhZWI4ZTY4YzcwYjU4NTQyZmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzg0LDYgKzM4
NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKQogCiAv
KiBUWVBFIENBU1QgKi8KIAorLy8gRklYTUU6IFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB0aGUgY29kZSBiYXNlIGlzIHBvcnRlZCB0byB1c2luZworLy8gdGhlIG5ldyBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTXyooKSBtYWNyby4KICNkZWZpbmUgVFlQRV9DQVNUU19CQVNFKFRvQ2xh
c3NOYW1lLCBhcmd1bWVudFR5cGUsIGFyZ3VtZW50TmFtZSwgcG9pbnRlclByZWRpY2F0ZSwgcmVm
ZXJlbmNlUHJlZGljYXRlKSBcCiBpbmxpbmUgVG9DbGFzc05hbWUqIHRvIyNUb0NsYXNzTmFtZShh
cmd1bWVudFR5cGUqIGFyZ3VtZW50TmFtZSkgXAogeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UeXBlQ2FzdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJhYmJiYzUxYWYxODc0NmZiMjZkZWVmMDE4OGIwMjFhYTVkODYwOGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlQ2FzdHMuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUeXBlQ2FzdHNfaAorI2RlZmluZSBUeXBlQ2FzdHNfaAorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUo
QXJnVHlwZSYpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVj
dCBUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRp
YyBib29sIGlzT2ZUeXBlKEV4cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8v
IFR5cGUgY2hlY2tpbmcgZnVuY3Rpb24sIHRvIHVzZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25j
YXN0PD4oKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGU+CitpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNl
c3NhcnkgdHlwZSBjaGVjayIpOworICAgIHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBl
Y3RlZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZShzb3VyY2UpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wg
aXMoQXJnVHlwZSogc291cmNlKQoreworICAgIEFTU0VSVChzb3VyY2UpOworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVu
bmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3Qg
RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoKnNvdXJjZSk7Cit9CisKKy8v
IFNhZmUgZG93bmNhc3RpbmcgZnVuY3Rpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6Omlz
X2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZSBkb3du
Y2FzdChTb3VyY2UmIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8
U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOwor
fQordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBl
bmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0
IFRhcmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoreworICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAi
VW5uZWNlc3NhcnkgY2FzdCIpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwg
Y29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Cit9CisKKy8vIEFkZCBzdXBw
b3J0IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+KCkgLyBkb3duY2FzdDw+
KCkgaGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihDbGFzc05hbWUpIFwKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPiBc
CitjbGFzcyBXVEY6OlR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNzTmFtZSwgQXJnVHlwZT4geyBc
CitwdWJsaWM6IFwKKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBzb3VyY2UpIHsg
cmV0dXJuIGlzVHlwZShzb3VyY2UpOyB9IFwKK3ByaXZhdGU6CisKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKSBcCit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjppczsKK3VzaW5nIFdURjo6ZG93bmNhc3Q7CisKKyNlbmRpZiAvLyBUeXBlQ2FzdHNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRl
eCBjZTAxMDA3YTdkMDAwNzg4ZTFjZjFiYTYxNDg1M2NkNzY2N2ZjMmU5Li4wMTI4ZjUwZDI5Mjlm
NTEyNWY4YjBiMTMyZGViYWQ3ZWVhOGM2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgU3Ry
aW5nIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0
dGluZ3MoKS5pbmRleGVkREJEYXRhYmFzZVBhdGgoKTsKICAgICB9Ci0gICAgY29uc3QgR3JvdXBT
ZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPmdy
b3VwU2V0dGluZ3MoKTsKKyAgICBjb25zdCBHcm91cFNldHRpbmdzKiBncm91cFNldHRpbmdzID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5ncm91cFNldHRpbmdzKCk7CiAg
ICAgaWYgKGdyb3VwU2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBncm91cFNldHRpbmdzLT5pbmRl
eGVkREJEYXRhYmFzZVBhdGgoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWRE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggOTFiMDQzYjEzZjFmNTQ3MDQzY2Y2MmRl
OWUzZDg2NDE4N2ZjMmYxZi4uYTNjMTI2NzIxOGY4MjI1MjA5M2Q0MjE4ZjA3NjU1ZTA3YTZmNTFm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2U6OmZyb20oU2NyaXB0RQogICAgIFdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGVJ
bmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9t
KGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAg
ICAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcjsKLSAgICAgICAgY29uc3Qg
R3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4
dCktPmdyb3VwU2V0dGluZ3MoKTsKKyAgICAgICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBT
ZXR0aW5ncyA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuZ3JvdXBTZXR0
aW5ncygpOwogICAgICAgICBpZiAoZ3JvdXBTZXR0aW5ncykKICAgICAgICAgICAgIGRhdGFiYXNl
RGlyZWN0b3J5SWRlbnRpZmllciA9IGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNlUGF0
aCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxNjU0ZGQ1NjBlMmM5
NTA5OTIzZDY2OWZlZTZmOTg5YjE3MDc1NDQ1Li44MzlmYTg3MjM2NmJkZTZlNDM3MDYwNTEyYWQy
NjFmNGNkMDgyNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU1LDEz
ICs1NSwxMyBAQCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdAogICAgIEFTU0VSVChjb250ZXh0KTsK
ICAgICBBU1NFUlQoY2xpZW50KTsKIAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0g
dG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsKLSAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVu
TG9vcCA9IHdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5ydW5Mb29wKCk7CisgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRl
eHQpOworICAgICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUu
dGhyZWFkKCkucnVuTG9vcCgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1vZGU7CiAgICAgICAg
IG1vZGUuYXBwZW5kTGl0ZXJhbCh3ZWJTb2NrZXRDaGFubmVsTW9kZSk7CiAgICAgICAgIG1vZGUu
YXBwZW5kTnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7Ci0gICAgICAgIHJldHVybiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnQsIG1vZGUudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCZ3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBt
b2RlLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpj
cmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBjbGllbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDk5YzQwMmMz
MjdlN2Y5N2NhY2U5ZWM2Mzk1YzVkZWRlZGVkMDg1ZTQuLmQ0ZWRkNjkxZjkxY2IwMzk5M2FmOTNk
MDQzMjY3Y2JiZTRhNTJjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTEwOCw4ICsxMDgsOCBAQCBKU0RPTUdsb2JhbE9iamVj
dCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25DbwogICAgIGlmIChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAg
ICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSwgZXhlYyk7CiAKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gdG9Xb3JrZXJHbG9i
YWxTY29wZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcigpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTI1LDggKzEyNSw4IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgaWYgKGlzPERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRvSlNET01H
bG9iYWxPYmplY3QoZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3
b3JsZCk7CiAKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKQotICAgICAgICByZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAg
IHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMmQyYTc1NDZkZjIxYTQ5MzNlYWZi
YWMyYzQxNGI2MTdiNDljYmZkNS4uNWM3NmI2ZDQ1ZmIyZWRkNDNmODg2MDExZGJmMGNjZjJlZjYy
MjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCi0gICAgICAg
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAg
ICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkg
ewogICAgICAgICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjLT5leGNl
cHRpb24oKSkpOwogICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gfHwg
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkpKQotICAgICAgICAgICAgICAg
IHRvV29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT5m
b3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24o
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGQxMWU0NTRkYmE5N2M2
MmUyMWUwNmU0NWRhYTEwYjhkZmMzY2Y4NjcuLmExYjUxYWEzNWYyNzM1OTMyMjkxMDI5MmZhN2M2
MWJjODZmNzY1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmIChpczxEb2N1bWVudD4o
Y29udGV4dCkpCiAgICAgICAgIGV4ZWN1dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsK
ICAgICBlbHNlCi0gICAgICAgIGV4ZWN1dGUodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSk7
CisgICAgICAgIGV4ZWN1dGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsK
IH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IDFmNmJjZTQzMTBiZmU0MzU1MDc3
YzlhZWYzNDljNDYyOTEwYjU4MzQuLmE3YTg5NDU0NzliZDU1MjNhYjM0MjczNWU3NzIxMzdjNDBl
MGRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtOTksMTAgKzk5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQ7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKEF0dHIpCi0gICAgc3RhdGljIGJvb2wgaXNBdHRyKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OkF0dHIpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEF0dHJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NEQVRBU2VjdGlvbi5oCmluZGV4IDZjZDRmNjhjNjBiOWQ2NWU5M2RlN2E5MTEwODkyNzZkYTYy
ZTk1OWEuLjdlOTgyM2UyZmE3MzhhNzBhZTU2MWVkMDliY2M5ZTAzNmI3MmFkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ0RBVEFTZWN0aW9uLmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDREFUQVNlY3Rpb24pCi0g
ICAgc3RhdGljIGJvb2wgaXNDREFUQVNlY3Rpb24oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q0RBVEFTZWN0aW9uKQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVU
eXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBDREFUQVNlY3Rpb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggMDE2ZWRkNWFmMmZmODE1NDk2N2FiNjk5OTA0OWVkZDdk
ZWIxODVkYi4uMzE3ZDkzMWI0Zjc1MjI1NmNjYmUwNjM4ZmI2MDBiMDQ0ODk1YzIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC03NiwxMCArNzYsMTAgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9kYXRhOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDaGFy
YWN0ZXJEYXRhKQotICAgIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLmlzQ2hhcmFjdGVyRGF0YU5vZGUoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJh
Y3RlckRhdGFOb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
IC8vIENoYXJhY3RlckRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggMGE3ZGVjZWM5YTkyZGM5
ZGUzMmM3MTFhNzI0YmExMGNlNmI3MGEyOC4uYzFhNDlkNTlhOGE5YmJkOWU3OWE5ZGRkMGIyZjQ5
YjFiN2I4M2ZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKENvbW1lbnQpCi0gICAg
c3RhdGljIGJvb2wgaXNDb21tZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9k
ZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkNvbW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBXZWJDb3JlOjpO
b2RlOjpDT01NRU5UX05PREU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2Vu
ZGlmIC8vIENvbW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNDJkNDQyYzYyOGFmMmU3
NTNhYmRlNTJjZjdhZWUxYmI3ODRkMDRmLi45MmRkZmMyMDAyYTY1ODE5NjkzMzVkNzFkMDkxNmRk
MDk3YmZmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc0MCwxMyArMTc0MCwxMyBAQCBp
bmxpbmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3Vt
ZW50Kik7CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNEb2N1bWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7IHJldHVybiBjb250ZXh0LmlzRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzRG9j
dW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3VtZW50Tm9kZSgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudCkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3Vt
ZW50Tm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKIG5hbWVzcGFjZSBX
VEYgewogaW5saW5lIFdlYkNvcmU6OkRvY3VtZW50KiBnZXRQdHIoV2ViQ29yZTo6RG9jdW1lbnQm
IHApIHsgcmV0dXJuICZwOyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApp
bmRleCBhYzdkNmY2NWJmNDViYmU0OWUxMGMyODg5Y2U0MjE0MWQ4ZGVhMTk0Li42N2ViZmMzZTk4
NGI2ODA1ZDdkYjBlZmZiMzQzNWRjMWJkZWI4NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmgKQEAgLTUyLDEwICs1MiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnRGcmFnbWVudCkKLSAgICBzdGF0aWMgYm9v
bCBpc0RvY3VtZW50RnJhZ21lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0Rv
Y3VtZW50RnJhZ21lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi19IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdt
ZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmgKaW5kZXggZjRlZjc5Y2UwZWQ1YTQwNWRhZDI5NWZkMDM4M2E0ZGUz
OWRiMmZiMi4uYTliN2E2YTUyOWE3YTdiZWRkMTFhOTIwYjMzNGRjMDZlODAxZjkzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3Vic2V0OwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihEb2N1
bWVudFR5cGUpCi0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudFR5cGUoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsg
fQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RG9jdW1lbnRUeXBlKQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLm5vZGVUeXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNTIzOTM1NTQ0YWU2NGRlZTQxNTA4NjFiOWZiY2M4NjZiOTExNTkzOC4uZDhhOGJhZmNh
MTM4YTNkNzk2YTc0ODBjZTE4ZDU2NjYxZDg1YmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02
NzAsMTEgKzY3MCw2IEBAIGlubGluZSBib29sIGlzRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoRWxlbWVu
dCkKIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgRWxlbWVu
dCwgY29uc3QgTm9kZT4gewotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKTsgfQotfTsKLQogaW5saW5lIGJvb2wgTm9k
ZTo6aGFzQXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQodGhpcyktPmhhc0F0dHJpYnV0ZXMoKTsKQEAgLTc4Niw0ICs3ODEsOSBAQCBp
bmxpbmUgVW5pcXVlRWxlbWVudERhdGEmIEVsZW1lbnQ6OmVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFdURjo6
VHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6RWxlbWVudCwgY29uc3QgV2ViQ29yZTo6Tm9k
ZT4geworICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpOyB9Cit9OworCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IGYyNGQ2YzhhNzVmZGUxYTM4MGJkYTY5MzI5ODA3YzAx
NjkyOWI3NjQuLjU4YmViN2Y5YWE0NmQ2NzY5NjI5YjY0Y2JkZWNmNDQ5ZWE0MTg0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgTWVzc2Fn
ZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgIHdoaWxlIChtX2VudGFuZ2xlZENoYW5uZWwg
JiYgbV9lbnRhbmdsZWRDaGFubmVsLT50cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShtZXNzYWdlLCBj
aGFubmVscykpIHsKIAogICAgICAgICAvLyBjbG9zZSgpIGluIFdvcmtlciBvbm1lc3NhZ2UgaGFu
ZGxlciBzaG91bGQgcHJldmVudCBuZXh0IG1lc3NhZ2UgZnJvbSBkaXNwYXRjaGluZy4KLSAgICAg
ICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpICYm
IHRvV29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+aXNDbG9zaW5n
KCkpCisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuaXNDbG9zaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGOjptb3ZlKGNoYW5uZWxzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCA3YzhhOWE2ODVlMzk3YjJjZGJkNzk2NDRkYTA3NDZlZjY1MmRiMTA3
Li40Y2QzMTU3MGJhNDExOTc2OTkxNTZhMTdhYTg4ODg2N2I0ZDE3Yzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgVk07CkBAIC03MzksNTggKzc0
MCw2IEBAIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhv
c3RGcmVlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50Tm9kZSgpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IE5vZGVUeXBl
Q2FzdFRyYWl0cyB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmKTsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGU+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRz
PEV4cGVjdGVkVHlwZSwgRXhwZWN0ZWRUeXBlPiB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEV4
cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLS8vIFR5cGUgY2hlY2tpbmcgZnVu
Y3Rpb24gZm9yIE5vZGVzLCB0byB1c2UgYmVmb3JlIGNhc3Rpbmcgd2l0aCBkb3duY2FzdDw+KCku
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotaW5s
aW5lIGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBl
IGNoZWNrIik7Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5
cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc1R5cGUobm9kZSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpcyhBcmdUeXBl
KiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBl
IGNoZWNrIik7Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5
cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc1R5cGUoKm5vZGUpOwotfQotCi0vLyBEb3duY2FzdGluZyBm
dW5jdGlvbnMgZm9yIE5vZGUgdHlwZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4KLWlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29u
c3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0
KFNvdXJjZSYgc291cmNlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxU
YXJnZXQsIFNvdXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3Vy
Y2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7Ci19Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFy
Z2V0KiwgVGFyZ2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCi17Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5l
Y2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNv
dXJjZSB8fCBpczxUYXJnZXQ+KCpzb3VyY2UpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25z
dCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlwZT4oc291cmNlKTsKLX0KLQotLy8gQWRkIHN1cHBvcnQg
Zm9yIHR5cGUgY2hlY2tpbmcgLyBjYXN0aW5nIHVzaW5nIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBo
ZWxwZXJzIGZvciBhIHNwZWNpZmljIGNsYXNzLgotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKENsYXNzTmFtZSkgXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPiBc
Ci0gICAgY2xhc3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNzTmFtZSwgQXJnVHlwZT4g
eyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBu
b2RlKSB7IHJldHVybiBpcyMjQ2xhc3NOYW1lKG5vZGUpOyB9IFwKLSAgICBwcml2YXRlOgotCi0j
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkgXAotICAgIH07Ci0KIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBhbGwgdXNlcyBzaG91bGQgYmUgcmVwbGFjZWQg
d2l0aCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTXyooKS4KICNkZWZpbmUgTk9ERV9UWVBFX0NBU1RT
KFRvQ2xhc3NOYW1lKSBcCiAgICAgVFlQRV9DQVNUU19CQVNFKFRvQ2xhc3NOYW1lLCBOb2RlLCBu
b2RlLCBXZWJDb3JlOjppcyMjVG9DbGFzc05hbWUoKm5vZGUpLCBXZWJDb3JlOjppcyMjVG9DbGFz
c05hbWUobm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
aW5kZXggYjMyNWMzOGRhZjU0MGEwOWU4ZmJkYjUzOGZjZTdiZjAzZWU4MDM5YS4uM2Q3MjNhYWY4
MWU4OGFjMWE2ZDQzZWNiODQ0N2Y3YTYxNzk4Y2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtOTEsMTAgKzkxLDEwIEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHJvY2Vzc2luZ0luc3RydWN0
aW9uKQotICAgIHN0YXRpYyBib29sIGlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBX
ZWJDb3JlOjpOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApp
bmRleCAwYTkwYTQ1ZTYwMTk5MmNlNDczMDA5MjhkMjQ4MWU0ZDU1M2MxZGZiLi40YmU1Yzk2OTEw
MzM5Yjk2N2M3NmFjY2Y2NTkzYmU0ZGExNzk5MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmgKQEAgLTc3LDEwICs3NywxMCBAQCBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlICYm
IHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiAoc3R5bGUtPmNvbnRlbnREYXRhKCkgfHwgc3R5
bGUtPmhhc0Zsb3dGcm9tKCkpOwogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFBz
ZXVkb0VsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UHNldWRvRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1BzZXVkb0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCA1MGE4NGM3Nzk0ODFiOThlN2I3ZmExM2M2YWFiZWVhY2I5ZGJmMDY4Li41NDNjYzVi
YWFmYWY5YTgwOGU5MjAyNzA4NjM5MTVkYmMxNTZkNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNTgsMTYgKzE1OCwxNiBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogCiB2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9y
dCYgbWVzc2FnZVBvcnQpCiB7Ci0gICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIHx8IChpc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVh
ZCgpID09IHRvV29ya2VyR2xvYmFsU2NvcGUodGhpcyktPnRocmVhZCgpLnRocmVhZElEKCkpKTsK
KyAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCisgICAg
ICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkp
KTsKIAogICAgIG1fbWVzc2FnZVBvcnRzLmFkZCgmbWVzc2FnZVBvcnQpOwogfQogCiB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBt
ZXNzYWdlUG9ydCkKIHsKLSAgICBBU1NFUlQoKGlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQo
KSkKLSAgICAgICAgfHwgKGlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkg
PT0gdG9Xb3JrZXJHbG9iYWxTY29wZSh0aGlzKS0+dGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAg
IEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAg
fHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgY3VycmVudFRocmVhZCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkSUQoKSkpOwog
CiAgICAgbV9tZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CkBAIC00NDUsMTAg
KzQ0NSwxMCBAQCBkb3VibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dGltZXJBbGlnbm1lbnRJ
bnRlcnZhbCgpIGNvbnN0CiAKIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkK
IHsKLSAgICAgaWYgKGlzRG9jdW1lbnQoKSkKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkK
ICAgICAgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25WTSgpOwogCi0gICAgcmV0dXJuIHRv
V29ya2VyR2xvYmFsU2NvcGUoKnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIHJldHVybiBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogfQogCiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCmluZGV4IGRhZGQ5YWExOTY2YTE5Nzk4NTFhZmMwNjEwYzE5Y2VmZjlmMTJlZTku
LmZjZTE4MDQ2ZjE0ZWY5MjExY2ViYjdiNGU0OTJjYWE0NDdiZjIxN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjM0LDEwICsyMzQsNiBAQCBw
cml2YXRlOgogI2VuZGlmCiB9OwogCi0jZGVmaW5lIFNDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9U
WVBFX0NBU1RTKFRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUb1ZhbHVlVHlwZU5hbWUqIHRvIyNUb1ZhbHVlVHlwZU5hbWUoY29uc3QgUmVmUHRyPFQ+
JiBjb250ZXh0KSB7IHJldHVybiB0byMjVG9WYWx1ZVR5cGVOYW1lKGNvbnRleHQuZ2V0KCkpOyB9
IFwKLSAgICBUWVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVOYW1lLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb250ZXh0LCBjb250ZXh0LT5pcyMjVG9WYWx1ZVR5cGVOYW1lKCksIGNvbnRleHQu
aXMjI1RvVmFsdWVUeXBlTmFtZSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4
IDcwZDEyZjg5OThiY2RjNWFlODZhOTM2NjgwZDA3YjcyNmY1MGJjZjIuLjg5MDNkZGYzYjEwMDhi
ZWE0MGZhZDEyMjkyN2RmYzAxYjQ5ZDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAt
OTUsMTAgKzk1LDYgQEAgaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQo
KSBjb25zdAogICAgIHJldHVybiB0cmVlU2NvcGUoKS5mb2N1c2VkRWxlbWVudCgpOwogfQogCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNoYWRvd1Jvb3QpCi0gICAgc3RhdGljIGJvb2wg
aXNTaGFkb3dSb290KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTaGFkb3dSb290
KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIFNoYWRvd1Jvb3Qq
IE5vZGU6OnNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQpA
QCAtMTE5LDYgKzExNSwxMCBAQCBpbmxpbmUgYm9vbCBoYXNTaGFkb3dSb290UGFyZW50KGNvbnN0
IE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZSgpICYmIG5vZGUucGFyZW50
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFk
b3dSb290KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzU2hhZG93Um9vdCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDA5YmMw
MzgxNTYxODIzMDQ0ZWE2Y2E2OTFhOTVhNTlkOWQ5OWM3Mi4uM2Y3MGYzZGQzMjU5M2NmNmUzM2Jk
MmZkYTEwYzQ3Njg5NGMwYjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0x
MDYsMTAgKzEwNiwxMCBAQCBpbmxpbmUgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBTdHlsZWRFbGVt
ZW50OjpwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAgICAgcmV0dXJuIGVsZW1lbnREYXRh
KCktPnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oU3R5bGVkRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1N0eWxlZEVsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1N0eWxlZEVsZW1lbnQoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19
IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxl
ZEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUuaXNTdHlsZWRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCA4Yjg0OGFiNzdhYmVjNGZiMjEy
MjBmZjE0MDc4OTNkNDUxOTNhZWQxLi42MGRlZWY5NDRlZDAzOWZjNzRhN2UwNTkzMTZkOGU2NjQw
MGViMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmgKQEAgLTc0LDEwICs3NCwxMCBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRleHQpCi0gICAgc3RhdGljIGJv
b2wgaXNUZXh0KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
VGV4dE5vZGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8g
VGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDkyYTk3OTZlNDY3NzM1Zjc4OWNh
Yjk4NzAyZTIyNWNiOGU5ZGMzYjYuLjI1NjNiMjRhZGVhMGEzNWJhNzNjOTg3YmRmOTU3NWM4NzI4
MjllZTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02MzksMjQgKzYzOSwyNiBAQCBz
dWIgcHJpbnRUeXBlSGVscGVycwogICAgICAgICBuZXh0IGlmICR0YWdDb3VudCA+IDE7CiAgICAg
ICAgIG15ICRuYW1lID0gJGNsYXNzVG9UYWdzeyRjbGFzc31bMF07CiAgICAgICAgIHByaW50IEYg
PDxFTkQKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzICRjbGFzczsKK30KIHRlbXBsYXRlIDx0
eXBlbmFtZSBBcmdUeXBlPgotY2xhc3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0ICRjbGFzcywg
QXJnVHlwZT4geworY2xhc3MgV1RGOjpUeXBlQ2FzdFRyYWl0czxjb25zdCBXZWJDb3JlOjokY2xh
c3MsIEFyZ1R5cGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYg
bm9kZSkgeyByZXR1cm4gY2hlY2tUYWdOYW1lKG5vZGUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNP
ZlR5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gY2hlY2tUYWdOYW1lKG5vZGUpOyB9CiBwcml2
YXRlOgogRU5ECiAgICAgICAgOwogICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVx
ICJIVE1MIiAmJiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFi
bGV9KSB7CiAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBzdGF0aWMgYm9vbCBjaGVja1Rh
Z05hbWUoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRN
TFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGNoZWNr
VGFnTmFtZShkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CisgICAgc3RhdGljIGJvb2wg
Y2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6OkhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biAhZWxlbWVudC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZShX
ZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CisgICAg
c3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBjaGVja1RhZ05hbWUoZG93bmNh
c3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQogRU5ECiAgICAgICAgICAgIDsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgc3RhdGljIGJvb2wg
Y2hlY2tUYWdOYW1lKGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVz
Ojoke25hbWV9VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5h
bWVzOjoke25hbWV9VGFnKTsgfQorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBX
ZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4g
ZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6
JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0
ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KIEVORAogICAgICAgICAgICA7CiAg
ICAgICAgfQpAQCAtNjc4LDExICs2ODAsOSBAQCBzdWIgcHJpbnRUeXBlSGVscGVyc0hlYWRlckZp
bGUKICAgICBwcmludCBGICIjaWZuZGVmICIuJHBhcmFtZXRlcnN7bmFtZXNwYWNlfS4iRWxlbWVu
dFR5cGVIZWxwZXJzX2hcbiI7CiAgICAgcHJpbnQgRiAiI2RlZmluZSAiLiRwYXJhbWV0ZXJze25h
bWVzcGFjZX0uIkVsZW1lbnRUeXBlSGVscGVyc19oXG5cbiI7CiAgICAgcHJpbnQgRiAiI2luY2x1
ZGUgXCIiLiRwYXJhbWV0ZXJze25hbWVzcGFjZX0uIk5hbWVzLmhcIlxuXG4iOwotICAgIHByaW50
IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIjsKIAogICAgIHByaW50VHlwZUhlbHBlcnMoJEYs
IFwlYWxsVGFncyk7CiAKLSAgICBwcmludCBGICJ9XG5cbiI7CiAgICAgcHJpbnQgRiAiI2VuZGlm
XG4iOwogCiAgICAgY2xvc2UgRjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDBh
OWI1YTJiZjBkNWIxYzU4MGE0ZTM5ZGIzYWE3ZTBiZjgwZmJhMWUuLmE2NWMzNzkwMmJmNjFlOTBk
N2JkMjUxMjI3ODUzNDI3YjQ5YmRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApA
QCAtOTcsMTEgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fd2lu
ZG93TmFtZWRJdGVtOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRG9j
dW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpOyB9Ci0gICAgc3RhdGlj
IGJvb2wgaXNIVE1MRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RG9jdW1l
bnQ+KG5vZGUpICYmIGlzSFRNTERvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2RlKSk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxEb2N1bWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7
IHJldHVybiBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3Vt
ZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSFRNTERvY3VtZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA2OGYyMzFiN2M3ZDc4NDQ0YWNjMWFk
MmFmN2JjYWE4MTZiNmQ4ODRhLi44MTIzNDc4ZGQ5ZTBhZWE0Mzk3NTY3MzllYWQwNTY1YTViMWI5
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNDYsMTAgKzE0Niw2IEBAIGlu
bGluZSBIVE1MRWxlbWVudDo6SFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50CiAgICAgQVNTRVJUKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRWxlbWVudCkKLSAg
ICBzdGF0aWMgYm9vbCBpc0hUTUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNIVE1MRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGlu
bGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgSFRNTFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1lKG5hbWUpOwpAQCAtMTU3LDYgKzE1MywxMCBA
QCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNpbmNsdWRlICJIVE1MRWxlbWVu
dFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZiAvLyBIVE1MRWxlbWVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGQ5MjA4M2EwNjc2YTVhOGVl
OTVkNzZmMDE3ZDQ1MmQ1MDhkNGU0MGMuLjUzY2YxYTczN2EwNDY5MzliYWU4MGViNTJmZGNlYzc5
Y2NiYjcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBdXRvZm9j
dXNlZCA6IDE7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJvbEVsZW1l
bnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBO
b2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9k
ZSkuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTEZvcm1D
b250cm9sRWxlbWVudChjb25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0Vs
ZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggZjM4MTUzZjhiMTExZTNmZWIxNTAzNTlh
YmI0N2ExYmQyMGRmMzkyMy4uM2NhN2FiMTNlMzE2ZGFmNmY1Y2NmMWQ2N2RjZThmMDNiMGM3YjNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNzYs
MTEgKzc2LDExIEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRnJhbWVFbGVtZW50QmFzZSkKLSAgICBzdGF0
aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBpczxIVE1MRnJhbWVFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZyYW1l
RWxlbWVudD4oZWxlbWVudCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRC
YXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBp
c0hUTUxGcmFtZUVsZW1lbnRCYXNlKGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNl
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkgfHwg
aXM8V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6
OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1l
bnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8g
SFRNTEZyYW1lRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKaW5kZXggMDZhNDUzNzQ1OGE4OTY2ODU0NDBjZWI5YjFjOTVhMDc3MTVhZjU4
OS4uOWMzYjI3ZThkNGFmNDBkN2MyZTBkNTdmNTAyYThjODgxOGE4ZDZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC02OSwxMSArNjksNiBAQCBw
cml2YXRlOgogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKIH07CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZyYW1lT3duZXJFbGVtZW50KQotICAgIHN0YXRpYyBi
b29sIGlzSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
Ci0KLQogY2xhc3MgU3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCkBAIC0xMDEs
NCArOTYsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCiAjZW5kaWYgLy8gSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDM3YTE0MTBmY2Q5NmMwNzdmYTM0NjkwYTBhNTIwOGMw
ZmQ1ZWZiOC4uOGY1MWU2NWUxOWU4ODQ5MDJjY2IwNjIxMTEwZmViNzNkMTA3NTQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwOSwxMSArOTA5LDYgQEAgc3Ry
dWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogI2VuZGlmCiAjZW5kaWYKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MTWVkaWFFbGVtZW50KQotICAgIHN0YXRpYyBi
b29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYg
aXNIVE1MTWVkaWFFbGVtZW50KHRvRWxlbWVudChub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKLQogI2lmbmRlZiBOREVCVUcKIHRlbXBsYXRlPD4KIHN0cnVjdCBWYWx1ZVRv
U3RyaW5nPE1lZGlhVGltZT4gewpAQCAtOTI0LDcgKzkxOSwxMiBAQCBzdHJ1Y3QgVmFsdWVUb1N0
cmluZzxNZWRpYVRpbWU+IHsKIH07CiAjZW5kaWYKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc1R5cGUodG9FbGVtZW50KG5vZGUpKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IDBmNTdmNDZhMWM3MTBhODdhNTNkZWE1NGMyM2Nj
MjJlZDg4OTFkMzAuLmY4YmM3ZjljNjMwNjZhMzRjYmQ1YjQ5NjhjOTE2ZmI2MjQ1ZjY2NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTEzNiwxMCArMTM2LDEw
IEBAIHByaXZhdGU6CiAgICAgRGlzcGxheVN0YXRlIG1fZGlzcGxheVN0YXRlOwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MUGx1Z0luRWxlbWVudCkKLSAgICBzdGF0aWMg
Ym9vbCBpc0hUTUxQbHVnSW5FbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNQbHVnaW5FbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxlbWVudCgpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MUGx1Z0luRWxlbWVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDA3
ODZmMjEyYWJhNjA2NzUwZjlmNWNmYmExOGJjNDA2ZDczN2JmMDYuLjg2ZGNjODY5MjhlYWE0NjZl
MTIxYmM5Njc1NWEzMzQzMzAwMWE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCkBAIC0xNTcsMTEgKzE1NywxMSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRN
TFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc1BsdWdJbkltYWdlRWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhU
TUxQbHVnSW5FbGVtZW50Pihub2RlKSAmJiBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoZG93bmNh
c3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
IC8vIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5oCmluZGV4IDAzNmJlYjZhYmNkZjI5MWJjYzYzOGZhMDU3YjFmMzM4NzRh
YmU4YzYuLjNjZGI5YWJmZGZjNGUxYmExMDhlNGE3ZDMzNGJmOTEzM2IyMjJmNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTYyLDExICs2MiwxMSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihIVE1MVGFibGVDZWxsRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hU
TUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6dGhUYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVDZWxsRWxl
bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYg
aXNIVE1MVGFibGVDZWxsRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0g
Ly8gbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxU
YWJsZUNlbGxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpI
VE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6
OkhUTUxOYW1lczo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRoVGFnKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2Rl
JiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNUeXBl
KGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50LmgKaW5kZXggNjg0NTcwNzc5MTcyZWRlNDgxMjMzNDE4YjRmZjNlNjE0
NTlhMTVjMi4uNTA1Y2NkZTIyOGM5ZTgzM2E1OWIzYWM2ZmIxOTJlMThiMmU5MjZlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaApAQCAtNjEsMTEg
KzYxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFk
ZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIG92ZXJyaWRlOwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MVGFibGVTZWN0aW9uRWxlbWVudCkKLSAgICBz
dGF0aWMgYm9vbCBpc0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0aGVhZFRhZykg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGZvb3RUYWcpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6OnRib2R5VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1l
bnQ+KG5vZGUpICYmIGlzSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1l
bnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi19IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
V2ViQ29yZTo6SFRNTE5hbWVzOjp0Ym9keVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVsZW1l
bnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDMzMzdmZDkz
NzQzY2M5NWY1YWE5YzM1YTIxZmRhZjUyNmU1NjViNzYuLmJkNjBhZmYxOWNkOWRlZjllNTI3MjBk
YTUyNjY1MTg0MjJkOTY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgY2hhciBtX2lzUGxhY2Vob2xkZXJWaXNpYmxlIDogMTsKIH07CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dEZvcm1Db250cm9sKCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQo
dG9FbGVtZW50KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0IFBv
c2l0aW9uJik7CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Rm9ybUNvbnRyb2woKTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
RWxlbWVudE5vZGUoKSAmJiBpc1R5cGUodG9FbGVtZW50KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgK
aW5kZXggNzgxZDAyY2EzNjNkOGZmYTQ1ZGRmMjc4N2Y3YTU4NTFhMjNjOTk0OC4uZTFlOWRlMjdk
ZmQ4YWE4YTIzODlmMDdkZGE2NzJlNzhkMmNmNzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmgKQEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRT
aHJpbmtJbWFnZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSW1hZ2VEb2N1
bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0ltYWdlRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc0ltYWdlRG9jdW1lbnQoKTsgfQotICAgIHN0YXRp
YyBib29sIGlzSW1hZ2VEb2N1bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxEb2N1
bWVudD4obm9kZSkgJiYgaXNJbWFnZURvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2RlKSk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbWFnZURvY3VtZW50
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzSW1hZ2VEb2N1bWVudCgpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6
OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5v
ZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYgLy8gSW1hZ2VE
b2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IDI3NGMy
YWI5OTA2MDA4OWFjNzkxOWZjMTdkYTZhYjRkNjhkYThhYjcuLmMyYTYzMWExZTUwNjZjZTk4Nzg0
YmFmOWQwMzE1ZGU3ZDg2MWI1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFi
ZWxhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVu
dC5oCkBAIC01MCwxMSArNTAsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJl
bGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKExhYmVsYWJsZUVsZW1lbnQpCi0gICAgc3RhdGljIGJv
b2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0xhYmVsYWJsZUVs
ZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYm
IGlzTGFiZWxhYmxlRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50KQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVt
ZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUp
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYURvY3VtZW50LmgKaW5kZXggYWI1ZWQwODFhNmE0MzE4NGQ4NzlkZTA3ZGJhNjAyMDBk
Y2NjNGUwZC4uMDNlZDgxYjUwOGVlMTA2YjkzOWRiZTkzNGM1YjY3ODE1MDZiODBlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKQEAgLTU2LDEyICs1NiwxMiBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX291dGdvaW5nUmVmZXJyZXI7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKE1lZGlhRG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNNZWRpYURvY3VtZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNNZWRpYURvY3Vt
ZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc01lZGlhRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzTWVkaWFEb2N1bWVudChkb3duY2Fz
dDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6TWVkaWFEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc01lZGlhRG9jdW1lbnQo
KTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7
IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdl
YkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
IAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRleCAx
ODgzNGQ2OGUwYTM1YTVlM2YxNjYwMDhhYmZiZmMxYWEyY2E3YjVjLi42ZmM2ZWJjZjgxOWEwY2Iw
NTZkZDQ4ZGUxZGM3OWVmZDc3ZDkxZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5oCkBAIC02MSwxMSArNjEsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SFRNTFBsdWdJbkVs
ZW1lbnQ+IG1fcGx1Z2luRWxlbWVudDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oUGx1Z2luRG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNQbHVnaW5Eb2N1bWVudChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzUGx1Z2luRG9jdW1lbnQo
KTsgfQotICAgIHN0YXRpYyBib29sIGlzUGx1Z2luRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzUGx1Z2luRG9jdW1lbnQoZG93bmNhc3Q8
RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OlBsdWdpbkRvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzUGx1Z2luRG9jdW1lbnQo
KTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7
IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdl
YkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
IAogI2VuZGlmIC8vIFBsdWdpbkRvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDZlOGI3Y2MxYzVhZGVmM2QyZmRjOTg4MmJmZTI0M2U2
N2NhMWE5MjUuLjU0N2EyMTA1MmIzMjk1ODYxMDFkMzE1NDk3ZDBjMzZkMjZhN2E4MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNzUsMTAgKzc1
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzRGlzdHJpYnV0aW9uOwogfTsKIAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihJbnNlcnRpb25Qb2ludCkKLSAgICBzdGF0aWMgYm9vbCBp
c0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNlcnRp
b25Qb2ludCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGlubGluZSBib29s
IGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4g
bm9kZSAmJiBpczxJbnNlcnRpb25Qb2ludD4obm9kZSkgJiYgZG93bmNhc3Q8SW5zZXJ0aW9uUG9p
bnQ+KCpub2RlKS5pc0FjdGl2ZSgpOwpAQCAtMTI3LDQgKzEyMyw4IEBAIGlubGluZSBib29sIGhh
c1NoYWRvd1Jvb3RPckFjdGl2ZUluc2VydGlvblBvaW50UGFyZW50KGNvbnN0IE5vZGUmIG5vZGUp
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpJbnNlcnRpb25Qb2ludCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEluc2VydGlvblBvaW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmgKaW5kZXggYmI3YjAzMjAxYmJjMDJlNTliMDU3YTY1NjcwNGUzNmNlMDdjYzk4
OC4uYzMxMjhiOGNiZmJkNjU0OWQ2YWE5ODQ1MjlkYTE2ODA2YWU4ZjAwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
QEAgLTcwLDExICs3MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQpCi0gICAgc3RhdGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3Qg
SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9k
ZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGNsYXNzIFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwpAQCAtMTA3LDYgKzEwMiwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9jYXB0dXJpbmc7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYg
aXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5oCmluZGV4IDNiM2Q5MTEwY2I4MGM1ZTJlNmYwMjc4NzA1NGY3ODNhOTlj
MTdhMDIuLjUyYWU0ODc4Y2QyNzRlOWM5MWFlNmYzN2RkYzQyNmM0ZDVmZjFkZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCkBAIC04MCwxMCArODAsMTAgQEAg
cHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViVlRURWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1dlYlZU
VEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1lbnQo
KTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V2ViVlRURWxlbWVu
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZWYwMDhkM2EyNmZlZDc2OTI1YzM4NTQxZGQz
MmM2MzY2NWYzNWM4My4uOGU5NDdjYTU4ZDJiYmEzY2ZhNjk5MjMyYWFiYzdhYzVmNDI3OTkwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTEyNjIsOCArMTI2Miw4IEBAIEluc3RydW1lbnRpbmdBZ2VudHMqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
CiAKIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0Zvck5vbkRvY3VtZW50Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpCi0g
ICAgICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZSh0b1dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpKQorICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uRm9yV29ya2VyR2xvYmFsU2Nv
cGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDJlOGMyYmZmN2FjMGMwM2ZjYTUwZTc2NDgxMzBjYTI0ZjBiOGNlYTQuLmUzZGNkYjQ4NmYx
OWU3MTA1MzJkOTIwOWY5NWY2NTk3MWZlMDA0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU2LDggKzU2LDggQEAgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY28KICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAgICBp
ZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCksIGNs
aWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVzdCwgb3B0aW9ucyk7Cisg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVzdCwg
b3B0aW9ucyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgKmNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7
CiB9CkBAIC02Niw4ICs2Niw4IEBAIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAgICAgQVNT
RVJUKGNvbnRleHQpOwogCi0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkg
ewotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9u
cyk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAgICBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKaW5kZXggOWZmYjk1Yjk4ZTNkZDZiZWIyNWI1NjVlZmYyNzQ3NTg0MGVl
ZjJmZi4uMmU4NzgwOTVmMjcxYjFjMDJlMzlhNDYwMTk1MmE3ZjVmYjFhMTJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC03NTIsOCArNzUyLDgg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlVXJsRnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmkKIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVx
dWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGNv
bnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQpLT50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2Fk
ZXIoQ3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUsIHJl
cXVlc3QsIHNlc3Npb25JRCkpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkpIHsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS50aHJl
YWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNr
KCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUsIHJlcXVlc3QsIHNlc3Npb25JRCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NjgsOCArNzY4LDggQEAgdm9pZCBNZW1v
cnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFJlc28KIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNz
aW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29w
ZSgpKSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPnRocmVhZCgpLndv
cmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRhc2soJmNyb3Nz
VGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzLCByZXF1ZXN0KSk7CisgICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9z
dFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRhc2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZy
b21TZXNzaW9uQ2FjaGVzLCByZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzSW1wbChjb250ZXh0LCByZXF1ZXN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IGUwOTkwNjcyZDBjZWJlNWIwN2I5
YWQ5ZDRjNmJkYTA5NTk0YTQ5ODQuLmI5OGZiZWI3MmVhN2ZhMzY5ODM5ZTBhOThkMTBhYjdmYmRh
MDgzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNzMsMTAgKzcz
LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsg
fQogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihNYXRoTUxFbGVtZW50KQotICAg
IHN0YXRpYyBib29sIGlzTWF0aE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzTWF0aE1MRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
IGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaXNNYXRoTUxFbGVtZW50KCkgJiYgZG93bmNhc3Q8
TWF0aE1MRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CkBAIC04NCw2ICs4MCwxMCBA
QCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpNYXRoTUxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzTWF0aE1MRWxl
bWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNpbmNsdWRlICJNYXRo
TUxFbGVtZW50VHlwZUhlbHBlcnMuaCIKIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggN2Q5NGEzZDRiODI3
ZjlkYTY2ZDg4NDI4NWVjOTJmZTk1OTlkMGFjNC4uZTcyMTFiMzkyOWYxOTYwOGU1MmNlYmU5MGRh
OTVlMjdiNTIyOGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJh
c2UuaApAQCAtNzIsMTUgKzcyLDE1IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZUFuaW1hdG9yPiBtX2FuaW1hdG9yOwogfTsKIAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihTVkdBbmltYXRlRWxlbWVudEJhc2UpCi0gICAgc3RhdGljIGJvb2wgaXNT
VkdBbmltYXRlRWxlbWVudEJhc2UoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudEJhc2UpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmFuaW1hdGVDb2xvclRhZykKLSAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFNW
R05hbWVzOjpzZXRUYWcpOworICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNv
cmU6OlNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6
U1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykKKyAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShXZWJDb3JlOjpTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpzZXRUYWcpOwogICAgIH0KLSAgICBzdGF0aWMg
Ym9vbCBpc1NWR0FuaW1hdGVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBp
czxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0FuaW1hdGVFbGVtZW50QmFzZShkb3duY2FzdDxT
VkdFbGVtZW50Pihub2RlKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYg
aXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KICNlbmRpZiAv
LyBTVkdBbmltYXRlRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCA2
Y2FjZjAzYTgxZThjYmM3M2I5NGZiZTYyZjNhMzQ1YmY4ZWJmNzk2Li5lZjViZTJlZWNkMDI1MDQ2
ZjJiNTFlYjlkYTA5M2ExOGQ1NDY0OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAt
NTIsMTEgKzUyLDExIEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKIH07
CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHRG9jdW1lbnQpCi0gICAgc3RhdGlj
IGJvb2wgaXNTVkdEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRv
Y3VtZW50LmlzU1ZHRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHRG9jdW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzU1ZHRG9j
dW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6U1ZHRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNTVkdE
b2N1bWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93
bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorCiAjZW5kaWYgLy8gU1ZHRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
aW5kZXggOWEyZTk2YzhmYzFiZGVjOTFjMmU3MGE5ZDhmMDc1NTlkZjBjMjIzNC4uZDgzM2MwNjFm
MDk1MTdiODFkZGJhYzQ5ZmUwNDcxNTk4M2M2NzhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CkBAIC0yMjEsMTAgKzIyMSw2IEBAIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7
CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYikgeyByZXR1cm4gYS5tYXRjaGVzKGIpOyB9CiB9OwogCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFNWR0VsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdFbGVt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFt
ZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBpc1NW
R0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqdGhpcykuaGFzVGFnTmFtZShuYW1l
KTsKQEAgLTIzMiw2ICsyMjgsMTAgQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25z
dCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1NWR0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCmluZGV4IDBjYjE5ZWZlM2U2MzIxMzQwYTg2OTA5ZTA3MWJkNDQyMTU4MWM3OWQuLjY2YWMz
YzIxMDUzYWYxMGEwMTg4NThkMjZhMmY5NmZiYmYyMzAyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
QEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogCiB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmlt
aXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKLSAgICBzdGF0aWMgYm9vbCBp
c1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBTVkdFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyhkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZH
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0ZpbHRlckVmZmVjdCgpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJu
IGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3Jl
OjpTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKaW5kZXggNTMzODA4
ZmM4MWJjZjlmYmE0NjdlMDllNDVmYjExNzE0ODFiNmQyZi4uMzY1ODliYjUyMzZkYjFkYjc5ZDc0
OGNhODZkNDJhODg4NWU0Y2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaApAQCAtMTA3LDE3ICsxMDcsMTcgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR0dy
YWRpZW50RWxlbWVudCkKLXN0YXRpYyBib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50KQorc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcpOworICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFn
KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50
VGFnKTsKIH0KLXN0YXRpYyBib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkKIHsKLSAg
ICByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdHcmFkaWVudEVsZW1lbnQoZG93
bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOworICAgIHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVt
ZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkp
OwogfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4
IDQzM2YzMWMwMDk3M2FkOGI5MWUyYjdkYzFiZDYwNWJhYWI5YzhlMDkuLjYxMjY2NmY0NWU1ZmMx
MzEwY2Q1MDY4MmI1ZWI4MTA1Mjc5MGFiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmgKQEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRJc29sYXRlQmxlbmRpbmc7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNW
R0dyYXBoaWNzRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR0dyYXBoaWNzRWxlbWVudChj
b25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU1ZHR3JhcGhpY3NF
bGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR0dyYXBoaWNzRWxlbWVudChjb25zdCBO
b2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0dyYXBoaWNz
RWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC5pc1NWR0dyYXBoaWNzRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+
KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFNWR0dyYXBoaWNzRWxl
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCmluZGV4IDAwOWFlNjYyYjEwOTdh
NDM3ODFhODBiMTU5ZDkxNDUyODdmNzcyMzcuLmZjNDZkN2M3Yjk4NzEyMmEyZTBkZjczYTUyZDM2
Y2Y0NjA0OWRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCkBAIC02MiwxMSAr
NjIsMTEgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRl
ZFByb3BlcnR5PFNWR1BvaW50TGlzdD4gbV9wb2ludHM7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFNWR1BvbHlFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHUG9seUVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnBvbHlsaW5lVGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHUG9seUVsZW1lbnQoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdQb2x5RWxl
bWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cG9seWxpbmVUYWcpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNW
R0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihu
b2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggYTU5MmFiZTcyNTNjZTlj
NzAzY2JlNjEwOGQzZjYwN2RiMDNmOTVmMS4uMDlmMjBlNDBjY2U2M2Y0Y2UxNjg1ZTAzZmZiNjkw
NWVjMjMxMTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
aApAQCAtMTE5LDExICsxMTksMTEgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR1RleHRD
b250ZW50RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR1RleHRDb250ZW50RWxlbWVudChj
b25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRlbnQo
KTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHVGV4dENvbnRlbnRF
bGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzVGV4dENvbnRlbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2Rl
KSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDRkOGMzMWI2NzY4NWNhODMxOTQyZTNh
NWJiNGQwMzY2NmJkY2FjOGUuLjg3NWRjYjllNTlhMDgzMzI2NzkzZjA0NzkyOTYxNDE0ZGRiODRh
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgK
QEAgLTIzNywxMSArMjM3LDExIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbmRpdGlv
bkV2ZW50TGlzdGVuZXI7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR1NN
SUxFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgU1ZHRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NNSUxFbGVtZW50KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHU01JTEVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVu
dD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZH
U01JTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0Vs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpT
VkdFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2Vu
ZGlmIC8vIFNWR1NNSUxFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZjlkMGUzYWI4ODVh
ODA0NDU3OTJjNmIyNzQ3NDJlNjkzYzZhMGYzNC4uMDQ2NDgyNzUwMWYzOTU1M2Y1Y2EzYjczZDJh
ZjhhMTg1N2YxOTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTI1NywxMiArMjU3LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFs9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KTsKICAgICAgICAgICAgIHBv
cnQtPmVudGFuZ2xlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+KGNoYW5uZWwp
KTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpOworICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpKTsKKyAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAg
ICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlzIHNo
b3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCi0gICAgICAgICAgICBBU1NF
UlQoIXdvcmtlckdsb2JhbFNjb3BlLT5pc0Nsb3NpbmcoKSk7Ci0gICAgICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3b3JrZXJHbG9iYWxTY29wZS0+aXNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRj
aEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CisgICAgICAgICAgICBBU1NFUlQoIXdv
cmtlckdsb2JhbFNjb3BlLmlzQ2xvc2luZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKHdvcmtlckdsb2JhbFNjb3BlLmlzU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUoKSk7CisgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGNy
ZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZGUxMjE0ZTY1
ZTU3MjRmMjQxMzgzZjVmYjdjMzZjNmVhNTRhZjIzNy4uZTAwOWU1NzU0MjVkYTQ2ZTRlNjQ3ZGE3
ODg3ZTY0ZDE4MTVkN2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTEzMywxMCArMTMzLDEwIEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OmNsb3NlKCkKICAgICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09dHJ1ZSB3aWxsIGJl
IGV4ZWN1dGVkLgogICAgIG1fY2xvc2luZyA9IHRydWU7CiAgICAgcG9zdFRhc2soeyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICBXb3JrZXJHbG9iYWxT
Y29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsK
KyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICAv
LyBOb3RpZnkgcGFyZW50IHRoYXQgdGhpcyBjb250ZXh0IGlzIGNsb3NlZC4gUGFyZW50IGlzIHJl
c3BvbnNpYmxlIGZvciBjYWxsaW5nIFdvcmtlclRocmVhZDo6c3RvcCgpLgotICAgICAgICB3b3Jr
ZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJveHkoKS53b3JrZXJHbG9i
YWxTY29wZUNsb3NlZCgpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3Jr
ZXJSZXBvcnRpbmdQcm94eSgpLndvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCk7CiAgICAgfSB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDQw
NGEyMDEyYzIxOWNmYzg0OTMxMmNiZWMyMmNkOTgzZDVmZGIyNWYuLjViNThhNjllY2RiODJjN2Y3
MGZmNjI0MzAxZGEyMDdjMTgzNDBkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4MSw4ICsxODIsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdG9w
T3JpZ2luOwogICAgIH07CiAKLVNDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9UWVBFX0NBU1RTKFdv
cmtlckdsb2JhbFNjb3BlKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBXb3JrZXJHbG9iYWxTY29wZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDJi
Y2FhNGJkOWM4MWM4MzAyZDFmZTJhNmUyODI4NmQ4OGVlOGY3MDYuLjJhNTAxODg5NDhlODFlOTgz
NzE0MWNjMTQ3ZDFmZWE3MGI2OGFkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC02OCwxNSArNjgsMTUgQEAgV29ya2VyTWVzc2Fn
aW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciogd29ya2VyT2JqZWN0KQogI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAg
ICAgICB8fCAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkg
JiYgY3VycmVudFRocmVhZCgpID09IHRvV29ya2VyR2xvYmFsU2NvcGUoKm1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1l
bnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQorICAgICAg
ICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYm
IGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogfQogCiBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fd29y
a2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHRv
V29ya2VyR2xvYmFsU2NvcGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhy
ZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmIGlzTWFpblRocmVhZCgpKQorICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFk
KCkudGhyZWFkSUQoKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Om5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFs9XSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250
ZXh0KS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygp
Lm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBl
dmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICB9KTsKIH0KIApA
QCAtMjI0LDE3ICsyMjQsMTcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29ubmVjdFRv
SW5zcGVjdG9yKFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWMKICAgICBBU1NFUlQo
IW1fcGFnZUluc3BlY3Rvcik7CiAgICAgbV9wYWdlSW5zcGVjdG9yID0gcGFnZUluc3BlY3RvcjsK
ICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3Bl
KCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgp
OworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0sIFdvcmtlckRlYnVn
Z2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5OjpkaXNjb25uZWN0RnJvbUluc3BlY3RvcigpCiB7Ci0gICAgbV9wYWdlSW5zcGVjdG9yID0g
MDsKKyAgICBtX3BhZ2VJbnNwZWN0b3IgPSBudWxscHRyOwogICAgIGlmIChtX2Fza2VkVG9UZXJt
aW5hdGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVz
dHJveWVkKTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsK
IH0KIApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47
CiAgICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKTsKICAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbbWVzc2FnZUNvcHldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFs
U2NvcGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kKG1lc3NhZ2VDb3B5KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkpOwogICAgIH0sIFdvcmtlckRlYnVnZ2VyQWdl
bnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVw
dEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMobV93b3JrZXJUaHJlYWQuZ2V0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDA1
YzVmYTRiNzNmODY3YTUzY2RmZDk1MDY5OTM2YTEwOTY4YThmMDEuLjk2NGEwYWFhNDdiMzU2Mjgw
OTA0NmQ1NzY5ZjMxNTYzZDcxMThjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTYxLDE0ICs2MSwxNCBAQCB2b2lkIFdvcmtlclNjcmlw
dExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNldEFsbG93Q3JlZGVu
dGlhbHMoQWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJl
cXVlc3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7CiAgICAgb3B0aW9ucy5zZXRT
ZW5kTG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJhY2tzKTsKIAotICAgIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodG9Xb3JrZXJHbG9iYWxTY29wZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlz
LCBvcHRpb25zKTsKIH0KICAgICAKIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
Y29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVl
c3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU0NDIyNTBhMzQ5ZmEzY2JhNmRjZmE2ZWYw
MDA4NGJiYjY2M2IzMTkuLmFkZTU2OTkzNGJmOTIzZWMyYzQ5NzVlMWMzNGZmMDQzOTI1Mjc2OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNCwyMSArMjE0
LDIxIEBAIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKICAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChtX3dvcmtlckdsb2Jh
bFNjb3BlLmdldCgpKTsKICNlbmRpZgogICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJt
aW5hdGUoeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0
KTsKKyAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFiYXNl
cyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAgICAgICBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgICAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKHdvcmtlckdsb2JhbFNjb3BlLCAmY2xl
YW51cFN5bmMpOworICAgICAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERh
dGFiYXNlcygmd29ya2VyR2xvYmFsU2NvcGUsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAotICAg
ICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7CisgICAg
ICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogCi0gICAg
ICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+bm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCk7CisgICAg
ICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5ub3RpZnlPYnNlcnZlcnNPZlN0b3AoKTsKIAogICAg
ICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9i
amVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBK
UyBvYmplY3RzLAogICAgICAgICAgICAgLy8gd2hpY2ggYmVjb21lIGRhbmdsaW5nIG9uY2UgSGVh
cCBpcyBkZXN0cm95ZWQuCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnJlbW92ZUFs
bEV2ZW50TGlzdGVuZXJzKCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICAg
ICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGRhdGFiYXNlIHRocmVhZCB0byBjbGVhbiB1cCBhbGwgaXRz
IHN0dWZmIHNvIHRoYXQgd2UKQEAgLTIzOCwxMCArMjM4LDEwIEBAIHZvaWQgV29ya2VyVGhyZWFk
OjpzdG9wKCkKIAogICAgICAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93biBjb21tYW5kIGF0IHRo
ZSBlbmQgb2YgdGhlIHF1ZXVlLCBzbyB0aGF0IHdlIGRlYWwKICAgICAgICAgICAgIC8vIHdpdGgg
YWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAgICAgICAg
ICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9
IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpOworICAgICAgICAgICAgd29ya2VyR2xvYmFs
U2NvcGUucG9zdFRhc2soeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFz
aywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAg
ICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBub3Qgc2FmZSB0
byBjYWxsIGNsZWFyU2NyaXB0IHVudGlsIGFsbCB0aGUgY2xlYW51cCB0YXNrcyBwb3N0ZWQgYnkg
ZnVuY3Rpb25zIGluaXRpYXRlZCBieSBXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzayBoYXZl
IGNvbXBsZXRlZC4KLSAgICAgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+Y2xlYXJTY3Jp
cHQoKTsKKyAgICAgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5jbGVhclNjcmlwdCgpOwog
ICAgICAgICAgICAgfSB9KTsKIAogICAgICAgICB9IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNs
YXNzZXMuY3BwCmluZGV4IDMzN2NkYTE5MTljMjJkMjMyMmVmNzA4MDQxNDI1ZjE5NDhhOWIxN2Iu
LjljNTBiY2Q4NDE0ZDJiNDJjNjIxMWQ3YzMwZTQ5YWNkZTg2MzBlNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTE1MDAsMjIgKzE1MDAsMjIgQEAgSURPTUVsZW1lbnQq
IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1lbnQqIGUpCiAgICAgSFJF
U1VMVCBocjsKICAgICBJRE9NRWxlbWVudCogZG9tRWxlbWVudCA9IDA7CiAKLSAgICBpZiAoV2Vi
Q29yZTo6aXM8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PihlKSkgeworICAgIGlmIChpczxXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxGb3JtRWxlbWVudCog
bmV3RWxlbWVudCA9IG5ldyBET01IVE1MRm9ybUVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3
RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVt
ZW50KTsKICAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgewogICAgICAg
ICBET01IVE1MSUZyYW1lRWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MSUZyYW1lRWxl
bWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURP
TUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6
aXM8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxJbnB1dEVsZW1l
bnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTElucHV0RWxlbWVudChlKTsKICAgICAgICAgaHIg
PSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRv
bUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6aXM8V2ViQ29yZTo6SFRNTE9wdGlv
bkVsZW1lbnQ+KGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTE9wdGlvbkVsZW1lbnQqIG5ld0VsZW1lbnQgPSBu
ZXcgRE9NSFRNTE9wdGlvbkVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVl
cnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKICAgICB9
IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBET01IVE1MU2Vs
ZWN0RWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MU2VsZWN0RWxlbWVudChlKTsKICAg
ICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2
b2lkKiopJmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6aXM8V2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPFdlYkNvcmU6OkhU
TUxUZXh0QXJlYUVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQq
IG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTFRleHRBcmVhRWxlbWVudChlKTsKICAgICAgICAgaHIg
PSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRv
bUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aXNIVE1MRWxlbWVudCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCmluZGV4IGRkZDdiZDZkOTA0NTZjNTI0Yjk0M2JjYzRk
M2NlZDkwZGQ1ZWUxOTQuLjgzMTY2MjliY2VkNGRiNzY0YTliN2Y0ZjJiMTRjMWNlYzUwMWJmNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC0zOSwxNyArMzksMTcgQEAg
LSAoV0tET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCiB7CiAg
ICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9uLgogICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01FbGVt
ZW50KFdlYkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZUVs
ZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NRWxl
bWVudChkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVFbGVtZW50KHRh
Z05hbWUsIGVjKS5nZXQoKSk7CiB9CiAKIC0gKFdLRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihO
U1N0cmluZyAqKWRhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NVGV4dChXZWJDb3Jl
Ojpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVUZXh0Tm9kZShkYXRh
KS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVRleHQoZG93bmNhc3Q8V2ViQ29y
ZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCkpOwogfQogCiAt
IChXS0RPTUVsZW1lbnQgKilib2R5CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVsZW1l
bnQoV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuYm9keSgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NRWxlbWVudChkb3duY2FzdDxXZWJDb3JlOjpEb2N1
bWVudD4oKl9pbXBsKS5ib2R5KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5t
bQppbmRleCBkOTFlODEyMDQ2MTYyNjI2ZTYyYzk0ZjJiM2Q5NWJiNDdiZTAzYjQxLi5lMzBhZTNj
ZDI0YThkMDRlNGUyYzhmZDdhYzk4NzQ1ZGM5YWQyMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRl
eHQubW0KQEAgLTM1LDE0ICszNSwxNCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01UZXh0CiAKIC0g
KE5TU3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBXZWJDb3JlOjpkb3duY2FzdDxXZWJDb3Jl
OjpUZXh0PigqX2ltcGwpLmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6VGV4
dD4oKl9pbXBsKS5kYXRhKCk7CiB9CiAKIC0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRh
CiB7CiAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9uLgogICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29y
ZTo6VGV4dD4oKl9pbXBsKS5zZXREYXRhKGRhdGEsIGVjKTsKKyAgICBkb3duY2FzdDxXZWJDb3Jl
OjpUZXh0PigqX2ltcGwpLnNldERhdGEoZGF0YSwgZWMpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238911</attachid>
            <date>2014-09-29 22:18:38 -0700</date>
            <delta_ts>2014-09-30 06:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140929221839.patch</filename>
            <type>text/plain</type>
            <size>91592</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMxNjkyODlmN2E5OTk4ZjYyNGIyNWE4
ZjdiOTE4YWNjNGI4MmEzYzQuLjc2OTU0ZWI0MmQ4NzM4ZjhiM2M2NmI5ZmRkMTM2OTkwNjQ0YmM4
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0
IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5oOgorICAgICAgICAqIHd0Zi9UeXBlQ2FzdHMuaDogQWRkZWQuCisgICAgICAgIChXVEY6Omlz
KToKKyAgICAgICAgKFdURjo6ZG93bmNhc3QpOgorCiAyMDE0LTA5LTI5ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTc0MDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxYmQ4ZDdlMTBlODkxYTVlZGNlMGQ3MjQyZjg0
ZDI1ODQxOTBiYjguLmNkMmY1NGVmNGYxYzJjZGQ1ODQ3YjdjYzUzOTU4OWY3OWQ5YmVlNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMDEgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNh
c3Q8PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBw
b3J0IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisgICAgICAgIFRvIGFjaGlldmUgdGhp
cywgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgLSBNb3ZlIGlzPD4g
LyBkb3duY2FzdDw+KCkgYW5kIE5vZGVUeXBlQ2FzdFRyYWl0cyBmcm9tIE5vZGUuaCB0byBhIG5l
dworICAgICAgICAgIHd0Zi9UeXBlQ2FzdHMuaCBoZWFkZXIuIEFsc28gbW92ZSB0aGVtIHRvIFdU
RiBuYW1lc3BhY2UgaW5zdGVhZCBvZgorICAgICAgICAgIFdlYkNvcmUgbmFtZXNwYWNlIGFzIHRo
ZXkgY2FuIGJlIHVzZWQgZm9yIGNsYXNzZXMgaW4gb3RoZXIgbmFtZXNwYWNlcworICAgICAgICAg
IChlLmcuIFdlYktpdCBuYW1lc3BhY2UpLgorICAgICAgICAtIFJlbmFtZSBOb2RlVHlwZUNhc3Rz
VHJhaXRzIHRvIFR5cGVDYXN0VHJhaXRzIGFzIGl0IGNhbiBiZSBzcGVjaWFsaXplZAorICAgICAg
ICAgIGZvciBub24tTm9kZXMuCisgICAgICAgIC0gU2luY2UgQysrIGRvZXMgbm90IGFsbG93IHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9ucyBpbiBkaWZmZXJlbnQKKyAgICAgICAgICBuYW1lc3BhY2Vz
LCBJIGhhZCB0byBtb3ZlIGFsbCB0aGUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkgdXNlcyB0
bworICAgICAgICAgIHRoZSBnbG9iYWwgc2NvcGUgYW5kIHVzZSB0aGUgV2ViQ29yZTo6IG5hbWVz
cGFjZSBleHBsaWNpdGx5IGluIHRob3NlLgorICAgICAgICAgIFRoaXMgaXMgYSBiaXQgdW5mb3J0
dW5hdGUgYnV0IEkgY291bGRuJ3QgZmluZCBhIGJldHRlciB3YXkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIHRha2VzIGNhcmUgb2Ygc3VwcG9ydGluZyBpczw+KCkgLyBkb3duY2FzdDw+KCkg
Zm9yCisgICAgICAgIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBjbGFzcywgd2hpY2ggZG9lcyBub3Qg
ZGVyaXZlIGZyb20gTm9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
Ojpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTUdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgor
ICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNBdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNDREFUQVNlY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
Q29tbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0RvY3VtZW50RnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5
cGUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50VHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVz
c2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVz
c2FnZXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjppcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkb3duY2FzdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUHNldWRvRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTaGFkb3dSb290KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU3R5
bGVkRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5
bGVkRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1RleHQpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRUeXBlSGVscGVycyk6CisgICAgICAgIChw
cmludFR5cGVIZWxwZXJzSGVhZGVyRmlsZSk6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxEb2N1bWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZyYW1lRWxlbWVudEJhc2UpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVPd25lckVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzSFRNTE1lZGlhRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTFBsdWdJbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFBsdWdJbkltYWdlRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFRhYmxlQ2VsbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNJbWFnZURvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0xhYmVsYWJsZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5oOgorICAgICAg
ICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWVkaWFEb2N1bWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUGx1Z2luRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV2ViVlRURWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVu
dENvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyk6CisgICAgICAgICogbWF0aG1s
L01hdGhNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c01hdGhNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0FuaW1h
dGVFbGVtZW50QmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6Cisg
ICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAo
aXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHR3JhZGllbnRFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdHcmFwaGljc0VsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzU1ZHUG9seUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1NWR1RleHRDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU1ZHU01JTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyQ29ubmVjdFRhc2s6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2Jh
bFNjb3BlOjpjbG9zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgor
ICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6fldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
TWVzc2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
c3RvcCk6CisKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIERvY3VtZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyMjEKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IGY2NzEyZmU5NmY0Yjk5YTc4NGE5ODAzYmEwZTFiMjA4M2ViNGY3Nzcu
LjFiZjFmYmU2YzdhYzcxYjU0NDM5NTYyM2MwMTQ4NDg2M2RlMGJiMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkg
c3VwcG9ydCB0byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8g
YWxsIHR5cGVzLCBub3QganVzdCBOb2Rlcy4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNw
cDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKworMjAxNC0wOS0yOSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgTWFrZSBpczw+
KCkgLyBkb3duY2FzdDw+KCkgd29yayBmb3IgSFRNTERvY3VtZW50IGFuZCBpdHMgc3ViY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTY5
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2NWI1NjkzNmE5MWQ4NDkzNWYzNTYzYWVkNzRlZTc1ZWQ5MDg2YjNl
Li41ZGZiYmExYzM1OGQxNWJlZGQ5YWE1MGYyYjNjOWE1OTc2NGE0ZjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMjIgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBv
cnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0
eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBj
cmVhdGVFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGNyZWF0ZVRleHROb2Rl
Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGJvZHldKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tOgorICAgICAgICAoLVtXS0RP
TVRleHQgZGF0YV0pOgorICAgICAgICAoLVtXS0RPTVRleHQgc2V0RGF0YTpdKToKKworMjAxNC0w
OS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRG9jdW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyMQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXgg
YTQwYmM4YjA2NTZhYjBkMTA5ZmJiZTBhZWFhNzJkMjUyYmU0OTYyYS4uNzJiZTNkNjM4Y2QzNWQ1
ODVjNTRhZWI4ZTY4YzcwYjU4NTQyZmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzg0LDYgKzM4
NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKQogCiAv
KiBUWVBFIENBU1QgKi8KIAorLy8gRklYTUU6IFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB0aGUgY29kZSBiYXNlIGlzIHBvcnRlZCB0byB1c2luZworLy8gdGhlIG5ldyBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTXyooKSBtYWNyby4KICNkZWZpbmUgVFlQRV9DQVNUU19CQVNFKFRvQ2xh
c3NOYW1lLCBhcmd1bWVudFR5cGUsIGFyZ3VtZW50TmFtZSwgcG9pbnRlclByZWRpY2F0ZSwgcmVm
ZXJlbmNlUHJlZGljYXRlKSBcCiBpbmxpbmUgVG9DbGFzc05hbWUqIHRvIyNUb0NsYXNzTmFtZShh
cmd1bWVudFR5cGUqIGFyZ3VtZW50TmFtZSkgXAogeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UeXBlQ2FzdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJhYmJiYzUxYWYxODc0NmZiMjZkZWVmMDE4OGIwMjFhYTVkODYwOGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlQ2FzdHMuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUeXBlQ2FzdHNfaAorI2RlZmluZSBUeXBlQ2FzdHNfaAorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUo
QXJnVHlwZSYpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVj
dCBUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRp
YyBib29sIGlzT2ZUeXBlKEV4cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8v
IFR5cGUgY2hlY2tpbmcgZnVuY3Rpb24sIHRvIHVzZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25j
YXN0PD4oKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGU+CitpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNl
c3NhcnkgdHlwZSBjaGVjayIpOworICAgIHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBl
Y3RlZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZShzb3VyY2UpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wg
aXMoQXJnVHlwZSogc291cmNlKQoreworICAgIEFTU0VSVChzb3VyY2UpOworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVu
bmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3Qg
RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoKnNvdXJjZSk7Cit9CisKKy8v
IFNhZmUgZG93bmNhc3RpbmcgZnVuY3Rpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6Omlz
X2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZSBkb3du
Y2FzdChTb3VyY2UmIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8
U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOwor
fQordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBl
bmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0
IFRhcmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoreworICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAi
VW5uZWNlc3NhcnkgY2FzdCIpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwg
Y29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Cit9CisKKy8vIEFkZCBzdXBw
b3J0IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+KCkgLyBkb3duY2FzdDw+
KCkgaGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihDbGFzc05hbWUpIFwKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPiBc
CitjbGFzcyBXVEY6OlR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNzTmFtZSwgQXJnVHlwZT4geyBc
CitwdWJsaWM6IFwKKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBzb3VyY2UpIHsg
cmV0dXJuIGlzVHlwZShzb3VyY2UpOyB9IFwKK3ByaXZhdGU6CisKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKSBcCit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjppczsKK3VzaW5nIFdURjo6ZG93bmNhc3Q7CisKKyNlbmRpZiAvLyBUeXBlQ2FzdHNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRl
eCBjZTAxMDA3YTdkMDAwNzg4ZTFjZjFiYTYxNDg1M2NkNzY2N2ZjMmU5Li4wMTI4ZjUwZDI5Mjlm
NTEyNWY4YjBiMTMyZGViYWQ3ZWVhOGM2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgU3Ry
aW5nIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0
dGluZ3MoKS5pbmRleGVkREJEYXRhYmFzZVBhdGgoKTsKICAgICB9Ci0gICAgY29uc3QgR3JvdXBT
ZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPmdy
b3VwU2V0dGluZ3MoKTsKKyAgICBjb25zdCBHcm91cFNldHRpbmdzKiBncm91cFNldHRpbmdzID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5ncm91cFNldHRpbmdzKCk7CiAg
ICAgaWYgKGdyb3VwU2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBncm91cFNldHRpbmdzLT5pbmRl
eGVkREJEYXRhYmFzZVBhdGgoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWRE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggOTFiMDQzYjEzZjFmNTQ3MDQzY2Y2MmRl
OWUzZDg2NDE4N2ZjMmYxZi4uYTNjMTI2NzIxOGY4MjI1MjA5M2Q0MjE4ZjA3NjU1ZTA3YTZmNTFm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2U6OmZyb20oU2NyaXB0RQogICAgIFdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGVJ
bmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9t
KGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAg
ICAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcjsKLSAgICAgICAgY29uc3Qg
R3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4
dCktPmdyb3VwU2V0dGluZ3MoKTsKKyAgICAgICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBT
ZXR0aW5ncyA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuZ3JvdXBTZXR0
aW5ncygpOwogICAgICAgICBpZiAoZ3JvdXBTZXR0aW5ncykKICAgICAgICAgICAgIGRhdGFiYXNl
RGlyZWN0b3J5SWRlbnRpZmllciA9IGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNlUGF0
aCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxNjU0ZGQ1NjBlMmM5
NTA5OTIzZDY2OWZlZTZmOTg5YjE3MDc1NDQ1Li44MzlmYTg3MjM2NmJkZTZlNDM3MDYwNTEyYWQy
NjFmNGNkMDgyNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU1LDEz
ICs1NSwxMyBAQCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdAogICAgIEFTU0VSVChjb250ZXh0KTsK
ICAgICBBU1NFUlQoY2xpZW50KTsKIAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0g
dG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsKLSAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVu
TG9vcCA9IHdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5ydW5Mb29wKCk7CisgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRl
eHQpOworICAgICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUu
dGhyZWFkKCkucnVuTG9vcCgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1vZGU7CiAgICAgICAg
IG1vZGUuYXBwZW5kTGl0ZXJhbCh3ZWJTb2NrZXRDaGFubmVsTW9kZSk7CiAgICAgICAgIG1vZGUu
YXBwZW5kTnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7Ci0gICAgICAgIHJldHVybiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnQsIG1vZGUudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKCZ3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBt
b2RlLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpj
cmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBjbGllbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDk5YzQwMmMz
MjdlN2Y5N2NhY2U5ZWM2Mzk1YzVkZWRlZGVkMDg1ZTQuLmQ0ZWRkNjkxZjkxY2IwMzk5M2FmOTNk
MDQzMjY3Y2JiZTRhNTJjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTEwOCw4ICsxMDgsOCBAQCBKU0RPTUdsb2JhbE9iamVj
dCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25DbwogICAgIGlmIChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAg
ICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSwgZXhlYyk7CiAKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gdG9Xb3JrZXJHbG9i
YWxTY29wZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcigpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTI1LDggKzEyNSw4IEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgaWYgKGlzPERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRvSlNET01H
bG9iYWxPYmplY3QoZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB3
b3JsZCk7CiAKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKQotICAgICAgICByZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAg
IHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMmQyYTc1NDZkZjIxYTQ5MzNlYWZi
YWMyYzQxNGI2MTdiNDljYmZkNS4uNWM3NmI2ZDQ1ZmIyZWRkNDNmODg2MDExZGJmMGNjZjJlZjYy
MjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCi0gICAgICAg
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAg
ICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkg
ewogICAgICAgICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjLT5leGNl
cHRpb24oKSkpOwogICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gfHwg
KHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKCkpKQotICAgICAgICAgICAgICAg
IHRvV29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT5m
b3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24o
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGQxMWU0NTRkYmE5N2M2
MmUyMWUwNmU0NWRhYTEwYjhkZmMzY2Y4NjcuLmExYjUxYWEzNWYyNzM1OTMyMjkxMDI5MmZhN2M2
MWJjODZmNzY1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmIChpczxEb2N1bWVudD4o
Y29udGV4dCkpCiAgICAgICAgIGV4ZWN1dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsK
ICAgICBlbHNlCi0gICAgICAgIGV4ZWN1dGUodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSk7
CisgICAgICAgIGV4ZWN1dGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsK
IH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IDFmNmJjZTQzMTBiZmU0MzU1MDc3
YzlhZWYzNDljNDYyOTEwYjU4MzQuLmE3YTg5NDU0NzliZDU1MjNhYjM0MjczNWU3NzIxMzdjNDBl
MGRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtOTksMTAgKzk5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQ7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKEF0dHIpCi0gICAgc3RhdGljIGJvb2wgaXNBdHRyKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OkF0dHIpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEF0dHJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NEQVRBU2VjdGlvbi5oCmluZGV4IDZjZDRmNjhjNjBiOWQ2NWU5M2RlN2E5MTEwODkyNzZkYTYy
ZTk1OWEuLjdlOTgyM2UyZmE3MzhhNzBhZTU2MWVkMDliY2M5ZTAzNmI3MmFkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ0RBVEFTZWN0aW9uLmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDREFUQVNlY3Rpb24pCi0g
ICAgc3RhdGljIGJvb2wgaXNDREFUQVNlY3Rpb24oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q0RBVEFTZWN0aW9uKQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVU
eXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBDREFUQVNlY3Rpb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggMDE2ZWRkNWFmMmZmODE1NDk2N2FiNjk5OTA0OWVkZDdk
ZWIxODVkYi4uMzE3ZDkzMWI0Zjc1MjI1NmNjYmUwNjM4ZmI2MDBiMDQ0ODk1YzIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC03NiwxMCArNzYsMTAgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9kYXRhOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDaGFy
YWN0ZXJEYXRhKQotICAgIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLmlzQ2hhcmFjdGVyRGF0YU5vZGUoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJh
Y3RlckRhdGFOb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
IC8vIENoYXJhY3RlckRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggMGE3ZGVjZWM5YTkyZGM5
ZGUzMmM3MTFhNzI0YmExMGNlNmI3MGEyOC4uYzFhNDlkNTlhOGE5YmJkOWU3OWE5ZGRkMGIyZjQ5
YjFiN2I4M2ZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKENvbW1lbnQpCi0gICAg
c3RhdGljIGJvb2wgaXNDb21tZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9k
ZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkNvbW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBXZWJDb3JlOjpO
b2RlOjpDT01NRU5UX05PREU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2Vu
ZGlmIC8vIENvbW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNDJkNDQyYzYyOGFmMmU3
NTNhYmRlNTJjZjdhZWUxYmI3ODRkMDRmLi45MmRkZmMyMDAyYTY1ODE5NjkzMzVkNzFkMDkxNmRk
MDk3YmZmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc0MCwxMyArMTc0MCwxMyBAQCBp
bmxpbmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3Vt
ZW50Kik7CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNEb2N1bWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7IHJldHVybiBjb250ZXh0LmlzRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzRG9j
dW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3VtZW50Tm9kZSgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudCkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0RvY3Vt
ZW50Tm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKIG5hbWVzcGFjZSBX
VEYgewogaW5saW5lIFdlYkNvcmU6OkRvY3VtZW50KiBnZXRQdHIoV2ViQ29yZTo6RG9jdW1lbnQm
IHApIHsgcmV0dXJuICZwOyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApp
bmRleCBhYzdkNmY2NWJmNDViYmU0OWUxMGMyODg5Y2U0MjE0MWQ4ZGVhMTk0Li42N2ViZmMzZTk4
NGI2ODA1ZDdkYjBlZmZiMzQzNWRjMWJkZWI4NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmgKQEAgLTUyLDEwICs1MiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnRGcmFnbWVudCkKLSAgICBzdGF0aWMgYm9v
bCBpc0RvY3VtZW50RnJhZ21lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0Rv
Y3VtZW50RnJhZ21lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi19IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdt
ZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmgKaW5kZXggZjRlZjc5Y2UwZWQ1YTQwNWRhZDI5NWZkMDM4M2E0ZGUz
OWRiMmZiMi4uYTliN2E2YTUyOWE3YTdiZWRkMTFhOTIwYjMzNGRjMDZlODAxZjkzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3Vic2V0OwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihEb2N1
bWVudFR5cGUpCi0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudFR5cGUoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsg
fQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RG9jdW1lbnRUeXBlKQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLm5vZGVUeXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNTIzOTM1NTQ0YWU2NGRlZTQxNTA4NjFiOWZiY2M4NjZiOTExNTkzOC4uZDhhOGJhZmNh
MTM4YTNkNzk2YTc0ODBjZTE4ZDU2NjYxZDg1YmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02
NzAsMTEgKzY3MCw2IEBAIGlubGluZSBib29sIGlzRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKTsgfQogCiBOT0RFX1RZUEVfQ0FTVFMoRWxlbWVu
dCkKIAotdGVtcGxhdGUgPD4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgRWxlbWVu
dCwgY29uc3QgTm9kZT4gewotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKTsgfQotfTsKLQogaW5saW5lIGJvb2wgTm9k
ZTo6aGFzQXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQodGhpcyktPmhhc0F0dHJpYnV0ZXMoKTsKQEAgLTc4Niw0ICs3ODEsOSBAQCBp
bmxpbmUgVW5pcXVlRWxlbWVudERhdGEmIEVsZW1lbnQ6OmVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFdURjo6
VHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6RWxlbWVudCwgY29uc3QgV2ViQ29yZTo6Tm9k
ZT4geworICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpOyB9Cit9OworCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IGYyNGQ2YzhhNzVmZGUxYTM4MGJkYTY5MzI5ODA3YzAx
NjkyOWI3NjQuLjU4YmViN2Y5YWE0NmQ2NzY5NjI5YjY0Y2JkZWNmNDQ5ZWE0MTg0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgTWVzc2Fn
ZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgIHdoaWxlIChtX2VudGFuZ2xlZENoYW5uZWwg
JiYgbV9lbnRhbmdsZWRDaGFubmVsLT50cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShtZXNzYWdlLCBj
aGFubmVscykpIHsKIAogICAgICAgICAvLyBjbG9zZSgpIGluIFdvcmtlciBvbm1lc3NhZ2UgaGFu
ZGxlciBzaG91bGQgcHJldmVudCBuZXh0IG1lc3NhZ2UgZnJvbSBkaXNwYXRjaGluZy4KLSAgICAg
ICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpICYm
IHRvV29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+aXNDbG9zaW5n
KCkpCisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuaXNDbG9zaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGOjptb3ZlKGNoYW5uZWxzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCA3YzhhOWE2ODVlMzk3YjJjZGJkNzk2NDRkYTA3NDZlZjY1MmRiMTA3
Li40Y2QzMTU3MGJhNDExOTc2OTkxNTZhMTdhYTg4ODg2N2I0ZDE3Yzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgVk07CkBAIC03MzksNTggKzc0
MCw2IEBAIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhv
c3RGcmVlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50Tm9kZSgpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IE5vZGVUeXBl
Q2FzdFRyYWl0cyB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmKTsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGU+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRz
PEV4cGVjdGVkVHlwZSwgRXhwZWN0ZWRUeXBlPiB7Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEV4
cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLS8vIFR5cGUgY2hlY2tpbmcgZnVu
Y3Rpb24gZm9yIE5vZGVzLCB0byB1c2UgYmVmb3JlIGNhc3Rpbmcgd2l0aCBkb3duY2FzdDw+KCku
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotaW5s
aW5lIGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBl
IGNoZWNrIik7Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5
cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc1R5cGUobm9kZSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpcyhBcmdUeXBl
KiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBl
IGNoZWNrIik7Ci0gICAgcmV0dXJuIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5
cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc1R5cGUoKm5vZGUpOwotfQotCi0vLyBEb3duY2FzdGluZyBm
dW5jdGlvbnMgZm9yIE5vZGUgdHlwZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4KLWlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29u
c3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0
KFNvdXJjZSYgc291cmNlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxU
YXJnZXQsIFNvdXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3Vy
Y2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7Ci19Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFy
Z2V0KiwgVGFyZ2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCi17Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5l
Y2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNv
dXJjZSB8fCBpczxUYXJnZXQ+KCpzb3VyY2UpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25z
dCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlwZT4oc291cmNlKTsKLX0KLQotLy8gQWRkIHN1cHBvcnQg
Zm9yIHR5cGUgY2hlY2tpbmcgLyBjYXN0aW5nIHVzaW5nIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBo
ZWxwZXJzIGZvciBhIHNwZWNpZmljIGNsYXNzLgotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKENsYXNzTmFtZSkgXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPiBc
Ci0gICAgY2xhc3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNzTmFtZSwgQXJnVHlwZT4g
eyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBu
b2RlKSB7IHJldHVybiBpcyMjQ2xhc3NOYW1lKG5vZGUpOyB9IFwKLSAgICBwcml2YXRlOgotCi0j
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkgXAotICAgIH07Ci0KIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBhbGwgdXNlcyBzaG91bGQgYmUgcmVwbGFjZWQg
d2l0aCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTXyooKS4KICNkZWZpbmUgTk9ERV9UWVBFX0NBU1RT
KFRvQ2xhc3NOYW1lKSBcCiAgICAgVFlQRV9DQVNUU19CQVNFKFRvQ2xhc3NOYW1lLCBOb2RlLCBu
b2RlLCBXZWJDb3JlOjppcyMjVG9DbGFzc05hbWUoKm5vZGUpLCBXZWJDb3JlOjppcyMjVG9DbGFz
c05hbWUobm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
aW5kZXggYjMyNWMzOGRhZjU0MGEwOWU4ZmJkYjUzOGZjZTdiZjAzZWU4MDM5YS4uM2Q3MjNhYWY4
MWU4OGFjMWE2ZDQzZWNiODQ0N2Y3YTYxNzk4Y2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtOTEsMTAgKzkxLDEwIEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHJvY2Vzc2luZ0luc3RydWN0
aW9uKQotICAgIHN0YXRpYyBib29sIGlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBX
ZWJDb3JlOjpOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApp
bmRleCAwYTkwYTQ1ZTYwMTk5MmNlNDczMDA5MjhkMjQ4MWU0ZDU1M2MxZGZiLi40YmU1Yzk2OTEw
MzM5Yjk2N2M3NmFjY2Y2NTkzYmU0ZGExNzk5MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmgKQEAgLTc3LDEwICs3NywxMCBAQCBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlICYm
IHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiAoc3R5bGUtPmNvbnRlbnREYXRhKCkgfHwgc3R5
bGUtPmhhc0Zsb3dGcm9tKCkpOwogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFBz
ZXVkb0VsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UHNldWRvRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1BzZXVkb0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCA1MGE4NGM3Nzk0ODFiOThlN2I3ZmExM2M2YWFiZWVhY2I5ZGJmMDY4Li5kY2VmNTc1
MmIwZDA5ZWY5ZTI0ZWQ5YWI4OGY0Mjk1N2I5Y2IyMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCiAjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgpAQCAtMTU4LDE2ICsxNTksMTYgQEAg
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCkK
IAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2Fn
ZVBvcnQmIG1lc3NhZ2VQb3J0KQogewotICAgIEFTU0VSVCgoaXNEb2N1bWVudCgpICYmIGlzTWFp
blRocmVhZCgpKQotICAgICAgICB8fCAoaXNXb3JrZXJHbG9iYWxTY29wZSgpICYmIGN1cnJlbnRU
aHJlYWQoKSA9PSB0b1dvcmtlckdsb2JhbFNjb3BlKHRoaXMpLT50aHJlYWQoKS50aHJlYWRJRCgp
KSk7CisgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQor
ICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFk
KCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJ
RCgpKSk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KIAogdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9y
dCYgbWVzc2FnZVBvcnQpCiB7Ci0gICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIHx8IChpc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVh
ZCgpID09IHRvV29ya2VyR2xvYmFsU2NvcGUodGhpcyktPnRocmVhZCgpLnRocmVhZElEKCkpKTsK
KyAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCisgICAg
ICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkp
KTsKIAogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQpAQCAtNDQ1
LDEwICs0NDYsMTAgQEAgZG91YmxlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwoKSBjb25zdAogCiBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2
bSgpCiB7Ci0gICAgIGlmIChpc0RvY3VtZW50KCkpCisgICAgaWYgKGlzPERvY3VtZW50PigqdGhp
cykpCiAgICAgICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKTsKIAotICAgIHJldHVy
biB0b1dvcmtlckdsb2JhbFNjb3BlKCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyAgICByZXR1cm4g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKIH0KIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCBkYWRkOWFhMTk2NmExOTc5ODUxYWZjMDYxMGMxOWNlZmY5ZjEy
ZWU5Li5mY2UxODA0NmYxNGVmOTIxMWNlYmI3YjRlNDkyY2FhNDQ3YmYyMTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTIzNCwxMCArMjM0LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotI2RlZmluZSBTQ1JJUFRfRVhFQ1VUSU9OX0NPTlRF
WFRfVFlQRV9DQVNUUyhUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgVG9WYWx1ZVR5cGVOYW1lKiB0byMjVG9WYWx1ZVR5cGVOYW1lKGNvbnN0IFJlZlB0
cjxUPiYgY29udGV4dCkgeyByZXR1cm4gdG8jI1RvVmFsdWVUeXBlTmFtZShjb250ZXh0LmdldCgp
KTsgfSBcCi0gICAgVFlQRV9DQVNUU19CQVNFKFRvVmFsdWVUeXBlTmFtZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgY29udGV4dCwgY29udGV4dC0+aXMjI1RvVmFsdWVUeXBlTmFtZSgpLCBjb250
ZXh0LmlzIyNUb1ZhbHVlVHlwZU5hbWUoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApp
bmRleCA3MGQxMmY4OTk4YmNkYzVhZTg2YTkzNjY4MGQwN2I3MjZmNTBiY2YyLi44OTAzZGRmM2Ix
MDA4YmVhNDBmYWQxMjI5MjdkZmMwMWI0OWQzZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgK
QEAgLTk1LDEwICs5NSw2IEBAIGlubGluZSBFbGVtZW50KiBTaGFkb3dSb290OjphY3RpdmVFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gdHJlZVNjb3BlKCkuZm9jdXNlZEVsZW1lbnQoKTsKIH0K
IAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTaGFkb3dSb290KQotICAgIHN0YXRpYyBi
b29sIGlzU2hhZG93Um9vdChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU2hhZG93
Um9vdCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGlubGluZSBTaGFkb3dS
b290KiBOb2RlOjpzaGFkb3dSb290KCkgY29uc3QKIHsKICAgICBpZiAoIWlzRWxlbWVudE5vZGUo
KSkKQEAgLTExOSw2ICsxMTUsMTAgQEAgaW5saW5lIGJvb2wgaGFzU2hhZG93Um9vdFBhcmVudChj
b25zdCBOb2RlJiBub2RlKQogICAgIHJldHVybiBub2RlLnBhcmVudE5vZGUoKSAmJiBub2RlLnBh
cmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
U2hhZG93Um9vdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYg
bm9kZSkgeyByZXR1cm4gbm9kZS5pc1NoYWRvd1Jvb3QoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDQw
OWJjMDM4MTU2MTgyMzA0NGVhNmNhNjkxYTk1YTU5ZDlkOTljNzIuLjNmNzBmM2RkMzI1OTNjZjZl
MzNiZDJmZGExMGM0NzY4OTRjMGI4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApA
QCAtMTA2LDEwICsxMDYsMTAgQEAgaW5saW5lIGNvbnN0IFN0eWxlUHJvcGVydGllcyogU3R5bGVk
RWxlbWVudDo6cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQogICAgIHJldHVybiBlbGVtZW50
RGF0YSgpLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwogfQogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFN0eWxlZEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTdHlsZWRF
bGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTdHlsZWRFbGVtZW50KCk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotfSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpT
dHlsZWRFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmlzU3R5bGVkRWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggOGI4NDhhYjc3YWJlYzRm
YjIxMjIwZmYxNDA3ODkzZDQ1MTkzYWVkMS4uNjBkZWVmOTQ0ZWQwMzlmYzc0YTdlMDU5MzE2ZDhl
NjY0MDBlYjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC03NCwxMCArNzQsMTAgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUZXh0KQotICAgIHN0YXRp
YyBib29sIGlzVGV4dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzVGV4dE5vZGUo
KTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dCkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9k
ZS5pc1RleHROb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
IC8vIFRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA5MmE5Nzk2ZTQ2NzczNWY3
ODljYWI5ODcwMmUyMjVjYjhlOWRjM2I2Li4yNTYzYjI0YWRlYTBhMzViYTczYzk4N2JkZjk1NzVj
ODcyODI5ZWU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjM5LDI0ICs2MzksMjYg
QEAgc3ViIHByaW50VHlwZUhlbHBlcnMKICAgICAgICAgbmV4dCBpZiAkdGFnQ291bnQgPiAxOwog
ICAgICAgICBteSAkbmFtZSA9ICRjbGFzc1RvVGFnc3skY2xhc3N9WzBdOwogICAgICAgICBwcmlu
dCBGIDw8RU5ECituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyAkY2xhc3M7Cit9CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQXJnVHlwZT4KLWNsYXNzIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCAkY2xh
c3MsIEFyZ1R5cGU+IHsKK2NsYXNzIFdURjo6VHlwZUNhc3RUcmFpdHM8Y29uc3QgV2ViQ29yZTo6
JGNsYXNzLCBBcmdUeXBlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5
cGUmIG5vZGUpIHsgcmV0dXJuIGNoZWNrVGFnTmFtZShub2RlKTsgfQorICAgIHN0YXRpYyBib29s
IGlzT2ZUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGNoZWNrVGFnTmFtZShub2RlKTsgfQog
cHJpdmF0ZToKIEVORAogICAgICAgIDsKICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCIgJiYgJHBhcnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZh
aWxhYmxlfSkgewogICAgICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgc3RhdGljIGJvb2wgY2hl
Y2tUYWdOYW1lKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5p
c0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgY2hlY2tUYWdO
YW1lKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBj
aGVja1RhZ05hbWUoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorICAgIHN0YXRpYyBi
b29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAmJiBlbGVtZW50Lmhhc1RhZ05h
bWUoV2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQor
ICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7
IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYgY2hlY2tUYWdOYW1lKGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KIEVORAogICAgICAgICAgICA7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIHN0YXRpYyBi
b29sIGNoZWNrVGFnTmFtZShjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1O
YW1lczo6JHtuYW1lfVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29u
c3QgV2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFt
ZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZShXZWJDb3JlOjokcGFy
YW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CiBFTkQKICAgICAgICAgICAg
OwogICAgICAgIH0KQEAgLTY3OCwxMSArNjgwLDkgQEAgc3ViIHByaW50VHlwZUhlbHBlcnNIZWFk
ZXJGaWxlCiAgICAgcHJpbnQgRiAiI2lmbmRlZiAiLiRwYXJhbWV0ZXJze25hbWVzcGFjZX0uIkVs
ZW1lbnRUeXBlSGVscGVyc19oXG4iOwogICAgIHByaW50IEYgIiNkZWZpbmUgIi4kcGFyYW1ldGVy
c3tuYW1lc3BhY2V9LiJFbGVtZW50VHlwZUhlbHBlcnNfaFxuXG4iOwogICAgIHByaW50IEYgIiNp
bmNsdWRlIFwiIi4kcGFyYW1ldGVyc3tuYW1lc3BhY2V9LiJOYW1lcy5oXCJcblxuIjsKLSAgICBw
cmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiI7CiAKICAgICBwcmludFR5cGVIZWxwZXJz
KCRGLCBcJWFsbFRhZ3MpOwogCi0gICAgcHJpbnQgRiAifVxuXG4iOwogICAgIHByaW50IEYgIiNl
bmRpZlxuIjsKIAogICAgIGNsb3NlIEY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRl
eCAwYTliNWEyYmYwZDViMWM1ODBhNGUzOWRiM2FhN2UwYmY4MGZiYTFlLi5hNjVjMzc5MDJiZjYx
ZTkwZDdiZDI1MTIyNzg1MzQyN2I0OWJkYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmgKQEAgLTk3LDExICs5NywxMSBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJlZE1hcCBt
X3dpbmRvd05hbWVkSXRlbTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRN
TERvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRNTERvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzSFRNTERvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERv
Y3VtZW50Pihub2RlKSAmJiBpc0hUTUxEb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9kZSkp
OyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRG9jdW1lbnQp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCkgeyByZXR1cm4gZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpE
b2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pihub2Rl
KSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEhUTUxEb2N1
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNjhmMjMxYjdjN2Q3ODQ0NGFj
YzFhZDJhZjdiY2FhODE2YjZkODg0YS4uODEyMzQ3OGRkOWUwYWVhNDM5NzU2NzM5ZWFkMDU2NWE1
YjFiOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTQ2LDEwICsxNDYsNiBA
QCBpbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudAogICAgIEFTU0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEVsZW1lbnQp
Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzSFRNTEVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQot
CiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogewogICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oKnRoaXMpICYmIGRvd25j
YXN0PEhUTUxFbGVtZW50PigqdGhpcykuaGFzVGFnTmFtZShuYW1lKTsKQEAgLTE1Nyw2ICsxNTMs
MTAgQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1l
bnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYgLy8gSFRNTEVsZW1lbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBkOTIwODNhMDY3NmE1
YThlZTk1ZDc2ZjAxN2Q0NTJkNTA4ZDRlNDBjLi41M2NmMWE3MzdhMDQ2OTM5YmFlODBlYjUyZmRj
ZWM3OWNjYmI3Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaApAQCAtMTkwLDEyICsxOTAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXV0
b2ZvY3VzZWQgOiAxOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVu
dChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xF
bGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50
KG5vZGUpLmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBlbGVtZW50KSB7
IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS5pc0Zvcm1Db250cm9sRWxlbWVudCgp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGYzODE1M2Y4YjExMWUzZmViMTUw
MzU5YWJiNDdhMWJkMjBkZjM5MjMuLjNjYTdhYjEzZTMxNmRhZjZmNWNjZjFkNjdkY2U4ZjAzYjBj
N2IzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAg
LTc2LDExICs3NiwxMSBAQCBwcml2YXRlOgogICAgIGludCBtX21hcmdpbkhlaWdodDsKIH07CiAK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZyYW1lRWxlbWVudEJhc2UpCi0gICAg
c3RhdGljIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXM8SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTElG
cmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MRnJhbWVFbGVt
ZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkg
JiYgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50
QmFzZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
IHx8IGlzPFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJD
b3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxF
bGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlm
IC8vIEhUTUxGcmFtZUVsZW1lbnRCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCmluZGV4IDA2YTQ1Mzc0NThhODk2Njg1NDQwY2ViOWIxYzk1YTA3NzE1
YWY1ODkuLjljM2IyN2U4ZDRhZjQwZDdjMmUwZDU3ZjUwMmE4Yzg4MThhOGQ2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNjksMTEgKzY5LDYg
QEAgcHJpdmF0ZToKICAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxGcmFtZU93bmVyRWxlbWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc0hUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotCi0KIGNsYXNzIFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyIHsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcihDb250YWluZXJOb2RlJiByb290KQpAQCAt
MTAxLDQgKzk2LDggQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0ZyYW1lT3duZXJFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKwogI2VuZGlmIC8vIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQzN2ExNDEwZmNkOTZjMDc3ZmEzNDY5MGEwYTUy
MDhjMGZkNWVmYjguLjhmNTFlNjVlMTllODg0OTAyY2NiMDYyMTExMGZlYjczZDEwNzU0MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05MDksMTEgKzkwOSw2IEBA
IHN0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+IHsKICNlbmRpZgogI2VuZGlmCiAK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTE1lZGlhRWxlbWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc0hUTUxNZWRpYUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5pc01lZGlhRWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MTWVk
aWFFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgp
ICYmIGlzSFRNTE1lZGlhRWxlbWVudCh0b0VsZW1lbnQobm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCi0KICNpZm5kZWYgTkRFQlVHCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgVmFs
dWVUb1N0cmluZzxNZWRpYVRpbWU+IHsKQEAgLTkyNCw3ICs5MTksMTIgQEAgc3RydWN0IFZhbHVl
VG9TdHJpbmc8TWVkaWFUaW1lPiB7CiB9OwogI2VuZGlmCiAKLX0gLy9uYW1lc3BhY2UKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNUeXBlKHRvRWxlbWVudChub2RlKSk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCAwZjU3ZjQ2YTFjNzEwYTg3YTUzZGVhNTRj
MjNjYzIyZWQ4ODkxZDMwLi5mOGJjN2Y5YzYzMDY2YTM0Y2JkNWI0OTY4YzkxNmZiNjI0NWY2NjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMzYsMTAgKzEz
NiwxMCBAQCBwcml2YXRlOgogICAgIERpc3BsYXlTdGF0ZSBtX2Rpc3BsYXlTdGF0ZTsKIH07CiAK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFBsdWdJbkVsZW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNIVE1MUGx1Z0luRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzUGx1Z2luRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1BsdWdpbkVsZW1lbnQoKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSFRNTFBsdWdJbkVsZW1l
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRl
eCAwNzg2ZjIxMmFiYTYwNjc1MGY5ZjVjZmJhMThiYzQwNmQ3MzdiZjA2Li44NmRjYzg2OTI4ZWFh
NDY2ZTEyMWJjOTY3NTVhMzM0MzMwMDFhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMTU3LDExICsxNTcsMTEgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fcGx1Z0luRGltZW5zaW9uc1NwZWNpZmllZDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBp
c0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBi
b29sIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBp
czxIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkgJiYgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGRv
d25jYXN0PEhUTUxQbHVnSW5FbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNl
bmRpZiAvLyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCAwMzZiZWI2YWJjZGYyOTFiY2M2MzhmYTA1N2IxZjMz
ODc0YWJlOGM2Li4zY2RiOWFiZmRmYzRlMWJhMTA4ZTRhN2QzMzRiZjkxMzNiMjIyZjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC02MiwxMSArNjIs
MTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRhYmxlQ2VsbEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wg
aXNIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShIVE1MTmFtZXM6OnRoVGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsg
fQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci19IC8vIG5hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpI
VE1MVGFibGVDZWxsRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnRkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRN
TE5hbWVzOjp0aFRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlz
VHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5oCmluZGV4IDY4NDU3MDc3OTE3MmVkZTQ4MTIzMzQxOGI0ZmYz
ZTYxNDU5YTE1YzIuLjUwNWNjZGUyMjhjOWU4MzNhNTliM2FjNmZiMTkyZTE4YjJlOTI2ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKQEAgLTYx
LDExICs2MSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVz
KiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBvdmVycmlkZTsKIH07CiAK
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQpCi0g
ICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVTZWN0aW9uRWxlbWVudChjb25zdCBIVE1MRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Ym9keVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxF
bGVtZW50Pihub2RlKSAmJiBpc0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGRvd25jYXN0PEhUTUxF
bGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRoZWFkVGFnKSB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0Zm9vdFRhZykgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGJvZHlUYWcpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxF
bGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5v
ZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAzMzM3
ZmQ5Mzc0M2NjOTVmNWFhOWMzNWEyMWZkYWY1MjZlNTY1Yjc2Li5iZDYwYWZmMTljZDlkZWY5ZTUy
NzIwZGE1MjY2NTE4NDIyZDk2OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNTEsMTMgKzE1MSwxMyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIGNoYXIgbV9pc1BsYWNlaG9sZGVyVmlzaWJsZSA6IDE7CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KQotICAg
IHN0YXRpYyBib29sIGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRGb3JtQ29udHJvbCgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KHRvRWxlbWVudChub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQog
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25z
dCBQb3NpdGlvbiYpOwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dEZvcm1Db250cm9sKCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9k
ZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNUeXBlKHRvRWxlbWVudChub2RlKSk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCmluZGV4IDc4MWQwMmNhMzYzZDhmZmE0NWRkZjI3ODdmN2E1ODUxYTIzYzk5NDguLmUxZTlk
ZTI3ZGZkOGFhOGEyMzg5ZjA3ZGRhNjcyZTc4ZDJjZjczM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5oCkBAIC04MiwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hv
dWxkU2hyaW5rSW1hZ2U7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEltYWdl
RG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNJbWFnZURvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNJbWFnZURvY3VtZW50KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0ltYWdlRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8
RG9jdW1lbnQ+KG5vZGUpICYmIGlzSW1hZ2VEb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9k
ZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW1hZ2VEb2N1
bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc0ltYWdlRG9jdW1lbnQoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJD
b3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50
Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmIC8vIElt
YWdlRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAppbmRleCAy
NzRjMmFiOTkwNjAwODlhYzc5MTlmYzE3ZGE2YWI0ZDY4ZGE4YWI3Li5jMmE2MzFhMWU1MDY2Y2U5
ODc4NGJhZjlkMDMxNWRlN2Q4NjFiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVs
ZW1lbnQuaApAQCAtNTAsMTEgKzUwLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
TGFiZWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihMYWJlbGFibGVFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNMYWJlbGFi
bGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2Rl
KSAmJiBpc0xhYmVsYWJsZUVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TGFiZWxhYmxlRWxlbWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1l
bnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1M
RWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihu
b2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5oCmluZGV4IGFiNWVkMDgxYTZhNDMxODRkODc5ZGUwN2RiYTYw
MjAwZGNjYzRlMGQuLjAzZWQ4MWI1MDhlZTEwNmI5MzlkYmU5MzRjNWI2NzgxNTA2YjgwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCkBAIC01NiwxMiArNTYsMTIgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9vdXRnb2luZ1JlZmVycmVyOwogfTsKIAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihNZWRpYURvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFEb2N1
bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzTWVkaWFE
b2N1bWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNNZWRpYURvY3VtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPERvY3VtZW50Pihub2RlKSAmJiBpc01lZGlhRG9jdW1lbnQoZG93
bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNNZWRpYURvY3Vt
ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2Fz
dDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCiAKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKaW5k
ZXggMTg4MzRkNjhlMGEzNWE1ZTNmMTY2MDA4YWJmYmZjMWFhMmNhN2I1Yy4uNmZjNmViY2Y4MTlh
MGNiMDU2ZGQ0OGRlMWRjNzllZmQ3N2Q5MWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QbHVnaW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuaApAQCAtNjEsMTEgKzYxLDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhUTUxQbHVn
SW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFBsdWdpbkRvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzUGx1Z2luRG9jdW1lbnQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1BsdWdpbkRvY3Vt
ZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1BsdWdpbkRvY3VtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIGlzPERvY3VtZW50Pihub2RlKSAmJiBpc1BsdWdpbkRvY3VtZW50KGRvd25j
YXN0PERvY3VtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpQbHVnaW5Eb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1BsdWdpbkRvY3Vt
ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2Fz
dDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCiAKICNlbmRpZiAvLyBQbHVnaW5Eb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA2ZThiN2NjMWM1YWRlZjNkMmZkYzk4ODJiZmUy
NDNlNjdjYTFhOTI1Li41NDdhMjEwNTJiMzI5NTg2MTAxZDMxNTQ5N2QwYzM2ZDI2YTdhODE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTc1LDEw
ICs3NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Rpc3RyaWJ1dGlvbjsKIH07CiAKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSW5zZXJ0aW9uUG9pbnQpCi0gICAgc3RhdGljIGJv
b2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5z
ZXJ0aW9uUG9pbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUg
Ym9vbCBpc0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0
dXJuIG5vZGUgJiYgaXM8SW5zZXJ0aW9uUG9pbnQ+KG5vZGUpICYmIGRvd25jYXN0PEluc2VydGlv
blBvaW50Pigqbm9kZSkuaXNBY3RpdmUoKTsKQEAgLTEyNyw0ICsxMjMsOCBAQCBpbmxpbmUgYm9v
bCBoYXNTaGFkb3dSb290T3JBY3RpdmVJbnNlcnRpb25Qb2ludFBhcmVudChjb25zdCBOb2RlJiBu
b2RlKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNlcnRpb25Qb2ludCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBJbnNlcnRpb25Q
b2ludF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCmluZGV4IGJiN2IwMzIwMWJiYzAyZTU5YjA1N2E2NTY3MDRlMzZjZTA3
Y2M5ODguLmMzMTI4YjhjYmZiZDY1NDlkNmFhOTg0NTI5ZGExNjgwNmFlOGYwMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCkBAIC03MCwxMSArNzAsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNv
bnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1RleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9k
ZSkgJiYgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBjbGFzcyBTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25F
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTEwNyw2ICsxMDIsMTEgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fY2FwdHVyaW5nOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OkhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCAzYjNkOTExMGNiODBjNWUyZTZmMDI3ODcwNTRmNzgz
YTk5YzE3YTAyLi41MmFlNDg3OGNkMjc0ZTljOTFhZTZmMzdkZGM0MjZjNGQ1ZmYxZGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtODAsMTAgKzgwLDEw
IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiB9OwogCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYlZUVEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNX
ZWJWVFRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNXZWJWVFRFbGVt
ZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYlZUVEVs
ZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGVmMDA4ZDNhMjZmZWQ3NjkyNWMzODU0
MWRkMzJjNjM2NjVmMzVjODMuLjhlOTQ3Y2E1OGQyYmJhM2NmYTY5OTIzMmFhYmM3YWM1ZjQyNzk5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCkBAIC0xMjYyLDggKzEyNjIsOCBAQCBJbnN0cnVtZW50aW5nQWdlbnRz
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYQogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KQotICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uRm9yV29ya2VyR2xvYmFsU2NvcGUodG9X
b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2Jh
bFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCAyZThjMmJmZjdhYzBjMDNmY2E1MGU3NjQ4MTMwY2EyNGYwYjhjZWE0Li5lM2RjZGI0
ODZmMTllNzEwNTMyZDkyMDlmOTVmNjU5NzFmZTAwNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01Niw4ICs1Niw4IEBAIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvCiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogCi0g
ICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQp
LCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIHJlcXVlc3QsIG9wdGlvbnMp
OworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIHJldHVy
biBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIHJlcXVl
c3QsIG9wdGlvbnMpOwogCiAgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCksICpjbGllbnQsIHJlcXVlc3QsIG9wdGlv
bnMpOwogfQpAQCAtNjYsOCArNjYsOCBAQCB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogewogICAg
IEFTU0VSVChjb250ZXh0KTsKIAotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpIHsKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSh0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9w
dGlvbnMpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9u
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDlmZmI5NWI5OGUzZGQ2YmViMjViNTY1ZWZmMjc0NzU4
NDBlZWYyZmYuLjJlODc4MDk1ZjI3MWIxYzAyZTM5YTQ2MDE5NTJhN2Y1ZmIxYTEyZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNzUyLDggKzc1
Miw4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVVybEZyb21DYWNoZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlm
IChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9i
YWxTY29wZShjb250ZXh0KS0+dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1Rv
TG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hl
LCByZXF1ZXN0LCBzZXNzaW9uSUQpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpKSB7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCku
dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFk
VGFzaygmY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlLCByZXF1ZXN0LCBzZXNzaW9u
SUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzY4LDggKzc2OCw4IEBAIHZvaWQg
TWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBSZXNvCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9t
U2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFs
U2NvcGUoKSkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT50aHJlYWQo
KS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZj
cm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcywgcmVxdWVzdCkpOworICAg
IGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAgICAgZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgp
LnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVl
c3RGcm9tU2Vzc2lvbkNhY2hlcywgcmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlc0ltcGwoY29udGV4dCwgcmVxdWVzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBlMDk5MDY3MmQwY2ViZTVi
MDdiOWFkOWQ0YzZiZGEwOTU5NGE0OTg0Li5iOThmYmViNzJlYTdmYTM2OTgzOWUwYTk4ZDEwYWI3
ZmJkYTA4MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTczLDEw
ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlbGVjdGVkQ2hpbGQo
KSB7IH0KIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oTWF0aE1MRWxlbWVudCkK
LSAgICBzdGF0aWMgYm9vbCBpc01hdGhNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5h
bWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzTWF0aE1MRWxlbWVudCgpICYmIGRvd25j
YXN0PE1hdGhNTEVsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1lKG5hbWUpOwpAQCAtODQsNiArODAs
MTAgQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TWF0aE1MRWxlbWVudCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhN
TEVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCmluZGV4IDdkOTRhM2Q0
YjgyN2Y5ZGE2NmQ4ODQyODVlYzkyZmU5NTk5ZDBhYzQuLmU3MjExYjM5MjlmMTk2MDhlNTJjZWJl
OTBkYTk1ZTI3YjUyMjhkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmgKQEAgLTcyLDE1ICs3MiwxNSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gbV9hbmltYXRvcjsKIH07CiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKQotICAgIHN0YXRpYyBib29s
IGlzU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpCi0gICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShTVkdOYW1lczo6c2V0VGFnKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShX
ZWJDb3JlOjpTVkdOYW1lczo6YW5pbWF0ZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNv
cmU6OlNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpCisgICAgICAgICAgICB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6c2V0VGFnKTsKICAgICB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNTVkdBbmltYXRlRWxlbWVudEJhc2UoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdBbmltYXRlRWxlbWVudEJhc2UoZG93bmNh
c3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUp
ICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0KIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCiAjZW5k
aWYgLy8gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKaW5k
ZXggNmNhY2YwM2E4MWU4Y2JjNzNiOTRmYmU2MmYzYTM0NWJmOGViZjc5Ni4uZWY1YmUyZWVjZDAy
NTA0NmYyYjUxZWI5ZGEwOTNhMThkNTQ2NDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgK
QEAgLTUyLDExICs1MiwxMSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7
CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR0RvY3VtZW50KQotICAgIHN0
YXRpYyBib29sIGlzU1ZHRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVy
biBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR0RvY3Vt
ZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERvY3VtZW50Pihub2RlKSAmJiBpc1NW
R0RvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0RvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50Lmlz
U1ZHRG9jdW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpO
b2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBl
KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFNWR0RvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCmluZGV4IDlhMmU5NmM4ZmMxYmRlYzkxYzJlNzBhOWQ4ZjA3NTU5ZGYwYzIyMzQuLmQ4MzNj
MDYxZjA5NTE3YjgxZGRiYWM0OWZlMDQ3MTU5ODNjNjc4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaApAQCAtMjIxLDEwICsyMjEsNiBAQCBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0
b3IgewogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGIpIHsgcmV0dXJuIGEubWF0Y2hlcyhiKTsgfQogfTsKIAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZH
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGlubGluZSBib29sIE5vZGU6Omhhc1Rh
Z05hbWUoY29uc3QgU1ZHUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4g
aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUo
bmFtZSk7CkBAIC0yMzIsNiArMjI4LDEwIEBAIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUo
Y29uc3QgU1ZHUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0VsZW1lbnQp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNTVkdFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
KwogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAppbmRleCAwY2IxOWVmZTNlNjMyMTM0MGE4NjkwOWUwNzFiZDQ0MjE1ODFjNzlkLi42
NmFjM2MyMTA1M2FmMTBhMDE4ODU4ZDI2YTJmOTZmYmJmMjMwMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCkBAIC04MiwxMSArODIsMTEgQEAgcHJpdmF0ZToKIAogdm9pZCBpbnZhbGlkYXRlRmlsdGVy
UHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCi0gICAgc3RhdGljIGJv
b2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgU1ZHRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0ZpbHRlckVmZmVjdCgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsg
fQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJl
dHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2Vi
Q29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCmluZGV4IDUz
MzgwOGZjODFiY2Y5ZmJhNDY3ZTA5ZTQ1ZmIxMTcxNDgxYjZkMmYuLjM2NTg5YmI1MjM2ZGIxZGI3
OWQ3NDhjYTg2ZDQyYTg4ODVlNGNmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmgKQEAgLTEwNywxNyArMTA3LDE3IEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihT
VkdHcmFkaWVudEVsZW1lbnQpCi1zdGF0aWMgYm9vbCBpc1NWR0dyYWRpZW50RWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudCkKK3N0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAg
IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnKSB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpyYWRpYWxHcmFkaWVu
dFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpsaW5lYXJHcmFk
aWVudFRhZyk7CiB9Ci1zdGF0aWMgYm9vbCBpc1NWR0dyYWRpZW50RWxlbWVudChjb25zdCBOb2Rl
JiBub2RlKQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpCiB7
Ci0gICAgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHR3JhZGllbnRFbGVtZW50
KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U1ZH
RWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5v
ZGUpKTsKIH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaApp
bmRleCA0MzNmMzFjMDA5NzNhZDhiOTFlMmI3ZGMxYmQ2MDViYWFiOWM4ZTA5Li42MTI2NjZmNDVl
NWZjMTMxMGNkNTA2ODJiNWViODEwNTI3OTBhYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5oCkBAIC04MiwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkSXNvbGF0ZUJsZW5kaW5nOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihTVkdHcmFwaGljc0VsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1l
bnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NWR0dyYXBo
aWNzRWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdHcmFw
aGljc0VsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGVsZW1lbnQuaXNTVkdHcmFwaGljc0VsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVt
ZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBTVkdHcmFwaGlj
c0VsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAppbmRleCAwMDlhZTY2MmIx
MDk3YTQzNzgxYTgwYjE1OWQ5MTQ1Mjg3Zjc3MjM3Li5mYzQ2ZDdjN2I5ODcxMjJhMmUwZGY3M2E1
MmQzNmNmNDYwNDlkZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaApAQCAtNjIs
MTEgKzYyLDExIEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5p
bWF0ZWRQcm9wZXJ0eTxTVkdQb2ludExpc3Q+IG1fcG9pbnRzOwogfTsKIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihTVkdQb2x5RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR1Bv
bHlFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5bGluZVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHUG9s
eUVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdQb2x5RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnBvbHlsaW5lVGFnKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3Jl
OjpTVkdFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVu
dD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IGE1OTJhYmU3MjUz
Y2U5YzcwM2NiZTYxMDhkM2Y2MDdkYjAzZjk1ZjEuLjA5ZjIwZTQwY2NlNjNmNGNlMTY4NWUwM2Zm
YjY5MDVlYzIzMTE3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgKQEAgLTExOSwxMSArMTE5LDExIEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdU
ZXh0Q29udGVudEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdUZXh0Q29udGVudEVsZW1l
bnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250
ZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBO
b2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR1RleHRDb250
ZW50RWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5pc1RleHRDb250ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4o
bm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCA0ZDhjMzFiNjc2ODVjYTgzMTk0
MmUzYTViYjRkMDM2NjZiZGNhYzhlLi44NzVkY2I5ZTU5YTA4MzMyNjc5M2YwNDc5Mjk2MTQxNGRk
Yjg0YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5oCkBAIC0yMzcsMTEgKzIzNywxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb25k
aXRpb25FdmVudExpc3RlbmVyOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihT
VkdTTUlMRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR1NNSUxFbGVtZW50KGRvd25jYXN0PFNWR0Vs
ZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlNWR1NNSUxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpT
VkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29y
ZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNlbmRpZiAvLyBTVkdTTUlMRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGY5ZDBlM2Fi
ODg1YTgwNDQ1NzkyYzZiMjc0NzQyZTY5M2M2YTBmMzQuLjA0NjQ4Mjc1MDFmMzk1NTNmNWNhM2I3
M2QyYWY4YTE4NTdmMTkyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0yNTcsMTIgKzI1NywxMiBA
QCBwdWJsaWM6CiAgICAgICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayhbPV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIFJlZlB0cjxNZXNz
YWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7CiAgICAgICAgICAg
ICBwb3J0LT5lbnRhbmdsZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPihjaGFu
bmVsKSk7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKKyAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSk7CisgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAg
ICAgICAgICAvLyBTaW5jZSBjbG9zZSgpIHN0b3BzIHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwgdGhp
cyBzaG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxlZCB3aGlsZSBjbG9zaW5nLgotICAgICAgICAgICAg
QVNTRVJUKCF3b3JrZXJHbG9iYWxTY29wZS0+aXNDbG9zaW5nKCkpOwotICAgICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04od29ya2VyR2xvYmFsU2NvcGUtPmlzU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+ZGlz
cGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOworICAgICAgICAgICAgQVNTRVJU
KCF3b3JrZXJHbG9iYWxTY29wZS5pc0Nsb3NpbmcoKSk7CisgICAgICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTih3b3JrZXJHbG9iYWxTY29wZS5pc1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlKCkpOworICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVu
dChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOwogICAgICAgICB9KQogICAgIHsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGRlMTIx
NGU2NWU1NzI0ZjI0MTM4M2Y1ZmI3YzM2YzZlYTU0YWYyMzcuLmUwMDllNTc1NDI1ZGE0NmU0ZTY0
N2RhNzg4N2U2NGQxODE1ZDdkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzMsMTAgKzEzMywxMCBAQCB2b2lkIFdvcmtlckdsb2JhbFNj
b3BlOjpjbG9zZSgpCiAgICAgLy8gdGFza3Mgd2l0aCBpc0NsZWFudXBUYXNrKCk9PXRydWUgd2ls
bCBiZSBleGVjdXRlZC4KICAgICBtX2Nsb3NpbmcgPSB0cnVlOwogICAgIHBvc3RUYXNrKHsgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4
dCk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAg
ICAgLy8gTm90aWZ5IHBhcmVudCB0aGF0IHRoaXMgY29udGV4dCBpcyBjbG9zZWQuIFBhcmVudCBp
cyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBXb3JrZXJUaHJlYWQ6OnN0b3AoKS4KLSAgICAgICAg
d29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2Vy
R2xvYmFsU2NvcGVDbG9zZWQoKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
d29ya2VyUmVwb3J0aW5nUHJveHkoKS53b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpOwogICAgIH0g
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRl
eCA0MDRhMjAxMmMyMTljZmM4NDkzMTJjYmVjMjJjZDk4M2Q1ZmRiMjVmLi41YjU4YTY5ZWNkYjgy
YzdmNzBmZjYyNDMwMWRhMjA3YzE4MzQwZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODEsOCArMTgyLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X3RvcE9yaWdpbjsKICAgICB9OwogCi1TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfVFlQRV9DQVNU
UyhXb3JrZXJHbG9iYWxTY29wZSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlKQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gV29ya2VyR2xvYmFsU2NvcGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRl
eCAyYmNhYTRiZDljODFjODMwMmQxZmUyYTZlMjgyODZkODhlZThmNzA2Li4yYTUwMTg4OTQ4ZTgx
ZTk4MzcxNDFjYzE0N2QxZmVhNzBiNjhhZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNjgsMTUgKzY4LDE1IEBAIFdvcmtlck1l
c3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXIqIHdvcmtlck9iamVjdCkK
ICNlbmRpZgogewogICAgIEFTU0VSVChtX3dvcmtlck9iamVjdCk7Ci0gICAgQVNTRVJUKChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAg
ICAgICAgICAgfHwgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29w
ZSgpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0b1dvcmtlckdsb2JhbFNjb3BlKCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICBBU1NFUlQoKGlzPERv
Y3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKKyAg
ICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKIH0KIAogV29ya2Vy
TWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpCiB7CiAgICAgQVNTRVJUKCFt
X3dvcmtlck9iamVjdCk7Ci0gICAgQVNTRVJUKChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgICAgfHwgKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSB0b1dvcmtlckdsb2JhbFNjb3BlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgp
LnRocmVhZElEKCkpKTsKKyAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRo
cmVhZCgpLnRocmVhZElEKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
IHN0YXJ0TW9kZSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbPV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgm
Y29udGV4dCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50
IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTIyNCwxNyArMjI0LDE3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbm5l
Y3RUb0luc3BlY3RvcihXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjCiAgICAgQVNT
RVJUKCFtX3BhZ2VJbnNwZWN0b3IpOwogICAgIG1fcGFnZUluc3BlY3RvciA9IHBhZ2VJbnNwZWN0
b3I7CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxT
Y29wZSgmY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRl
bmQoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKICAgICB9LCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogewotICAgIG1fcGFnZUluc3BlY3Rv
ciA9IDA7CisgICAgbV9wYWdlSW5zcGVjdG9yID0gbnVsbHB0cjsKICAgICBpZiAobV9hc2tlZFRv
VGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFza0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCktPndvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5l
Y3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3Rv
ckRlc3Ryb3llZCk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9k
ZSk7CiB9CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpz
ZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0
dXJuOwogICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW21lc3NhZ2VDb3B5
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckds
b2JhbFNjb3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlQ29weSk7CisgICAgICAgIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2VDb3B5KTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKICAgICBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbnRl
cnJ1cHRBbmREaXNwYXRjaEluc3BlY3RvckNvbW1hbmRzKG1fd29ya2VyVGhyZWFkLmdldCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCAwNWM1ZmE0YjczZjg2N2E1M2NkZmQ5NTA2OTkzNmExMDk2OGE4ZjAxLi45NjRhMGFhYTQ3YjM1
NjI4MDkwNDZkNTc2OWYzMTU2M2Q3MTE4YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC02MSwxNCArNjEsMTQgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGkKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAg
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5zZXRBbGxvd0Ny
ZWRlbnRpYWxzKEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwogICAgIG9wdGlvbnMu
c2V0U2VuZExvYWRDYWxsYmFja3MoU2VuZENhbGxiYWNrcyk7CiAKLSAgICBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHRvV29ya2VyR2xvYmFsU2NvcGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhpcywgb3B0aW9ucyk7CisgICAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAq
dGhpcywgb3B0aW9ucyk7CiB9CiAgICAgCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFz
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBlNDQyMjUwYTM0OWZhM2NiYTZkY2Zh
NmVmMDAwODRiYmI2NjNiMzE5Li5hZGU1Njk5MzRiZjkyM2VjMmM0OTc1ZTFjMzRmZjA0MzkyNTI3
NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0yMTQsMjEg
KzIxNCwyMSBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJH
bG9iYWxTY29wZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5k
VGVybWluYXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ICkgewotICAgICAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29u
dGV4dCk7CisgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUg
PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRh
YmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAgICAgICAg
ICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIGNsZWFudXBTeW5jOwotICAgICAgICAgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERhdGFiYXNlcyh3b3JrZXJHbG9iYWxTY29wZSwg
JmNsZWFudXBTeW5jKTsKKyAgICAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnN0
b3BEYXRhYmFzZXMoJndvcmtlckdsb2JhbFNjb3BlLCAmY2xlYW51cFN5bmMpOwogI2VuZGlmCiAK
LSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwor
ICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAot
ICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPm5vdGlmeU9ic2VydmVyc09mU3RvcCgpOwor
ICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUubm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCk7CiAK
ICAgICAgICAgICAgIC8vIEV2ZW50IGxpc3RlbmVycyB3b3VsZCBrZWVwIERPTVdyYXBwZXJXb3Js
ZCBvYmplY3RzIGFsaXZlIGZvciB0b28gbG9uZy4gQWxzbywgdGhleSBoYXZlIHJlZmVyZW5jZXMg
dG8gSlMgb2JqZWN0cywKICAgICAgICAgICAgIC8vIHdoaWNoIGJlY29tZSBkYW5nbGluZyBvbmNl
IEhlYXAgaXMgZGVzdHJveWVkLgotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5yZW1v
dmVBbGxFdmVudExpc3RlbmVycygpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAg
ICAgICAgIC8vIFdlIHdhaXQgZm9yIHRoZSBkYXRhYmFzZSB0aHJlYWQgdG8gY2xlYW4gdXAgYWxs
IGl0cyBzdHVmZiBzbyB0aGF0IHdlCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCB2b2lkIFdvcmtlclRo
cmVhZDo6c3RvcCgpCiAKICAgICAgICAgICAgIC8vIFN0aWNrIGEgc2h1dGRvd24gY29tbWFuZCBh
dCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28gdGhhdCB3ZSBkZWFsCiAgICAgICAgICAgICAvLyB3
aXRoIGFsbCB0aGUgY2xlYW51cCB0YXNrcyB0aGUgZGF0YWJhc2VzIHBvc3QgZmlyc3QuCi0gICAg
ICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soeyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2Nv
cGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KTsKKyAgICAgICAgICAgIHdvcmtlckds
b2JhbFNjb3BlLnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51
cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHNh
ZmUgdG8gY2FsbCBjbGVhclNjcmlwdCB1bnRpbCBhbGwgdGhlIGNsZWFudXAgdGFza3MgcG9zdGVk
IGJ5IGZ1bmN0aW9ucyBpbml0aWF0ZWQgYnkgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sg
aGF2ZSBjb21wbGV0ZWQuCi0gICAgICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPmNsZWFy
U2NyaXB0KCk7CisgICAgICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuY2xlYXJTY3JpcHQo
KTsKICAgICAgICAgICAgIH0gfSk7CiAKICAgICAgICAgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmNwcAppbmRleCAzMzdjZGExOTE5YzIyZDIzMjJlZjcwODA0MTQyNWYxOTQ4YTli
MTdiLi45YzUwYmNkODQxNGQyYjQyYzYyMTFkN2MzMGU0OWFjZGU4NjMwZTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xNTAwLDIyICsxNTAwLDIyIEBAIElET01FbGVt
ZW50KiBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpFbGVtZW50KiBlKQogICAg
IEhSRVNVTFQgaHI7CiAgICAgSURPTUVsZW1lbnQqIGRvbUVsZW1lbnQgPSAwOwogCi0gICAgaWYg
KFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4oZSkpIHsKKyAgICBpZiAoaXM8
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MRm9ybUVsZW1l
bnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTEZvcm1FbGVtZW50KGUpOwogICAgICAgICBociA9
IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9t
RWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKICAg
ICAgICAgRE9NSFRNTElGcmFtZUVsZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTElGcmFt
ZUVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlE
X0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYkNv
cmU6OmlzPFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+KGUpKSB7CisgICAgfSBlbHNlIGlmIChp
czxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MSW5wdXRF
bGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJbnB1dEVsZW1lbnQoZSk7CiAgICAgICAg
IGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoq
KSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxP
cHRpb25FbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdGlv
bkVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxPcHRpb25FbGVtZW50KiBuZXdFbGVtZW50
ID0gbmV3IERPTUhUTUxPcHRpb25FbGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQt
PlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7CiAg
ICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgRE9NSFRN
TFNlbGVjdEVsZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTFNlbGVjdEVsZW1lbnQoZSk7
CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50
LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYkNvcmU6OmlzPFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ+KGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MVGV4dEFyZWFFbGVt
ZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxUZXh0QXJlYUVsZW1lbnQoZSk7CiAgICAgICAg
IGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoq
KSZkb21FbGVtZW50KTsKICAgICB9IGVsc2UgaWYgKGUtPmlzSFRNTEVsZW1lbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQppbmRleCBkZGQ3YmQ2ZDkwNDU2YzUyNGI5NDNi
Y2M0ZDNjZWQ5MGRkNWVlMTk0Li44MzE2NjI5YmNlZDRkYjc2NGE5YjdmNGYyYjE0YzFjZWM1MDFi
ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQpAQCAtMzksMTcgKzM5LDE3
IEBAIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQog
ewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJvdXQgdGhlIGV4Y2VwdGlvbi4KICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9N
RWxlbWVudChXZWJDb3JlOjpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVh
dGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RP
TUVsZW1lbnQoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRlRWxlbWVu
dCh0YWdOYW1lLCBlYykuZ2V0KCkpOwogfQogCiAtIChXS0RPTVRleHQgKiljcmVhdGVUZXh0Tm9k
ZTooTlNTdHJpbmcgKilkYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVRleHQoV2Vi
Q29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRlVGV4dE5vZGUo
ZGF0YSkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01UZXh0KGRvd25jYXN0PFdl
YkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpKTsKIH0K
IAogLSAoV0tET01FbGVtZW50ICopYm9keQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01F
bGVtZW50KFdlYkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmJvZHko
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVsZW1lbnQoZG93bmNhc3Q8V2ViQ29yZTo6
RG9jdW1lbnQ+KCpfaW1wbCkuYm9keSgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRl
eHQubW0KaW5kZXggZDkxZTgxMjA0NjE2MjYyNmU2MmM5NGYyYjNkOTViYjQ3YmUwM2I0MS4uZTMw
YWUzY2QyNGE4ZDA0ZTRlMmM4ZmQ3YWM5ODc0NWRjOWFkMjExOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01UZXh0Lm1tCkBAIC0zNSwxNCArMzUsMTQgQEAgQGltcGxlbWVudGF0aW9uIFdLRE9NVGV4dAog
CiAtIChOU1N0cmluZyAqKWRhdGEKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6ZG93bmNhc3Q8V2Vi
Q29yZTo6VGV4dD4oKl9pbXBsKS5kYXRhKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6
OlRleHQ+KCpfaW1wbCkuZGF0YSgpOwogfQogCiAtICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICop
ZGF0YQogewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJvdXQgdGhlIGV4Y2VwdGlvbi4K
ICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjOwotICAgIFdlYkNvcmU6OmRvd25jYXN0PFdl
YkNvcmU6OlRleHQ+KCpfaW1wbCkuc2V0RGF0YShkYXRhLCBlYyk7CisgICAgZG93bmNhc3Q8V2Vi
Q29yZTo6VGV4dD4oKl9pbXBsKS5zZXREYXRhKGRhdGEsIGVjKTsKIH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238923</attachid>
            <date>2014-09-30 06:48:22 -0700</date>
            <delta_ts>2014-09-30 13:10:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140930064823.patch</filename>
            <type>text/plain</type>
            <size>91705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMxNjkyODlmN2E5OTk4ZjYyNGIyNWE4
ZjdiOTE4YWNjNGI4MmEzYzQuLjc2OTU0ZWI0MmQ4NzM4ZjhiM2M2NmI5ZmRkMTM2OTkwNjQ0YmM4
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0
IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5oOgorICAgICAgICAqIHd0Zi9UeXBlQ2FzdHMuaDogQWRkZWQuCisgICAgICAgIChXVEY6Omlz
KToKKyAgICAgICAgKFdURjo6ZG93bmNhc3QpOgorCiAyMDE0LTA5LTI5ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTc0MDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxYmQ4ZDdlMTBlODkxYTVlZGNlMGQ3MjQyZjg0
ZDI1ODQxOTBiYjguLmNkMmY1NGVmNGYxYzJjZGQ1ODQ3YjdjYzUzOTU4OWY3OWQ5YmVlNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMDEgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNh
c3Q8PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBw
b3J0IHRvIGFsbCB0eXBlcywgbm90IGp1c3QgTm9kZXMuCisgICAgICAgIFRvIGFjaGlldmUgdGhp
cywgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgLSBNb3ZlIGlzPD4g
LyBkb3duY2FzdDw+KCkgYW5kIE5vZGVUeXBlQ2FzdFRyYWl0cyBmcm9tIE5vZGUuaCB0byBhIG5l
dworICAgICAgICAgIHd0Zi9UeXBlQ2FzdHMuaCBoZWFkZXIuIEFsc28gbW92ZSB0aGVtIHRvIFdU
RiBuYW1lc3BhY2UgaW5zdGVhZCBvZgorICAgICAgICAgIFdlYkNvcmUgbmFtZXNwYWNlIGFzIHRo
ZXkgY2FuIGJlIHVzZWQgZm9yIGNsYXNzZXMgaW4gb3RoZXIgbmFtZXNwYWNlcworICAgICAgICAg
IChlLmcuIFdlYktpdCBuYW1lc3BhY2UpLgorICAgICAgICAtIFJlbmFtZSBOb2RlVHlwZUNhc3Rz
VHJhaXRzIHRvIFR5cGVDYXN0VHJhaXRzIGFzIGl0IGNhbiBiZSBzcGVjaWFsaXplZAorICAgICAg
ICAgIGZvciBub24tTm9kZXMuCisgICAgICAgIC0gU2luY2UgQysrIGRvZXMgbm90IGFsbG93IHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9ucyBpbiBkaWZmZXJlbnQKKyAgICAgICAgICBuYW1lc3BhY2Vz
LCBJIGhhZCB0byBtb3ZlIGFsbCB0aGUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkgdXNlcyB0
bworICAgICAgICAgIHRoZSBnbG9iYWwgc2NvcGUgYW5kIHVzZSB0aGUgV2ViQ29yZTo6IG5hbWVz
cGFjZSBleHBsaWNpdGx5IGluIHRob3NlLgorICAgICAgICAgIFRoaXMgaXMgYSBiaXQgdW5mb3J0
dW5hdGUgYnV0IEkgY291bGRuJ3QgZmluZCBhIGJldHRlciB3YXkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIHRha2VzIGNhcmUgb2Ygc3VwcG9ydGluZyBpczw+KCkgLyBkb3duY2FzdDw+KCkg
Zm9yCisgICAgICAgIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBjbGFzcywgd2hpY2ggZG9lcyBub3Qg
ZGVyaXZlIGZyb20gTm9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
Ojpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTUdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgor
ICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNBdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNDREFUQVNlY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
Q29tbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0RvY3VtZW50RnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5
cGUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50VHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVz
c2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVz
c2FnZXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjppcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkb3duY2FzdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzUHNldWRvRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTaGFkb3dSb290KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU3R5
bGVkRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5
bGVkRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1RleHQpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRUeXBlSGVscGVycyk6CisgICAgICAgIChw
cmludFR5cGVIZWxwZXJzSGVhZGVyRmlsZSk6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxEb2N1bWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSFRNTEZyYW1lRWxlbWVudEJhc2UpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVPd25lckVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzSFRNTE1lZGlhRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTFBsdWdJbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFBsdWdJbkltYWdlRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRN
TFRhYmxlQ2VsbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNJbWFnZURvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0xhYmVsYWJsZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5oOgorICAgICAg
ICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWVkaWFEb2N1bWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUGx1Z2luRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV2ViVlRURWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVu
dENvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyk6CisgICAgICAgICogbWF0aG1s
L01hdGhNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c01hdGhNTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0FuaW1h
dGVFbGVtZW50QmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6Cisg
ICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAo
aXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHR3JhZGllbnRFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdHcmFwaGljc0VsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzU1ZHUG9seUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1NWR1RleHRDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU1ZHU01JTEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyQ29ubmVjdFRhc2s6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2Jh
bFNjb3BlOjpjbG9zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgor
ICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6fldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
TWVzc2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
c3RvcCk6CisKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIERvY3VtZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyMjEKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IGY2NzEyZmU5NmY0Yjk5YTc4NGE5ODAzYmEwZTFiMjA4M2ViNGY3Nzcu
LjFiZjFmYmU2YzdhYzcxYjU0NDM5NTYyM2MwMTQ4NDg2M2RlMGJiMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkg
c3VwcG9ydCB0byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8g
YWxsIHR5cGVzLCBub3QganVzdCBOb2Rlcy4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNw
cDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKworMjAxNC0wOS0yOSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgTWFrZSBpczw+
KCkgLyBkb3duY2FzdDw+KCkgd29yayBmb3IgSFRNTERvY3VtZW50IGFuZCBpdHMgc3ViY2xhc3Nl
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTY5
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2NWI1NjkzNmE5MWQ4NDkzNWYzNTYzYWVkNzRlZTc1ZWQ5MDg2YjNl
Li41ZGZiYmExYzM1OGQxNWJlZGQ5YWE1MGYyYjNjOWE1OTc2NGE0ZjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMjIgQEAKIDIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBv
cnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZW5lcmFsaXplIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IHRvIGFsbCB0
eXBlcywgbm90IGp1c3QgTm9kZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBj
cmVhdGVFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGNyZWF0ZVRleHROb2Rl
Ol0pOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50IGJvZHldKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tOgorICAgICAgICAoLVtXS0RP
TVRleHQgZGF0YV0pOgorICAgICAgICAoLVtXS0RPTVRleHQgc2V0RGF0YTpdKToKKworMjAxNC0w
OS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRG9jdW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIyMQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXgg
YTQwYmM4YjA2NTZhYjBkMTA5ZmJiZTBhZWFhNzJkMjUyYmU0OTYyYS4uNzJiZTNkNjM4Y2QzNWQ1
ODVjNTRhZWI4ZTY4YzcwYjU4NTQyZmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzg0LDYgKzM4
NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKQogCiAv
KiBUWVBFIENBU1QgKi8KIAorLy8gRklYTUU6IFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB0aGUgY29kZSBiYXNlIGlzIHBvcnRlZCB0byB1c2luZworLy8gdGhlIG5ldyBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTXyooKSBtYWNyby4KICNkZWZpbmUgVFlQRV9DQVNUU19CQVNFKFRvQ2xh
c3NOYW1lLCBhcmd1bWVudFR5cGUsIGFyZ3VtZW50TmFtZSwgcG9pbnRlclByZWRpY2F0ZSwgcmVm
ZXJlbmNlUHJlZGljYXRlKSBcCiBpbmxpbmUgVG9DbGFzc05hbWUqIHRvIyNUb0NsYXNzTmFtZShh
cmd1bWVudFR5cGUqIGFyZ3VtZW50TmFtZSkgXAogeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UeXBlQ2FzdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUwNTBkMTc3ZTVlOTk0ZGFjYTg5ODM2MzU2NzkxOTFiZTc4NmMxODAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlQ2FzdHMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUeXBlQ2FzdHNfaAorI2RlZmluZSBUeXBlQ2FzdHNfaAorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJn
VHlwZT4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUo
QXJnVHlwZSYpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVj
dCBUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRp
YyBib29sIGlzT2ZUeXBlKEV4cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8v
IFR5cGUgY2hlY2tpbmcgZnVuY3Rpb24sIHRvIHVzZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25j
YXN0PD4oKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGU+CitpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNl
c3NhcnkgdHlwZSBjaGVjayIpOworICAgIHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBl
Y3RlZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZShzb3VyY2UpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wg
aXMoQXJnVHlwZSogc291cmNlKQoreworICAgIEFTU0VSVChzb3VyY2UpOworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVu
bmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3Qg
RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoKnNvdXJjZSk7Cit9CisKKy8v
IFNhZmUgZG93bmNhc3RpbmcgZnVuY3Rpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6Omlz
X2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZSBkb3du
Y2FzdChTb3VyY2UmIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8
U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOwor
fQordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBl
bmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0
IFRhcmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoreworICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAi
VW5uZWNlc3NhcnkgY2FzdCIpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwg
Y29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Cit9CisKKy8vIEFkZCBzdXBw
b3J0IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+KCkgLyBkb3duY2FzdDw+
KCkgaGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihDbGFzc05hbWUpIFwKK25hbWVzcGFjZSBXVEYgeyBcCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4gXAorY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3QgQ2xhc3NOYW1l
LCBBcmdUeXBlPiB7IFwKK3B1YmxpYzogXAorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5
cGUmIHNvdXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7IH0gXAorcHJpdmF0ZToKKworI2Rl
ZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpIFwKK307IFwKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6aXM7Cit1c2luZyBXVEY6OmRvd25jYXN0OworCisjZW5k
aWYgLy8gVHlwZUNhc3RzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKaW5kZXggY2UwMTAwN2E3ZDAwMDc4OGUxY2YxYmE2MTQ4NTNjZDc2Njdm
YzJlOS4uMDEyOGY1MGQyOTI5ZjUxMjVmOGIwYjEzMmRlYmFkN2VlYThjNjM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgc3RhdGljIFN0cmluZyBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnBhZ2Uo
KS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCkuaW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAg
fQotICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgY29uc3QgR3JvdXBTZXR0aW5n
cyogZ3JvdXBTZXR0aW5ncyA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCku
Z3JvdXBTZXR0aW5ncygpOwogICAgIGlmIChncm91cFNldHRpbmdzKQogICAgICAgICByZXR1cm4g
Z3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IDkxYjA0
M2IxM2YxZjU0NzA0M2NmNjJkZTllM2Q4NjQxODdmYzJmMWYuLmEzYzEyNjcyMThmODIyNTIwOTNk
NDIxOGYwNzY1NWUwN2E2ZjUxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFNjcmlwdEUKICAgICBX
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0
PFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVudDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7CiAgICAgICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZp
ZXI7Ci0gICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgICAgIGNvbnN0IEdy
b3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
KmNvbnRleHQpLmdyb3VwU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKGdyb3VwU2V0dGluZ3MpCiAg
ICAgICAgICAgICBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIgPSBncm91cFNldHRpbmdzLT5p
bmRleGVkREJEYXRhYmFzZVBhdGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggMTY1NGRkNTYwZTJjOTUwOTkyM2Q2NjlmZWU2Zjk4OWIxNzA3NTQ0NS4uODM5ZmE4NzIz
NjZiZGU2ZTQzNzA2MDUxMmFkMjYxZjRjZDA4MjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShTY3JpcHQKICAg
ICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKLSAgICBpZiAoY29udGV4
dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7Ci0gICAgICAg
IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkucnVu
TG9vcCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAg
ICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCpjb250ZXh0KTsKKyAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9
IHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBtb2RlOwogICAgICAgICBtb2RlLmFwcGVuZExpdGVyYWwod2ViU29ja2V0Q2hhbm5lbE1v
ZGUpOwogICAgICAgICBtb2RlLmFwcGVuZE51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkp
OwotICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0
ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLnRvU3RyaW5nKCkpOworICAgICAgICBy
ZXR1cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSgmd29ya2VyR2xv
YmFsU2NvcGUsIGNsaWVudCwgbW9kZS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4g
V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgY2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCA5OWM0MDJjMzI3ZTdmOTdjYWNlOWVjNjM5NWM1ZGVkZWRlZDA4NWU0Li5kNGVk
ZDY5MWY5MWNiMDM5OTNhZjkzZDA0MzI2N2NiYmU0YTUyY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMDgsOCArMTA4LDgg
QEAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ28KICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpKQogICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChkb3du
Y2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOwogCi0gICAgaWYg
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAg
cmV0dXJuIHRvV29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlw
dCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyNSw4ICsxMjUsOCBAQCBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25DbwogICAgIGlmIChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAg
ICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KSwgd29ybGQpOwogCi0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIHRvV29ya2VyR2xvYmFs
U2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDJk
MmE3NTQ2ZGYyMWE0OTMzZWFmYmFjMmM0MTRiNjE3YjQ5Y2JmZDUuLjVjNzZiNmQ0NWZiMmVkZDQz
Zjg4NjAxMWRiZjBjY2YyZWY2MjIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTMxLDEwICsxMzEsMTAgQEAgdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZl
ZEV2ZW50KTsKIAotICAgICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKSB7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpIHsKICAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4
Y2VwdGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9y
Q2F1c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZSgp
KSkKLSAgICAgICAgICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CisgICAgICAgICAgICAgICAgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQo
KS0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApp
bmRleCBkMTFlNDU0ZGJhOTdjNjJlMjFlMDZlNDVkYWExMGI4ZGZjM2NmODY3Li5hMWI1MWFhMzVm
MjczNTkzMjI5MTAyOTJmYTdjNjFiYzg2Zjc2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAg
ICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICBleGVjdXRlKGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSk7CiAgICAgZWxzZQotICAgICAgICBleGVjdXRlKHRvV29ya2VyR2xv
YmFsU2NvcGUoY29udGV4dCkpOworICAgICAgICBleGVjdXRlKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVu
Y3Rpb25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlz
VmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCAx
ZjZiY2U0MzEwYmZlNDM1NTA3N2M5YWVmMzQ5YzQ2MjkxMGI1ODM0Li5hN2E4OTQ1NDc5YmQ1NTIz
YWIzNDI3MzVlNzcyMTM3YzQwZTBkYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTk5LDEwICs5OSwxMCBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkOwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihBdHRyKQotICAgIHN0YXRpYyBib29sIGlzQXR0
cihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0cmlidXRlTm9kZSgpOyB9Ci1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdHRyKQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0
cmlidXRlTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAv
LyBBdHRyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAppbmRleCA2Y2Q0ZjY4YzYwYjlkNjVl
OTNkZTdhOTExMDg5Mjc2ZGE2MmU5NTlhLi43ZTk4MjNlMmZhNzM4YTcwYWU1NjFlZDA5YmNjOWUw
MzZiNzJhZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCkBAIC00MSwxMCArNDEsMTAg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oQ0RBVEFTZWN0aW9uKQotICAgIHN0YXRpYyBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9O
X05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNEQVRBU2Vj
dGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkg
eyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkNEQVRBX1NFQ1RJT05f
Tk9ERTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gQ0RBVEFT
ZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDAxNmVkZDVhZjJmZjgx
NTQ5NjdhYjY5OTkwNDllZGQ3ZGViMTg1ZGIuLjMxN2Q5MzFiNGY3NTIyNTZjY2JlMDYzOGZiNjAw
YjA0NDg5NWMyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNzYsMTAgKzc2
LDEwIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oQ2hhcmFjdGVyRGF0YSkKLSAgICBzdGF0aWMgYm9vbCBpc0NoYXJhY3Rl
ckRhdGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2Rl
KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNoYXJhY3RlckRh
dGEpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKICNlbmRpZiAvLyBDaGFyYWN0ZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmlu
ZGV4IDBhN2RlY2VjOWE5MmRjOWRlMzJjNzExYTcyNGJhMTBjZTZiNzBhMjguLmMxYTQ5ZDU5YThh
OWJiZDllNzlhOWRkZDBiMmY0OWIxYjdiODNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaApAQCAtNDEs
MTAgKzQxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQo
Tm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihDb21tZW50KQotICAgIHN0YXRpYyBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpDb21tZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVU
eXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBDb21tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggYzQyZDQ0MmM2MjhhZjJlNzUzYWJkZTUyY2Y3YWVlMWJiNzg0ZDA0Zi4uOTJkZGZjMjAwMmE2
NTgxOTY5MzM1ZDcxZDA5MTZkZDA5N2JmZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE3
NDAsMTMgKzE3NDAsMTMgQEAgaW5saW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1l
bnRGb3JEb2N1bWVudChEb2N1bWVudCopOwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KERvY3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnQoY29uc3QgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RvY3VtZW50KCk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBpc0RvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNEb2N1bWVudE5vZGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6RG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNEb2N1bWVudCgp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNEb2N1bWVudE5vZGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiBuYW1lc3BhY2UgV1RGIHsKIGlubGluZSBXZWJDb3JlOjpEb2N1bWVudCogZ2V0UHRy
KFdlYkNvcmU6OkRvY3VtZW50JiBwKSB7IHJldHVybiAmcDsgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmgKaW5kZXggYWM3ZDZmNjViZjQ1YmJlNDllMTBjMjg4OWNlNDIxNDFk
OGRlYTE5NC4uNjdlYmZjM2U5ODRiNjgwNWQ3ZGIwZWZmYjM0MzVkYzFiZGViODczMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC01MiwxMCArNTIsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKERvY3VtZW50RnJhZ21l
bnQpCi0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudEZyYWdtZW50KGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzRG9jdW1lbnRGcmFnbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGY0ZWY3OWNlMGVkNWE0
MDVkYWQyOTVmZDAzODNhNGRlMzlkYjJmYjIuLmE5YjdhNmE1MjlhN2E3YmVkZDExYTkyMGIzMzRk
YzA2ZTgwMWY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTYwLDEwICs2MCwx
MCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N1YnNldDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oRG9jdW1lbnRUeXBlKQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnRU
eXBlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OkRvY3VtZW50VHlwZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkRP
Q1VNRU5UX1RZUEVfTk9ERTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IDUyMzkzNTU0NGFlNjRkZWU0MTUwODYxYjlmYmNjODY2
YjkxMTU5MzguLjIzODg5YmU2ZDEyZDJhMWM0ZWE5ZTY3ZDAxZGRiZTRhMTEzMmQ2MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNjcwLDExICs2NzAsNiBAQCBpbmxpbmUgYm9vbCBpc0VsZW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KIAogTk9E
RV9UWVBFX0NBU1RTKEVsZW1lbnQpCiAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0
VHJhaXRzPGNvbnN0IEVsZW1lbnQsIGNvbnN0IE5vZGU+IHsKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KLX07
Ci0KIGlubGluZSBib29sIE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdAogewogICAgIHJldHVy
biBpc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHRoaXMpLT5oYXNBdHRyaWJ1dGVzKCk7CkBA
IC03ODYsNCArNzgxLDExIEBAIGlubGluZSBVbmlxdWVFbGVtZW50RGF0YSYgRWxlbWVudDo6ZW5z
dXJlVW5pcXVlRWxlbWVudERhdGEoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVz
cGFjZSBXVEYgewordGVtcGxhdGUgPD4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0czxjb25zdCBXZWJD
b3JlOjpFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpOb2RlPiB7CisgICAgc3RhdGljIGJvb2wgaXNP
ZlR5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnRO
b2RlKCk7IH0KK307Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5k
ZXggZjI0ZDZjOGE3NWZkZTFhMzgwYmRhNjkzMjk4MDdjMDE2OTI5Yjc2NC4uNThiZWI3ZjlhYTQ2
ZDY3Njk2MjliNjRjYmRlY2Y0NDllYTQxODQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdl
cygpCiAgICAgd2hpbGUgKG1fZW50YW5nbGVkQ2hhbm5lbCAmJiBtX2VudGFuZ2xlZENoYW5uZWwt
PnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKG1lc3NhZ2UsIGNoYW5uZWxzKSkgewogCiAgICAgICAg
IC8vIGNsb3NlKCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5l
eHQgbWVzc2FnZSBmcm9tIGRpc3BhdGNoaW5nLgotICAgICAgICBpZiAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgdG9Xb3JrZXJHbG9iYWxTY29wZSht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5pc0Nsb3NpbmcoKSkKKyAgICAgICAgaWYgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBXVEY6Om1vdmUoY2hhbm5lbHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDdjOGE5
YTY4NWUzOTdiMmNkYmQ3OTY0NGRhMDc0NmVmNjUyZGIxMDcuLjRjZDMxNTcwYmE0MTE5NzY5OTE1
NmExN2FhODg4ODY3YjRkMTdjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlRyZWVTaGFyZWQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBWTTsKQEAgLTczOSw1OCArNzQwLDYgQEAgaW5saW5lIENvbnRhaW5l
ck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25zdAogICAgIHJl
dHVybiBwYXJlbnROb2RlKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUs
IHR5cGVuYW1lIEFyZ1R5cGU+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRzIHsKLSAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVj
dGVkVHlwZT4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8RXhwZWN0ZWRUeXBlLCBFeHBlY3Rl
ZFR5cGU+IHsKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoRXhwZWN0ZWRUeXBlJikgeyByZXR1cm4g
dHJ1ZTsgfQotfTsKLQotLy8gVHlwZSBjaGVja2luZyBmdW5jdGlvbiBmb3IgTm9kZXMsIHRvIHVz
ZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25jYXN0PD4oKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
eHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBu
b2RlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUs
IEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKLSAgICByZXR1cm4g
Tm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46Omlz
VHlwZShub2RlKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5h
bWUgQXJnVHlwZT4KLWlubGluZSBib29sIGlzKEFyZ1R5cGUqIG5vZGUpCi17Ci0gICAgQVNTRVJU
KG5vZGUpOwotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUs
IEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKLSAgICByZXR1cm4g
Tm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46Omlz
VHlwZSgqbm9kZSk7Ci19Ci0KLS8vIERvd25jYXN0aW5nIGZ1bmN0aW9ucyBmb3IgTm9kZSB0eXBl
cy4KLXRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotaW5saW5lIHR5
cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29u
c3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGUgZG93bmNhc3QoU291cmNlJiBzb3VyY2UpCi17Ci0g
ICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUs
ICJVbm5lY2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaXM8VGFyZ2V0Pihzb3VyY2UpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJn
ZXQmLCBUYXJnZXQmPjo6dHlwZT4oc291cmNlKTsKLX0KLXRlbXBsYXRlPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6
OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlwZSBk
b3duY2FzdChTb3VyY2UqIHNvdXJjZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jh
c2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc291cmNlIHx8IGlzPFRhcmdldD4oKnNv
dXJjZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFs
PHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCosIFRhcmdldCo+Ojp0
eXBlPihzb3VyY2UpOwotfQotCi0vLyBBZGQgc3VwcG9ydCBmb3IgdHlwZSBjaGVja2luZyAvIGNh
c3RpbmcgdXNpbmcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGhlbHBlcnMgZm9yIGEgc3BlY2lmaWMg
Y2xhc3MuCi0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oQ2xhc3NOYW1lKSBc
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+IFwKLSAgICBjbGFzcyBOb2RlVHlwZUNh
c3RUcmFpdHM8Y29uc3QgQ2xhc3NOYW1lLCBBcmdUeXBlPiB7IFwKLSAgICBwdWJsaWM6IFwKLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzIyNDbGFz
c05hbWUobm9kZSk7IH0gXAotICAgIHByaXZhdGU6Ci0KLSNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKSBcCi0gICAgfTsKLQogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92
ZWQgYW5kIGFsbCB1c2VzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfKigpLgogI2RlZmluZSBOT0RFX1RZUEVfQ0FTVFMoVG9DbGFzc05hbWUpIFwKICAgICBU
WVBFX0NBU1RTX0JBU0UoVG9DbGFzc05hbWUsIE5vZGUsIG5vZGUsIFdlYkNvcmU6OmlzIyNUb0Ns
YXNzTmFtZSgqbm9kZSksIFdlYkNvcmU6OmlzIyNUb0NsYXNzTmFtZShub2RlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBiMzI1YzM4ZGFmNTQwYTA5
ZThmYmRiNTM4ZmNlN2JmMDNlZTgwMzlhLi4zZDcyM2FhZjgxZTg4YWMxYTZkNDNlY2I4NDQ3Zjdh
NjE3OThjZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
CkBAIC05MSwxMCArOTEsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgc3RhdGljIGJvb2wg
aXNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5u
b2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsgfQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vbmFt
ZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYg
bm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OlBST0NFU1NJ
TkdfSU5TVFJVQ1RJT05fTk9ERTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDBhOTBhNDVlNjAxOTkyY2U0
NzMwMDkyOGQyNDgxZTRkNTUzYzFkZmIuLjRiZTVjOTY5MTAzMzliOTY3Yzc2YWNjZjY1OTNiZTRk
YTE3OTkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNzcsMTAgKzc3LDEw
IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBO
T05FICYmIChzdHlsZS0+Y29udGVudERhdGEoKSB8fCBzdHlsZS0+aGFzRmxvd0Zyb20oKSk7CiB9
CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHNldWRvRWxlbWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc1BzZXVkb0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5p
c1BzZXVkb0VsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpQc2V1ZG9FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDUwYTg0Yzc3OTQ4MWI5
OGU3YjdmYTEzYzZhYWJlZWFjYjlkYmYwNjguLmRjZWY1NzUyYjBkMDllZjllMjRlZDlhYjg4ZjQy
OTU3YjljYjIxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkRPTVRpbWVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
cnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQdWJsaWNV
UkxNYW5hZ2VyLmgiCkBAIC0xNTgsMTYgKzE1OSwxNiBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7
Ci0gICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8
IChpc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHRvV29ya2VyR2xv
YmFsU2NvcGUodGhpcyktPnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICBBU1NFUlQoKGlzPERv
Y3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHx8IChpczxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKIAogICAgIG1fbWVzc2Fn
ZVBvcnRzLmFkZCgmbWVzc2FnZVBvcnQpOwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKLSAg
ICBBU1NFUlQoKGlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlz
V29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3JrZXJHbG9iYWxT
Y29wZSh0aGlzKS0+dGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1l
bnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPigqdGhpcykgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogCiAgICAgbV9tZXNzYWdlUG9y
dHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CkBAIC00NDUsMTAgKzQ0NiwxMCBAQCBkb3VibGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0CiAK
IEpTQzo6Vk0mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKIHsKLSAgICAgaWYgKGlzRG9j
dW1lbnQoKSkKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIEpT
RE9NV2luZG93Ojpjb21tb25WTSgpOwogCi0gICAgcmV0dXJuIHRvV29ya2VyR2xvYmFsU2NvcGUo
KnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogfQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGRh
ZGQ5YWExOTY2YTE5Nzk4NTFhZmMwNjEwYzE5Y2VmZjlmMTJlZTkuLmZjZTE4MDQ2ZjE0ZWY5MjEx
Y2ViYjdiNGU0OTJjYWE0NDdiZjIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtMjM0LDEwICsyMzQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9
OwogCi0jZGVmaW5lIFNDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9UWVBFX0NBU1RTKFRvVmFsdWVU
eXBlTmFtZSkgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUb1ZhbHVlVHlwZU5h
bWUqIHRvIyNUb1ZhbHVlVHlwZU5hbWUoY29uc3QgUmVmUHRyPFQ+JiBjb250ZXh0KSB7IHJldHVy
biB0byMjVG9WYWx1ZVR5cGVOYW1lKGNvbnRleHQuZ2V0KCkpOyB9IFwKLSAgICBUWVBFX0NBU1RT
X0JBU0UoVG9WYWx1ZVR5cGVOYW1lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb250ZXh0LCBj
b250ZXh0LT5pcyMjVG9WYWx1ZVR5cGVOYW1lKCksIGNvbnRleHQuaXMjI1RvVmFsdWVUeXBlTmFt
ZSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDcwZDEyZjg5OThiY2RjNWFl
ODZhOTM2NjgwZDA3YjcyNmY1MGJjZjIuLjg5MDNkZGYzYjEwMDhiZWE0MGZhZDEyMjkyN2RmYzAx
YjQ5ZDNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtOTUsMTAgKzk1LDYgQEAgaW5s
aW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25zdAogICAgIHJldHVy
biB0cmVlU2NvcGUoKS5mb2N1c2VkRWxlbWVudCgpOwogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFNoYWRvd1Jvb3QpCi0gICAgc3RhdGljIGJvb2wgaXNTaGFkb3dSb290KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTaGFkb3dSb290KCk7IH0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6OnNoYWRvd1Jvb3Qo
KSBjb25zdAogewogICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQpAQCAtMTE5LDYgKzExNSwxMCBA
QCBpbmxpbmUgYm9vbCBoYXNTaGFkb3dSb290UGFyZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAg
cmV0dXJuIG5vZGUucGFyZW50Tm9kZSgpICYmIG5vZGUucGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFkb3dSb290KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlz
U2hhZG93Um9vdCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDA5YmMwMzgxNTYxODIzMDQ0ZWE2Y2E2
OTFhOTVhNTlkOWQ5OWM3Mi4uM2Y3MGYzZGQzMjU5M2NmNmUzM2JkMmZkYTEwYzQ3Njg5NGMwYjhj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBp
bmxpbmUgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBTdHlsZWRFbGVtZW50OjpwcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPnByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKCk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU3R5bGVk
RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1N0eWxlZEVsZW1lbnQoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5pc1N0eWxlZEVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vbmFtZXNwYWNlCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQpCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNTdHlsZWRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaAppbmRleCA4Yjg0OGFiNzdhYmVjNGZiMjEyMjBmZjE0MDc4OTNkNDUxOTNh
ZWQxLi42MGRlZWY5NDRlZDAzOWZjNzRhN2UwNTkzMTZkOGU2NjQwMGViMTY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmgKQEAgLTc0LDEwICs3NCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFRleHQpCi0gICAgc3RhdGljIGJvb2wgaXNUZXh0KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzVGV4dE5vZGUoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gVGV4dF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCmluZGV4IDkyYTk3OTZlNDY3NzM1Zjc4OWNhYjk4NzAyZTIyNWNiOGU5ZGMz
YjYuLjUyMmU3ZGYzY2YzY2Q1MWUyYzYwNTI1ODZkNjEyMzVjZGMwZGZhMTggMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX25hbWVzLnBsCkBAIC02MzksMjkgKzYzOSwzMyBAQCBzdWIgcHJpbnRUeXBlSGVscGVy
cwogICAgICAgICBuZXh0IGlmICR0YWdDb3VudCA+IDE7CiAgICAgICAgIG15ICRuYW1lID0gJGNs
YXNzVG9UYWdzeyRjbGFzc31bMF07CiAgICAgICAgIHByaW50IEYgPDxFTkQKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzICRjbGFzczsKK30KK25hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUgPHR5
cGVuYW1lIEFyZ1R5cGU+Ci1jbGFzcyBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgJGNsYXNzLCBB
cmdUeXBlPiB7CitjbGFzcyBUeXBlQ2FzdFRyYWl0czxjb25zdCBXZWJDb3JlOjokY2xhc3MsIEFy
Z1R5cGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkg
eyByZXR1cm4gY2hlY2tUYWdOYW1lKG5vZGUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUo
QXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gY2hlY2tUYWdOYW1lKG5vZGUpOyB9CiBwcml2YXRlOgog
RU5ECiAgICAgICAgOwogICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1M
IiAmJiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7
CiAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUo
Y29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVua25v
d25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1O
YW1lczo6JHtuYW1lfVRhZyk7IH0KLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGNoZWNrVGFnTmFt
ZShkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CisgICAgc3RhdGljIGJvb2wgY2hlY2tU
YWdOYW1lKGNvbnN0IFdlYkNvcmU6OkhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxl
bWVudC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3Jl
OjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGlj
IGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2Vi
Q29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQogRU5ECiAgICAgICAgICAgIDsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgc3RhdGljIGJvb2wgY2hlY2tU
YWdOYW1lKGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25h
bWV9VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjok
e25hbWV9VGFnKTsgfQorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3Jl
OjokcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1l
fVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6Tm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0ZXJze25h
bWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KIEVORAogICAgICAgICAgICA7CiAgICAgICAg
fQogICAgICAgIHByaW50IEYgPDxFTkQKIH07Cit9CiBFTkQKICAgICAgICA7CiAgICAgICAgcHJp
bnQgRiAiXG4iOwpAQCAtNjc4LDExICs2ODIsOSBAQCBzdWIgcHJpbnRUeXBlSGVscGVyc0hlYWRl
ckZpbGUKICAgICBwcmludCBGICIjaWZuZGVmICIuJHBhcmFtZXRlcnN7bmFtZXNwYWNlfS4iRWxl
bWVudFR5cGVIZWxwZXJzX2hcbiI7CiAgICAgcHJpbnQgRiAiI2RlZmluZSAiLiRwYXJhbWV0ZXJz
e25hbWVzcGFjZX0uIkVsZW1lbnRUeXBlSGVscGVyc19oXG5cbiI7CiAgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCIiLiRwYXJhbWV0ZXJze25hbWVzcGFjZX0uIk5hbWVzLmhcIlxuXG4iOwotICAgIHBy
aW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIjsKIAogICAgIHByaW50VHlwZUhlbHBlcnMo
JEYsIFwlYWxsVGFncyk7CiAKLSAgICBwcmludCBGICJ9XG5cbiI7CiAgICAgcHJpbnQgRiAiI2Vu
ZGlmXG4iOwogCiAgICAgY2xvc2UgRjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4
IDBhOWI1YTJiZjBkNWIxYzU4MGE0ZTM5ZGIzYWE3ZTBiZjgwZmJhMWUuLmE2NWMzNzkwMmJmNjFl
OTBkN2JkMjUxMjI3ODUzNDI3YjQ5YmRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aApAQCAtOTcsMTEgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1f
d2luZG93TmFtZWRJdGVtOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1M
RG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNIVE1MRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RG9j
dW1lbnQ+KG5vZGUpICYmIGlzSFRNTERvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2RlKSk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxEb2N1bWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50
KSB7IHJldHVybiBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRv
Y3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUp
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSFRNTERvY3Vt
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA2OGYyMzFiN2M3ZDc4NDQ0YWNj
MWFkMmFmN2JjYWE4MTZiNmQ4ODRhLi44MTIzNDc4ZGQ5ZTBhZWE0Mzk3NTY3MzllYWQwNTY1YTVi
MWI5ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xNDYsMTAgKzE0Niw2IEBA
IGlubGluZSBIVE1MRWxlbWVudDo6SFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50CiAgICAgQVNTRVJUKHRhZ05hbWUubG9jYWxOYW1lKCku
aW1wbCgpKTsKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRWxlbWVudCkK
LSAgICBzdGF0aWMgYm9vbCBpc0hUTUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNIVE1MRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
IGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgSFRNTFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PigqdGhpcykgJiYgZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1lKG5hbWUpOwpAQCAtMTU3LDYgKzE1Mywx
MCBAQCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IEhUTUxRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVu
dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNpbmNsdWRlICJIVE1MRWxl
bWVudFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZiAvLyBIVE1MRWxlbWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGQ5MjA4M2EwNjc2YTVh
OGVlOTVkNzZmMDE3ZDQ1MmQ1MDhkNGU0MGMuLjUzY2YxYTczN2EwNDY5MzliYWU4MGViNTJmZGNl
Yzc5Y2NiYjcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBdXRv
Zm9jdXNlZCA6IDE7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJvbEVs
ZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSkuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIGVsZW1lbnQpIHsg
cmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJvbEVsZW1lbnQoKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5p
c0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggZjM4MTUzZjhiMTExZTNmZWIxNTAz
NTlhYmI0N2ExYmQyMGRmMzkyMy4uM2NhN2FiMTNlMzE2ZGFmNmY1Y2NmMWQ2N2RjZThmMDNiMGM3
YjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NzYsMTEgKzc2LDExIEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRnJhbWVFbGVtZW50QmFzZSkKLSAgICBz
dGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBpczxIVE1MRnJhbWVFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZy
YW1lRWxlbWVudD4oZWxlbWVudCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1l
bnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRC
YXNlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gSFRNTEZyYW1lRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgKaW5kZXggMDZhNDUzNzQ1OGE4OTY2ODU0NDBjZWI5YjFjOTVhMDc3MTVh
ZjU4OS4uOWMzYjI3ZThkNGFmNDBkN2MyZTBkNTdmNTAyYThjODgxOGE4ZDZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC02OSwxMSArNjksNiBA
QCBwcml2YXRlOgogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZyYW1lT3duZXJFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0KLQogY2xhc3MgU3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIgewogcHVibGljOgogICAgIGV4
cGxpY2l0IFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCkBAIC0x
MDEsNCArOTYsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYgLy8gSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDM3YTE0MTBmY2Q5NmMwNzdmYTM0NjkwYTBhNTIw
OGMwZmQ1ZWZiOC4uOGY1MWU2NWUxOWU4ODQ5MDJjY2IwNjIxMTEwZmViNzNkMTA3NTQxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwOSwxMSArOTA5LDYgQEAg
c3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogI2VuZGlmCiAjZW5kaWYKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MTWVkaWFFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxNZWRp
YUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkg
JiYgaXNIVE1MTWVkaWFFbGVtZW50KHRvRWxlbWVudChub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKLQogI2lmbmRlZiBOREVCVUcKIHRlbXBsYXRlPD4KIHN0cnVjdCBWYWx1
ZVRvU3RyaW5nPE1lZGlhVGltZT4gewpAQCAtOTI0LDcgKzkxOSwxMiBAQCBzdHJ1Y3QgVmFsdWVU
b1N0cmluZzxNZWRpYVRpbWU+IHsKIH07CiAjZW5kaWYKIAotfSAvL25hbWVzcGFjZQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc1R5cGUodG9FbGVtZW50KG5vZGUpKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IDBmNTdmNDZhMWM3MTBhODdhNTNkZWE1NGMy
M2NjMjJlZDg4OTFkMzAuLmY4YmM3ZjljNjMwNjZhMzRjYmQ1YjQ5NjhjOTE2ZmI2MjQ1ZjY2NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTEzNiwxMCArMTM2
LDEwIEBAIHByaXZhdGU6CiAgICAgRGlzcGxheVN0YXRlIG1fZGlzcGxheVN0YXRlOwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MUGx1Z0luRWxlbWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc0hUTUxQbHVnSW5FbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNQbHVnaW5FbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxlbWVudCgpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MUGx1Z0luRWxlbWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4
IDA3ODZmMjEyYWJhNjA2NzUwZjlmNWNmYmExOGJjNDA2ZDczN2JmMDYuLjg2ZGNjODY5MjhlYWE0
NjZlMTIxYmM5Njc1NWEzMzQzMzAwMWE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xNTcsMTEgKzE1NywxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkOwogfTsKIAotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlz
SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gZWxlbWVudC5pc1BsdWdJbkltYWdlRWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PEhUTUxQbHVnSW5FbGVtZW50Pihub2RlKSAmJiBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoZG93
bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2Vu
ZGlmIC8vIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5oCmluZGV4IDAzNmJlYjZhYmNkZjI5MWJjYzYzOGZhMDU3YjFmMzM4
NzRhYmU4YzYuLjNjZGI5YWJmZGZjNGUxYmExMDhlNGE3ZDMzNGJmOTEzM2IyMjJmNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTYyLDExICs2Miwx
MSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihIVE1MVGFibGVDZWxsRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBp
c0hUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGhUYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVDZWxs
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkg
JiYgaXNIVE1MVGFibGVDZWxsRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LX0gLy8gbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNv
cmU6OkhUTUxOYW1lczo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnRoVGFnKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpO
b2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNU
eXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgKaW5kZXggNjg0NTcwNzc5MTcyZWRlNDgxMjMzNDE4YjRmZjNl
NjE0NTlhMTVjMi4uNTA1Y2NkZTIyOGM5ZTgzM2E1OWIzYWM2ZmIxOTJlMThiMmU5MjZlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaApAQCAtNjEs
MTEgKzYxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMq
IGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIG92ZXJyaWRlOwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MVGFibGVTZWN0aW9uRWxlbWVudCkKLSAg
ICBzdGF0aWMgYm9vbCBpc0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0aGVhZFRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGZvb3RUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRib2R5VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVs
ZW1lbnQ+KG5vZGUpICYmIGlzSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi19IC8vbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0Ym9keVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9k
ZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDMzMzdm
ZDkzNzQzY2M5NWY1YWE5YzM1YTIxZmRhZjUyNmU1NjViNzYuLmJkNjBhZmYxOWNkOWRlZjllNTI3
MjBkYTUyNjY1MTg0MjJkOTY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgY2hhciBtX2lzUGxhY2Vob2xkZXJWaXNpYmxlIDogMTsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQpCi0gICAg
c3RhdGljIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dEZvcm1Db250cm9sKCk7IH0KLSAgICBzdGF0
aWMgYm9vbCBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQodG9FbGVtZW50KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0
IFBvc2l0aW9uJik7CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Rm9ybUNvbnRyb2woKTsgfQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRWxlbWVudE5vZGUoKSAmJiBpc1R5cGUodG9FbGVtZW50KG5vZGUpKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmgKaW5kZXggNzgxZDAyY2EzNjNkOGZmYTQ1ZGRmMjc4N2Y3YTU4NTFhMjNjOTk0OC4uZTFlOWRl
MjdkZmQ4YWE4YTIzODlmMDdkZGE2NzJlNzhkMmNmNzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmgKQEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRTaHJpbmtJbWFnZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSW1hZ2VE
b2N1bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0ltYWdlRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc0ltYWdlRG9jdW1lbnQoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzSW1hZ2VEb2N1bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxE
b2N1bWVudD4obm9kZSkgJiYgaXNJbWFnZURvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihub2Rl
KSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbWFnZURvY3Vt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzSW1hZ2VEb2N1bWVudCgpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+
KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYgLy8gSW1h
Z2VEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IDI3
NGMyYWI5OTA2MDA4OWFjNzkxOWZjMTdkYTZhYjRkNjhkYThhYjcuLmMyYTYzMWExZTUwNjZjZTk4
Nzg0YmFmOWQwMzE1ZGU3ZDg2MWI1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxl
bWVudC5oCkBAIC01MCwxMSArNTAsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNM
YWJlbGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKExhYmVsYWJsZUVsZW1lbnQpCi0gICAgc3RhdGlj
IGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0xhYmVsYWJs
ZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzTGFiZWxhYmxlRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVu
dCkgeyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxF
bGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5v
ZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmgKaW5kZXggYWI1ZWQwODFhNmE0MzE4NGQ4NzlkZTA3ZGJhNjAy
MDBkY2NjNGUwZC4uMDNlZDgxYjUwOGVlMTA2YjkzOWRiZTkzNGM1YjY3ODE1MDZiODBlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKQEAgLTU2LDEyICs1NiwxMiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX291dGdvaW5nUmVmZXJyZXI7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKE1lZGlhRG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNNZWRpYURvY3Vt
ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNNZWRpYURv
Y3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc01lZGlhRG9jdW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzTWVkaWFEb2N1bWVudChkb3du
Y2FzdDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6TWVkaWFEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc01lZGlhRG9jdW1l
bnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0
PFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKIAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRl
eCAxODgzNGQ2OGUwYTM1YTVlM2YxNjYwMDhhYmZiZmMxYWEyY2E3YjVjLi42ZmM2ZWJjZjgxOWEw
Y2IwNTZkZDQ4ZGUxZGM3OWVmZDc3ZDkxZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1
bWVudC5oCkBAIC02MSwxMSArNjEsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SFRNTFBsdWdJ
bkVsZW1lbnQ+IG1fcGx1Z2luRWxlbWVudDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oUGx1Z2luRG9jdW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNQbHVnaW5Eb2N1bWVudChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzUGx1Z2luRG9jdW1l
bnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzUGx1Z2luRG9jdW1lbnQoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzUGx1Z2luRG9jdW1lbnQoZG93bmNh
c3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlBsdWdpbkRvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzUGx1Z2luRG9jdW1l
bnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0
PFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKIAogI2VuZGlmIC8vIFBsdWdpbkRvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDZlOGI3Y2MxYzVhZGVmM2QyZmRjOTg4MmJmZTI0
M2U2N2NhMWE5MjUuLjU0N2EyMTA1MmIzMjk1ODYxMDFkMzE1NDk3ZDBjMzZkMjZhN2E4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNzUsMTAg
Kzc1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzRGlzdHJpYnV0aW9uOwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihJbnNlcnRpb25Qb2ludCkKLSAgICBzdGF0aWMgYm9v
bCBpc0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNl
cnRpb25Qb2ludCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGlubGluZSBi
b29sIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1
cm4gbm9kZSAmJiBpczxJbnNlcnRpb25Qb2ludD4obm9kZSkgJiYgZG93bmNhc3Q8SW5zZXJ0aW9u
UG9pbnQ+KCpub2RlKS5pc0FjdGl2ZSgpOwpAQCAtMTI3LDQgKzEyMyw4IEBAIGlubGluZSBib29s
IGhhc1NoYWRvd1Jvb3RPckFjdGl2ZUluc2VydGlvblBvaW50UGFyZW50KGNvbnN0IE5vZGUmIG5v
ZGUpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpJbnNlcnRpb25Qb2ludCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEluc2VydGlvblBv
aW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgKaW5kZXggYmI3YjAzMjAxYmJjMDJlNTliMDU3YTY1NjcwNGUzNmNlMDdj
Yzk4OC4uYzMxMjhiOGNiZmJkNjU0OWQ2YWE5ODQ1MjlkYTE2ODA2YWU4ZjAwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKQEAgLTcwLDExICs3MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29u
c3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2Rl
KSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4o
bm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIGNsYXNzIFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwpAQCAtMTA3LDYgKzEwMiwxMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jYXB0dXJpbmc7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9kZSkg
JiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5oCmluZGV4IDNiM2Q5MTEwY2I4MGM1ZTJlNmYwMjc4NzA1NGY3ODNh
OTljMTdhMDIuLjUyYWU0ODc4Y2QyNzRlOWM5MWFlNmYzN2RkYzQyNmM0ZDVmZjFkZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCkBAIC04MCwxMCArODAsMTAg
QEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViVlRURWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1dl
YlZUVEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1l
bnQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V2ViVlRURWxl
bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkg
eyByZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZWYwMDhkM2EyNmZlZDc2OTI1YzM4NTQx
ZGQzMmM2MzY2NWYzNWM4My4uOGU5NDdjYTU4ZDJiYmEzY2ZhNjk5MjMyYWFiYzdhYzVmNDI3OTkw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTEyNjIsOCArMTI2Miw4IEBAIEluc3RydW1lbnRpbmdBZ2VudHMq
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhCiAKIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0Zvck5vbkRvY3VtZW50Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogewotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
Ci0gICAgICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZSh0b1dv
cmtlckdsb2JhbFNjb3BlKGNvbnRleHQpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uRm9yV29ya2VyR2xvYmFs
U2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IDJlOGMyYmZmN2FjMGMwM2ZjYTUwZTc2NDgxMzBjYTI0ZjBiOGNlYTQuLmUzZGNkYjQ4
NmYxOWU3MTA1MzJkOTIwOWY5NWY2NTk3MWZlMDA0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU2LDggKzU2LDggQEAgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY28KICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAg
ICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCks
IGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVzdCwgb3B0aW9ucyk7
CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVz
dCwgb3B0aW9ucyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgKmNsaWVudCwgcmVxdWVzdCwgb3B0aW9u
cyk7CiB9CkBAIC02Niw4ICs2Niw4IEBAIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAgICAg
QVNTRVJUKGNvbnRleHQpOwogCi0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUo
KSkgewotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgb3B0
aW9ucyk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggOWZmYjk1Yjk4ZTNkZDZiZWIyNWI1NjVlZmYyNzQ3NTg0
MGVlZjJmZi4uMmU4NzgwOTVmMjcxYjFjMDJlMzlhNDYwMTk1MmE3ZjVmYjFhMTJkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC03NTIsOCArNzUy
LDggQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlVXJsRnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmkKIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3Zl
UmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYg
KGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAgICB0b1dvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQpLT50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9M
b2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUs
IHJlcXVlc3QsIHNlc3Npb25JRCkpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkpIHsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS50
aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRU
YXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUsIHJlcXVlc3QsIHNlc3Npb25J
RCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NjgsOCArNzY4LDggQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFJlc28KIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21T
ZXNzaW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPnRocmVhZCgp
LndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRhc2soJmNy
b3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzLCByZXF1ZXN0KSk7CisgICAg
aWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgeworICAgICAgICBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCku
cG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRhc2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVz
dEZyb21TZXNzaW9uQ2FjaGVzLCByZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzSW1wbChjb250ZXh0LCByZXF1ZXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IGUwOTkwNjcyZDBjZWJlNWIw
N2I5YWQ5ZDRjNmJkYTA5NTk0YTQ5ODQuLmI5OGZiZWI3MmVhN2ZhMzY5ODM5ZTBhOThkMTBhYjdm
YmRhMDgzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNzMsMTAg
KzczLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgp
IHsgfQogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihNYXRoTUxFbGVtZW50KQot
ICAgIHN0YXRpYyBib29sIGlzTWF0aE1MRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzTWF0aE1MRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
Ci0KIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaXNNYXRoTUxFbGVtZW50KCkgJiYgZG93bmNh
c3Q8TWF0aE1MRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CkBAIC04NCw2ICs4MCwx
MCBAQCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5h
bWUmIG5hbWUpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNYXRoTUxFbGVtZW50KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzTWF0aE1M
RWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNpbmNsdWRlICJN
YXRoTUxFbGVtZW50VHlwZUhlbHBlcnMuaCIKIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggN2Q5NGEzZDRi
ODI3ZjlkYTY2ZDg4NDI4NWVjOTJmZTk1OTlkMGFjNC4uZTcyMTFiMzkyOWYxOTYwOGU1MmNlYmU5
MGRhOTVlMjdiNTIyOGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuaApAQCAtNzIsMTUgKzcyLDE1IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yPiBtX2FuaW1hdG9yOwogfTsKIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihTVkdBbmltYXRlRWxlbWVudEJhc2UpCi0gICAgc3RhdGljIGJvb2wg
aXNTVkdBbmltYXRlRWxlbWVudEJhc2UoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudEJhc2UpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykKLSAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KFNWR05hbWVzOjpzZXRUYWcpOworICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFdl
YkNvcmU6OlNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29y
ZTo6U1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykKKyAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpzZXRUYWcpOwogICAgIH0KLSAgICBzdGF0
aWMgYm9vbCBpc1NWR0FuaW1hdGVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVy
biBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0FuaW1hdGVFbGVtZW50QmFzZShkb3duY2Fz
dDxTVkdFbGVtZW50Pihub2RlKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkg
JiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KICNlbmRp
ZiAvLyBTVkdBbmltYXRlRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRl
eCA2Y2FjZjAzYTgxZThjYmM3M2I5NGZiZTYyZjNhMzQ1YmY4ZWJmNzk2Li5lZjViZTJlZWNkMDI1
MDQ2ZjJiNTFlYjlkYTA5M2ExOGQ1NDY0OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApA
QCAtNTIsMTEgKzUyLDExIEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsK
IH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHRG9jdW1lbnQpCi0gICAgc3Rh
dGljIGJvb2wgaXNTVkdEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJu
IGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHRG9jdW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RG9jdW1lbnQ+KG5vZGUpICYmIGlzU1ZH
RG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNT
VkdEb2N1bWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUo
ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCiAjZW5kaWYgLy8gU1ZHRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKaW5kZXggOWEyZTk2YzhmYzFiZGVjOTFjMmU3MGE5ZDhmMDc1NTlkZjBjMjIzNC4uZDgzM2Mw
NjFmMDk1MTdiODFkZGJhYzQ5ZmUwNDcxNTk4M2M2NzhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCkBAIC0yMjEsMTAgKzIyMSw2IEBAIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRv
ciB7CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYikgeyByZXR1cm4gYS5tYXRjaGVzKGIpOyB9CiB9OwogCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR0VsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdF
bGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFn
TmFtZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBp
c1NWR0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqdGhpcykuaGFzVGFnTmFtZShu
YW1lKTsKQEAgLTIzMiw2ICsyMjgsMTAgQEAgaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShj
b25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRWxlbWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCmluZGV4IDBjYjE5ZWZlM2U2MzIxMzQwYTg2OTA5ZTA3MWJkNDQyMTU4MWM3OWQuLjY2
YWMzYzIxMDUzYWYxMGEwMTg4NThkMjZhMmY5NmZiYmYyMzAyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKQEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogCiB2b2lkIGludmFsaWRhdGVGaWx0ZXJQ
cmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKLSAgICBzdGF0aWMgYm9v
bCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBTVkdFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0KLSAgICBzdGF0
aWMgYm9vbCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0ZpbHRlckVmZmVjdCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJD
b3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKaW5kZXggNTMz
ODA4ZmM4MWJjZjlmYmE0NjdlMDllNDVmYjExNzE0ODFiNmQyZi4uMzY1ODliYjUyMzZkYjFkYjc5
ZDc0OGNhODZkNDJhODg4NWU0Y2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaApAQCAtMTA3LDE3ICsxMDcsMTcgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNW
R0dyYWRpZW50RWxlbWVudCkKLXN0YXRpYyBib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQmIGVsZW1lbnQpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50KQorc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcpOworICAgIHJl
dHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50
VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OmxpbmVhckdyYWRp
ZW50VGFnKTsKIH0KLXN0YXRpYyBib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkKIHsK
LSAgICByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdHcmFkaWVudEVsZW1lbnQo
ZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOworICAgIHJldHVybiBpczxXZWJDb3JlOjpTVkdF
bGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9k
ZSkpOwogfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmlu
ZGV4IDQzM2YzMWMwMDk3M2FkOGI5MWUyYjdkYzFiZDYwNWJhYWI5YzhlMDkuLjYxMjY2NmY0NWU1
ZmMxMzEwY2Q1MDY4MmI1ZWI4MTA1Mjc5MGFiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmgKQEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9z
aG91bGRJc29sYXRlQmxlbmRpbmc7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFNWR0dyYXBoaWNzRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR0dyYXBoaWNzRWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU1ZHR3JhcGhp
Y3NFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1NWR0dyYXBoaWNzRWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0dyYXBo
aWNzRWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4g
ZWxlbWVudC5pc1NWR0dyYXBoaWNzRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1l
bnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFNWR0dyYXBoaWNz
RWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCmluZGV4IDAwOWFlNjYyYjEw
OTdhNDM3ODFhODBiMTU5ZDkxNDUyODdmNzcyMzcuLmZjNDZkN2M3Yjk4NzEyMmEyZTBkZjczYTUy
ZDM2Y2Y0NjA0OWRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCkBAIC02Miwx
MSArNjIsMTEgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmlt
YXRlZFByb3BlcnR5PFNWR1BvaW50TGlzdD4gbV9wb2ludHM7CiB9OwogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFNWR1BvbHlFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHUG9s
eUVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnBvbHlsaW5lVGFnKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHUG9seUVsZW1lbnQoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdQb2x5
RWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cG9seWxpbmVUYWcpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6
OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50
Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggYTU5MmFiZTcyNTNj
ZTljNzAzY2JlNjEwOGQzZjYwN2RiMDNmOTVmMS4uMDlmMjBlNDBjY2U2M2Y0Y2UxNjg1ZTAzZmZi
NjkwNWVjMjMxMTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaApAQCAtMTE5LDExICsxMTksMTEgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR1Rl
eHRDb250ZW50RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR1RleHRDb250ZW50RWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRl
bnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHVGV4dENvbnRl
bnRFbGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzVGV4dENvbnRlbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihu
b2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDRkOGMzMWI2NzY4NWNhODMxOTQy
ZTNhNWJiNGQwMzY2NmJkY2FjOGUuLjg3NWRjYjllNTlhMDgzMzI2NzkzZjA0NzkyOTYxNDE0ZGRi
ODRhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmgKQEAgLTIzNywxMSArMjM3LDExIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbmRp
dGlvbkV2ZW50TGlzdGVuZXI7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNW
R1NNSUxFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgU1ZH
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NNSUxFbGVtZW50KCk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBpc1NWR1NNSUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHU01JTEVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxl
bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNW
R0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTTUlMRWxlbWVudCgpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJu
IGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3Jl
OjpTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAog
I2VuZGlmIC8vIFNWR1NNSUxFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZjlkMGUzYWI4
ODVhODA0NDU3OTJjNmIyNzQ3NDJlNjkzYzZhMGYzNC4uMDQ2NDgyNzUwMWYzOTU1M2Y1Y2EzYjcz
ZDJhZjhhMTg1N2YxOTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTI1NywxMiArMjU3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFs9XSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgUmVmUHRyPE1lc3Nh
Z2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KTsKICAgICAgICAgICAg
IHBvcnQtPmVudGFuZ2xlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+KGNoYW5u
ZWwpKTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3Bl
KiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpOworICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKTsKKyAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAg
ICAgICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlz
IHNob3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCi0gICAgICAgICAgICBB
U1NFUlQoIXdvcmtlckdsb2JhbFNjb3BlLT5pc0Nsb3NpbmcoKSk7Ci0gICAgICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3b3JrZXJHbG9iYWxTY29wZS0+aXNTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5kaXNw
YXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CisgICAgICAgICAgICBBU1NFUlQo
IXdvcmtlckdsb2JhbFNjb3BlLmlzQ2xvc2luZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHdvcmtlckdsb2JhbFNjb3BlLmlzU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50
KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZGUxMjE0
ZTY1ZTU3MjRmMjQxMzgzZjVmYjdjMzZjNmVhNTRhZjIzNy4uZTAwOWU1NzU0MjVkYTQ2ZTRlNjQ3
ZGE3ODg3ZTY0ZDE4MTVkN2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTEzMywxMCArMTMzLDEwIEBAIHZvaWQgV29ya2VyR2xvYmFsU2Nv
cGU6OmNsb3NlKCkKICAgICAvLyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09dHJ1ZSB3aWxs
IGJlIGV4ZWN1dGVkLgogICAgIG1fY2xvc2luZyA9IHRydWU7CiAgICAgcG9zdFRhc2soeyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0
KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpKTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAg
ICAvLyBOb3RpZnkgcGFyZW50IHRoYXQgdGhpcyBjb250ZXh0IGlzIGNsb3NlZC4gUGFyZW50IGlz
IHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIFdvcmtlclRocmVhZDo6c3RvcCgpLgotICAgICAgICB3
b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJveHkoKS53b3JrZXJH
bG9iYWxTY29wZUNsb3NlZCgpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53
b3JrZXJSZXBvcnRpbmdQcm94eSgpLndvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCk7CiAgICAgfSB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4
IDQwNGEyMDEyYzIxOWNmYzg0OTMxMmNiZWMyMmNkOTgzZDVmZGIyNWYuLjViNThhNjllY2RiODJj
N2Y3MGZmNjI0MzAxZGEyMDdjMTgzNDBkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4MSw4ICsxODIsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1f
dG9wT3JpZ2luOwogICAgIH07CiAKLVNDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9UWVBFX0NBU1RT
KFdvcmtlckdsb2JhbFNjb3BlKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGUpCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBXb3JrZXJHbG9iYWxTY29wZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4
IDJiY2FhNGJkOWM4MWM4MzAyZDFmZTJhNmUyODI4NmQ4OGVlOGY3MDYuLjJhNTAxODg5NDhlODFl
OTgzNzE0MWNjMTQ3ZDFmZWE3MGI2OGFkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC02OCwxNSArNjgsMTUgQEAgV29ya2VyTWVz
c2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciogd29ya2VyT2JqZWN0KQog
I2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAg
ICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkgJiYgY3VycmVudFRocmVhZCgpID09IHRvV29ya2VyR2xvYmFsU2NvcGUoKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9j
dW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQorICAg
ICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
ICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogfQogCiBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIHsKICAgICBBU1NFUlQoIW1f
d29ya2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09
IHRvV29ya2VyR2xvYmFsU2NvcGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCku
dGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQorICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhy
ZWFkKCkudGhyZWFkSUQoKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFy
dFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFs9XSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZj
b250ZXh0KS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1l
cygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQg
OiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICB9KTsKIH0K
IApAQCAtMjI0LDE3ICsyMjQsMTcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29ubmVj
dFRvSW5zcGVjdG9yKFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWMKICAgICBBU1NF
UlQoIW1fcGFnZUluc3BlY3Rvcik7CiAgICAgbV9wYWdlSW5zcGVjdG9yID0gcGFnZUluc3BlY3Rv
cjsKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNj
b3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVu
ZCgpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0sIFdvcmtlckRl
YnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5OjpkaXNjb25uZWN0RnJvbUluc3BlY3RvcigpCiB7Ci0gICAgbV9wYWdlSW5zcGVjdG9y
ID0gMDsKKyAgICBtX3BhZ2VJbnNwZWN0b3IgPSBudWxscHRyOwogICAgIGlmIChtX2Fza2VkVG9U
ZXJtaW5hdGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9y
RGVzdHJveWVkKTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2Rl
KTsKIH0KIApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnNl
bmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1
cm47CiAgICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKTsKICAg
ICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbbWVzc2FnZUNvcHld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xv
YmFsU2NvcGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2VDb3B5KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkpOwogICAgIH0sIFdvcmtlckRlYnVnZ2Vy
QWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmludGVy
cnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMobV93b3JrZXJUaHJlYWQuZ2V0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDA1YzVmYTRiNzNmODY3YTUzY2RmZDk1MDY5OTM2YTEwOTY4YThmMDEuLjk2NGEwYWFhNDdiMzU2
MjgwOTA0NmQ1NzY5ZjMxNTYzZDcxMThjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTYxLDE0ICs2MSwxNCBAQCB2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNldEFsbG93Q3Jl
ZGVudGlhbHMoQWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7CiAgICAgb3B0aW9ucy5z
ZXRTZW5kTG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJhY2tzKTsKIAotICAgIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodG9Xb3JrZXJHbG9iYWxTY29wZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKKyAgICBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0
aGlzLCBvcHRpb25zKTsKIH0KICAgICAKIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJl
cXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU0NDIyNTBhMzQ5ZmEzY2JhNmRjZmE2
ZWYwMDA4NGJiYjY2M2IzMTkuLmFkZTU2OTkzNGJmOTIzZWMyYzQ5NzVlMWMzNGZmMDQzOTI1Mjc2
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNCwyMSAr
MjE0LDIxIEBAIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKICAgICAgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChtX3dvcmtlckds
b2JhbFNjb3BlLmdldCgpKTsKICNlbmRpZgogICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRU
ZXJtaW5hdGUoeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICBXb3JrZXJH
bG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtlckdsb2JhbFNjb3BlKCZjb250
ZXh0KTsKKyAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKIAogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFi
YXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAgICAg
ICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgICAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKHdvcmtlckdsb2JhbFNjb3BlLCAm
Y2xlYW51cFN5bmMpOworICAgICAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3Rv
cERhdGFiYXNlcygmd29ya2VyR2xvYmFsU2NvcGUsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAot
ICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7Cisg
ICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogCi0g
ICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+bm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCk7Cisg
ICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5ub3RpZnlPYnNlcnZlcnNPZlN0b3AoKTsKIAog
ICAgICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxk
IG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0
byBKUyBvYmplY3RzLAogICAgICAgICAgICAgLy8gd2hpY2ggYmVjb21lIGRhbmdsaW5nIG9uY2Ug
SGVhcCBpcyBkZXN0cm95ZWQuCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAg
ICAgICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGRhdGFiYXNlIHRocmVhZCB0byBjbGVhbiB1cCBhbGwg
aXRzIHN0dWZmIHNvIHRoYXQgd2UKQEAgLTIzOCwxMCArMjM4LDEwIEBAIHZvaWQgV29ya2VyVGhy
ZWFkOjpzdG9wKCkKIAogICAgICAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93biBjb21tYW5kIGF0
IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLCBzbyB0aGF0IHdlIGRlYWwKICAgICAgICAgICAgIC8vIHdp
dGggYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAgICAg
ICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29w
ZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpOworICAgICAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGUucG9zdFRhc2soeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVw
VGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAg
ICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBub3Qgc2Fm
ZSB0byBjYWxsIGNsZWFyU2NyaXB0IHVudGlsIGFsbCB0aGUgY2xlYW51cCB0YXNrcyBwb3N0ZWQg
YnkgZnVuY3Rpb25zIGluaXRpYXRlZCBieSBXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzayBo
YXZlIGNvbXBsZXRlZC4KLSAgICAgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+Y2xlYXJT
Y3JpcHQoKTsKKyAgICAgICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS5jbGVhclNjcmlwdCgp
OwogICAgICAgICAgICAgfSB9KTsKIAogICAgICAgICB9IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCmluZGV4IDMzN2NkYTE5MTljMjJkMjMyMmVmNzA4MDQxNDI1ZjE5NDhhOWIx
N2IuLjljNTBiY2Q4NDE0ZDJiNDJjNjIxMWQ3YzMwZTQ5YWNkZTg2MzBlNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTE1MDAsMjIgKzE1MDAsMjIgQEAgSURPTUVsZW1l
bnQqIERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1lbnQqIGUpCiAgICAg
SFJFU1VMVCBocjsKICAgICBJRE9NRWxlbWVudCogZG9tRWxlbWVudCA9IDA7CiAKLSAgICBpZiAo
V2ViQ29yZTo6aXM8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PihlKSkgeworICAgIGlmIChpczxX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxGb3JtRWxlbWVu
dCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MRm9ybUVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0g
bmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21F
bGVtZW50KTsKICAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgewogICAg
ICAgICBET01IVE1MSUZyYW1lRWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MSUZyYW1l
RWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURf
SURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29y
ZTo6aXM8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlz
PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxJbnB1dEVs
ZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTElucHV0RWxlbWVudChlKTsKICAgICAgICAg
aHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiop
JmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6aXM8V2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ+KGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpIVE1MT3B0aW9u
RWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTE9wdGlvbkVsZW1lbnQqIG5ld0VsZW1lbnQg
PSBuZXcgRE9NSFRNTE9wdGlvbkVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+
UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKICAg
ICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBET01IVE1M
U2VsZWN0RWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MU2VsZWN0RWxlbWVudChlKTsK
ICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQs
ICh2b2lkKiopJmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6aXM8V2ViQ29y
ZTo6SFRNTFRleHRBcmVhRWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTFRleHRBcmVhRWxlbWVudChlKTsKICAgICAgICAg
aHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiop
JmRvbUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aXNIVE1MRWxlbWVudCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCmluZGV4IGRkZDdiZDZkOTA0NTZjNTI0Yjk0M2Jj
YzRkM2NlZDkwZGQ1ZWUxOTQuLjgzMTY2MjliY2VkNGRiNzY0YTliN2Y0ZjJiMTRjMWNlYzUwMWJm
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC0zOSwxNyArMzksMTcg
QEAgLSAoV0tET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCiB7
CiAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9uLgogICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01F
bGVtZW50KFdlYkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0
ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9N
RWxlbWVudChkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVFbGVtZW50
KHRhZ05hbWUsIGVjKS5nZXQoKSk7CiB9CiAKIC0gKFdLRE9NVGV4dCAqKWNyZWF0ZVRleHROb2Rl
OihOU1N0cmluZyAqKWRhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NVGV4dChXZWJD
b3JlOjpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVUZXh0Tm9kZShk
YXRhKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVRleHQoZG93bmNhc3Q8V2Vi
Q29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCkpOwogfQog
CiAtIChXS0RPTUVsZW1lbnQgKilib2R5CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVs
ZW1lbnQoV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuYm9keSgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NRWxlbWVudChkb3duY2FzdDxXZWJDb3JlOjpE
b2N1bWVudD4oKl9pbXBsKS5ib2R5KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4
dC5tbQppbmRleCBkOTFlODEyMDQ2MTYyNjI2ZTYyYzk0ZjJiM2Q5NWJiNDdiZTAzYjQxLi5lMzBh
ZTNjZDI0YThkMDRlNGUyYzhmZDdhYzk4NzQ1ZGM5YWQyMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TVRleHQubW0KQEAgLTM1LDE0ICszNSwxNCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01UZXh0CiAK
IC0gKE5TU3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBXZWJDb3JlOjpkb3duY2FzdDxXZWJD
b3JlOjpUZXh0PigqX2ltcGwpLmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6
VGV4dD4oKl9pbXBsKS5kYXRhKCk7CiB9CiAKIC0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilk
YXRhCiB7CiAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9uLgog
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgV2ViQ29yZTo6ZG93bmNhc3Q8V2Vi
Q29yZTo6VGV4dD4oKl9pbXBsKS5zZXREYXRhKGRhdGEsIGVjKTsKKyAgICBkb3duY2FzdDxXZWJD
b3JlOjpUZXh0PigqX2ltcGwpLnNldERhdGEoZGF0YSwgZWMpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238950</attachid>
            <date>2014-09-30 13:10:06 -0700</date>
            <delta_ts>2014-09-30 13:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140930131007.patch</filename>
            <type>text/plain</type>
            <size>91533</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmYzk4ZjFhMmZlODk3Yjg0OTkzMDE3
YzlhMWY5MGE3NDg3ZDhmOTYuLjU4N2E4N2JiYTIzNTZkYTJiMjI4ZjlkZmQ5MTBlNzcwMTk0ZmYy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQ
b3VsYWluLgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBv
cnQgdG8gYWxsIHR5cGVzLCBub3QganVzdCBOb2Rlcy4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRp
b25zLmg6CisgICAgICAgICogd3RmL1R5cGVDYXN0cy5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
aXMpOgorICAgICAgICAoV1RGOjpkb3duY2FzdCk6CisKIDIwMTQtMDktMzAgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGhlIFNUUklOR19TVEFU
UyBjb2RlcGF0aCBjb21waWxpbmcgYWdhaW4sIGFuZCBhZGQgY2FsbHMgdG8gcmVmL2RlcmVmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNDU2NTM2M2QxM2ZkYTdmMTI0ZTYzYWZiM2U2NWUwZjVmNjhjZmNiZS4uNmI1
YWEyM2I2YjdlODRkNDE2MjRiM2IwYzU0NmY1N2JlM2U4YTBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5OSBAQAorMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0
byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAg
ICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlw
ZXMsIG5vdCBqdXN0IE5vZGVzLgorICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoZSBmb2xsb3dp
bmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIC0gTW92ZSBpczw+IC8gZG93bmNhc3Q8Pigp
IGFuZCBOb2RlVHlwZUNhc3RUcmFpdHMgZnJvbSBOb2RlLmggdG8gYSBuZXcKKyAgICAgICAgICB3
dGYvVHlwZUNhc3RzLmggaGVhZGVyLiBBbHNvIG1vdmUgdGhlbSB0byBXVEYgbmFtZXNwYWNlIGlu
c3RlYWQgb2YKKyAgICAgICAgICBXZWJDb3JlIG5hbWVzcGFjZSBhcyB0aGV5IGNhbiBiZSB1c2Vk
IGZvciBjbGFzc2VzIGluIG90aGVyIG5hbWVzcGFjZXMKKyAgICAgICAgICAoZS5nLiBXZWJLaXQg
bmFtZXNwYWNlKS4KKyAgICAgICAgLSBSZW5hbWUgTm9kZVR5cGVDYXN0c1RyYWl0cyB0byBUeXBl
Q2FzdFRyYWl0cyBhcyBpdCBjYW4gYmUgc3BlY2lhbGl6ZWQKKyAgICAgICAgICBmb3Igbm9uLU5v
ZGVzLgorICAgICAgICAtIFNpbmNlIEMrKyBkb2VzIG5vdCBhbGxvdyB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbnMgaW4gZGlmZmVyZW50CisgICAgICAgICAgbmFtZXNwYWNlcywgSSBoYWQgdG8gbW92
ZSBhbGwgdGhlIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIHVzZXMgdG8KKyAgICAgICAgICB0
aGUgZ2xvYmFsIHNjb3BlIGFuZCB1c2UgdGhlIFdlYkNvcmU6OiBuYW1lc3BhY2UgZXhwbGljaXRs
eSBpbiB0aG9zZS4KKyAgICAgICAgICBUaGlzIGlzIGEgYml0IHVuZm9ydHVuYXRlIGJ1dCBJIGNv
dWxkbid0IGZpbmQgYSBiZXR0ZXIgd2F5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB0YWtl
cyBjYXJlIG9mIHN1cHBvcnRpbmcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvcgorICAgICAgICB0
aGUgV29ya2VyR2xvYmFsU2NvcGUgY2xhc3MsIHdoaWNoIGRvZXMgbm90IGRlcml2ZSBmcm9tIE5v
ZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBkb20v
QXR0ci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXR0cik6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzQ0RBVEFTZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzQ2hhcmFjdGVyRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudEZy
YWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZG93bmNhc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1By
b2Nlc3NpbmdJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1BzZXVkb0VsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdl
UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp2bSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2hhZG93Um9vdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1N0eWxlZEVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5w
bDoKKyAgICAgICAgKHByaW50VHlwZUhlbHBlcnMpOgorICAgICAgICAocHJpbnRUeXBlSGVscGVy
c0hlYWRlckZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgIChp
c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRG9jdW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjppc0hUTUxFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGcmFtZUVsZW1lbnRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTEZyYW1lT3duZXJFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxN
ZWRpYUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxUYWJsZUNlbGxFbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg6
CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVu
dC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW1hZ2VEb2N1bWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9MYWJlbGFibGVFbGVtZW50Lmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNMYWJlbGFibGVFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc01lZGlhRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvUGx1Z2luRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1BsdWdpbkRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5z
ZXJ0aW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1dlYlZUVEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYXRoTUxFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdBbmltYXRlRWxlbWVudEJhc2Up
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTVkdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0dyYWRpZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzU1ZHR3JhcGhpY3NFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NW
R1BvbHlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdUZXh0Q29u
dGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR1NNSUxF
bGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNr
OjpTaGFyZWRXb3JrZXJDb25uZWN0VGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpjb25uZWN0VG9JbnNwZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAyMDE0
LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlz
PD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlNTFm
YzcxMTQ2ZWYyNDQ2YmVmZTViZThhYTZlYzY3NmE4MTA1YjguLjcxNzAwNDMyMTlkZTJkMjcxMmI4
ZWFkMTA3MTExODY4MjkzZDVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzI0Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgR2VuZXJh
bGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMsIG5vdCBqdXN0
IE5vZGVzLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9NRWxl
bWVudDo6Y3JlYXRlSW5zdGFuY2UpOgorCiAyMDE0LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGJhYzRjYTM2ZmM0NjdlZDFiMGNkMWQ3YTUzOTE4OTMxN2QxYmM5
NzUuLmM4ODBkYzMwMmNkM2IxY2NhZDRmMjQwNmYzMzQ4ZDk4ODA1OGRkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3Vw
cG9ydCB0byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBh
bGwgdHlwZXMsIG5vdCBqdXN0IE5vZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW06CisgICAgICAgICgtW1dLRE9NRG9jdW1l
bnQgY3JlYXRlRWxlbWVudDpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBjcmVhdGVUZXh0
Tm9kZTpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBib2R5XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbToKKyAgICAgICAgKC1b
V0tET01UZXh0IGRhdGFdKToKKyAgICAgICAgKC1bV0tET01UZXh0IHNldERhdGE6XSk6CisKIDIw
MTQtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggYTQw
YmM4YjA2NTZhYjBkMTA5ZmJiZTBhZWFhNzJkMjUyYmU0OTYyYS4uNzJiZTNkNjM4Y2QzNWQ1ODVj
NTRhZWI4ZTY4YzcwYjU4NTQyZmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzg0LDYgKzM4NCw4
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKQogCiAvKiBU
WVBFIENBU1QgKi8KIAorLy8gRklYTUU6IFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJlbW92ZWQgb25j
ZSB0aGUgY29kZSBiYXNlIGlzIHBvcnRlZCB0byB1c2luZworLy8gdGhlIG5ldyBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTXyooKSBtYWNyby4KICNkZWZpbmUgVFlQRV9DQVNUU19CQVNFKFRvQ2xhc3NO
YW1lLCBhcmd1bWVudFR5cGUsIGFyZ3VtZW50TmFtZSwgcG9pbnRlclByZWRpY2F0ZSwgcmVmZXJl
bmNlUHJlZGljYXRlKSBcCiBpbmxpbmUgVG9DbGFzc05hbWUqIHRvIyNUb0NsYXNzTmFtZShhcmd1
bWVudFR5cGUqIGFyZ3VtZW50TmFtZSkgXAogeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UeXBlQ2FzdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
NTBkMTc3ZTVlOTk0ZGFjYTg5ODM2MzU2NzkxOTFiZTc4NmMxODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UeXBlQ2FzdHMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBUeXBlQ2FzdHNfaAorI2RlZmluZSBUeXBlQ2FzdHNfaAorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlw
ZT4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJn
VHlwZSYpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVjdCBU
eXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRpYyBi
b29sIGlzT2ZUeXBlKEV4cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8vIFR5
cGUgY2hlY2tpbmcgZnVuY3Rpb24sIHRvIHVzZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25jYXN0
PD4oKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+
CitpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNlc3Nh
cnkgdHlwZSBjaGVjayIpOworICAgIHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3Rl
ZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZShzb3VyY2UpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXMo
QXJnVHlwZSogc291cmNlKQoreworICAgIEFTU0VSVChzb3VyY2UpOworICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVj
ZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhw
ZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoKnNvdXJjZSk7Cit9CisKKy8vIFNh
ZmUgZG93bmNhc3RpbmcgZnVuY3Rpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2Nv
bnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZSBkb3duY2Fz
dChTb3VyY2UmIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKKyAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291
cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOworfQor
dGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRh
cmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoreworICAgIHN0
YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAiVW5u
ZWNlc3NhcnkgY2FzdCIpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFz
b3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5
cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29u
c3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Cit9CisKKy8vIEFkZCBzdXBwb3J0
IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+KCkgLyBkb3duY2FzdDw+KCkg
aGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihDbGFzc05hbWUpIFwKK25hbWVzcGFjZSBXVEYgeyBcCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQXJnVHlwZT4gXAorY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3QgQ2xhc3NOYW1lLCBB
cmdUeXBlPiB7IFwKK3B1YmxpYzogXAorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUm
IHNvdXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7IH0gXAorcHJpdmF0ZToKKworI2RlZmlu
ZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpIFwKK307IFwKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6aXM7Cit1c2luZyBXVEY6OmRvd25jYXN0OworCisjZW5kaWYg
Ly8gVHlwZUNhc3RzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKaW5kZXggY2UwMTAwN2E3ZDAwMDc4OGUxY2YxYmE2MTQ4NTNjZDc2NjdmYzJl
OS4uMDEyOGY1MGQyOTI5ZjUxMjVmOGIwYjEzMmRlYmFkN2VlYThjNjM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+
Z3JvdXAoKS5ncm91cFNldHRpbmdzKCkuaW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAgfQot
ICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgY29uc3QgR3JvdXBTZXR0aW5ncyog
Z3JvdXBTZXR0aW5ncyA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuZ3Jv
dXBTZXR0aW5ncygpOwogICAgIGlmIChncm91cFNldHRpbmdzKQogICAgICAgICByZXR1cm4gZ3Jv
dXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IDkxYjA0M2Ix
M2YxZjU0NzA0M2NmNjJkZTllM2Q4NjQxODdmYzJmMWYuLmEzYzEyNjcyMThmODIyNTIwOTNkNDIx
OGYwNzY1NWUwN2E2ZjUxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFz
ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2Uq
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFNjcmlwdEUKICAgICBXb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7CiAgICAgICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXI7
Ci0gICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtlckds
b2JhbFNjb3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgICAgIGNvbnN0IEdyb3Vw
U2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNv
bnRleHQpLmdyb3VwU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKGdyb3VwU2V0dGluZ3MpCiAgICAg
ICAgICAgICBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIgPSBncm91cFNldHRpbmdzLT5pbmRl
eGVkREJEYXRhYmFzZVBhdGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggMTY1NGRkNTYwZTJjOTUwOTkyM2Q2NjlmZWU2Zjk4OWIxNzA3NTQ0NS4uODM5ZmE4NzIzNjZi
ZGU2ZTQzNzA2MDUxMmFkMjYxZjRjZDA4MjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShTY3JpcHQKICAgICBB
U1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKLSAgICBpZiAoY29udGV4dC0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7Ci0gICAgICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkucnVuTG9v
cCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAgICAg
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpjb250ZXh0KTsKKyAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdv
cmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBtb2RlOwogICAgICAgICBtb2RlLmFwcGVuZExpdGVyYWwod2ViU29ja2V0Q2hhbm5lbE1vZGUp
OwogICAgICAgICBtb2RlLmFwcGVuZE51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpOwot
ICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh3
b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLnRvU3RyaW5nKCkpOworICAgICAgICByZXR1
cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSgmd29ya2VyR2xvYmFs
U2NvcGUsIGNsaWVudCwgbW9kZS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgY2xpZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA5OWM0MDJjMzI3ZTdmOTdjYWNlOWVjNjM5NWM1ZGVkZWRlZDA4NWU0Li5kNGVkZDY5
MWY5MWNiMDM5OTNhZjkzZDA0MzI2N2NiYmU0YTUyY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMDgsOCArMTA4LDggQEAg
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ28KICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKQogICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChkb3duY2Fz
dDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOwogCi0gICAgaWYgKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0
dXJuIHRvV29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgp
LT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyNSw4ICsxMjUsOCBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9K
U0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
bwogICAgIGlmIChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSwgd29ybGQpOwogCi0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIHRvV29ya2VyR2xvYmFsU2Nv
cGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDJkMmE3
NTQ2ZGYyMWE0OTMzZWFmYmFjMmM0MTRiNjE3YjQ5Y2JmZDUuLjVjNzZiNmQ0NWZiMmVkZDQzZjg4
NjAxMWRiZjBjY2YyZWY2MjIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTMxLDEwICsxMzEsMTAgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2
ZW50KTsKIAotICAgICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKSB7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpIHsKICAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4Y2Vw
dGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yQ2F1
c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZSgpKSkK
LSAgICAgICAgICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CisgICAgICAgICAgICAgICAgZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+
Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCBkMTFlNDU0ZGJhOTdjNjJlMjFlMDZlNDVkYWExMGI4ZGZjM2NmODY3Li5hMWI1MWFhMzVmMjcz
NTkzMjI5MTAyOTJmYTdjNjFiYzg2Zjc2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTY2hlZHVs
ZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICBleGVjdXRlKGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSk7CiAgICAgZWxzZQotICAgICAgICBleGVjdXRlKHRvV29ya2VyR2xvYmFs
U2NvcGUoY29udGV4dCkpOworICAgICAgICBleGVjdXRlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rp
b25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFs
dWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCAxZjZi
Y2U0MzEwYmZlNDM1NTA3N2M5YWVmMzQ5YzQ2MjkxMGI1ODM0Li5hN2E4OTQ1NDc5YmQ1NTIzYWIz
NDI3MzVlNzcyMTM3YzQwZTBkYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTk5LDEwICs5OSwxMCBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkOwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihBdHRyKQotICAgIHN0YXRpYyBib29sIGlzQXR0cihj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0cmlidXRlTm9kZSgpOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdHRyKQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0cmli
dXRlTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBB
dHRyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAppbmRleCA2Y2Q0ZjY4YzYwYjlkNjVlOTNk
ZTdhOTExMDg5Mjc2ZGE2MmU5NTlhLi43ZTk4MjNlMmZhNzM4YTcwYWU1NjFlZDA5YmNjOWUwMzZi
NzJhZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCkBAIC00MSwxMCArNDEsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
Q0RBVEFTZWN0aW9uKQotICAgIHN0YXRpYyBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05P
REU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNEQVRBU2VjdGlv
bikKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkNEQVRBX1NFQ1RJT05fTk9E
RTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gQ0RBVEFTZWN0
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDAxNmVkZDVhZjJmZjgxNTQ5
NjdhYjY5OTkwNDllZGQ3ZGViMTg1ZGIuLjMxN2Q5MzFiNGY3NTIyNTZjY2JlMDYzOGZiNjAwYjA0
NDg5NWMyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNzYsMTAgKzc2LDEw
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oQ2hhcmFjdGVyRGF0YSkKLSAgICBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlckRh
dGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZiAvLyBDaGFyYWN0ZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4
IDBhN2RlY2VjOWE5MmRjOWRlMzJjNzExYTcyNGJhMTBjZTZiNzBhMjguLmMxYTQ5ZDU5YThhOWJi
ZDllNzlhOWRkZDBiMmY0OWIxYjdiODNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaApAQCAtNDEsMTAg
KzQxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9k
ZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihDb21tZW50KQotICAgIHN0YXRpYyBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9Ci1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpDb21tZW50KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBl
KCkgPT0gV2ViQ29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKICNlbmRpZiAvLyBDb21tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
YzQyZDQ0MmM2MjhhZjJlNzUzYWJkZTUyY2Y3YWVlMWJiNzg0ZDA0Zi4uOTJkZGZjMjAwMmE2NTgx
OTY5MzM1ZDcxZDA5MTZkZDA5N2JmZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE3NDAs
MTMgKzE3NDAsMTMgQEAgaW5saW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRG
b3JEb2N1bWVudChEb2N1bWVudCopOwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKERv
Y3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnQoY29uc3QgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RvY3VtZW50KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0RvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNE
b2N1bWVudE5vZGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
RG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNEb2N1bWVudCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNEb2N1bWVudE5vZGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCiBuYW1lc3BhY2UgV1RGIHsKIGlubGluZSBXZWJDb3JlOjpEb2N1bWVudCogZ2V0UHRyKFdl
YkNvcmU6OkRvY3VtZW50JiBwKSB7IHJldHVybiAmcDsgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmgKaW5kZXggYWM3ZDZmNjViZjQ1YmJlNDllMTBjMjg4OWNlNDIxNDFkOGRl
YTE5NC4uNjdlYmZjM2U5ODRiNjgwNWQ3ZGIwZWZmYjM0MzVkYzFiZGViODczMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC01MiwxMCArNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKERvY3VtZW50RnJhZ21lbnQp
Ci0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudEZyYWdtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRG9jdW1lbnRGcmFnbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGY0ZWY3OWNlMGVkNWE0MDVk
YWQyOTVmZDAzODNhNGRlMzlkYjJmYjIuLmE5YjdhNmE1MjlhN2E3YmVkZDExYTkyMGIzMzRkYzA2
ZTgwMWY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTYwLDEwICs2MCwxMCBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N1YnNldDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oRG9jdW1lbnRUeXBlKQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBl
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpET0NV
TUVOVF9UWVBFX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkRvY3VtZW50VHlwZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkRPQ1VN
RU5UX1RZUEVfTk9ERTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IDE4N2U5ZDMyNzBjYjE2NjAyMGNhOTYyNDU3MDRkM2YxNTYy
MzUxNDcuLjAwZjJiY2IyNjZhZmQyM2Q0MTc5ZTExZTg4M2Q1ZjkxZTg3MDcwYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNjY2LDEwICs2NjYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxFbGVt
ZW50RGF0YT4gbV9lbGVtZW50RGF0YTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzQXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlzPEVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxFbGVtZW50PigqdGhpcykuaGFz
QXR0cmlidXRlcygpOwpAQCAtNzgxLDQgKzc3Nyw4IEBAIGlubGluZSBVbmlxdWVFbGVtZW50RGF0
YSYgRWxlbWVudDo6ZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RWxlbWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBmMjRkNmM4YTc1ZmRl
MWEzODBiZGE2OTMyOTgwN2MwMTY5MjliNzY0Li41OGJlYjdmOWFhNDZkNjc2OTYyOWI2NGNiZGVj
ZjQ0OWVhNDE4NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICB3aGlsZSAo
bV9lbnRhbmdsZWRDaGFubmVsICYmIG1fZW50YW5nbGVkQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZUZy
b21SZW1vdGUobWVzc2FnZSwgY2hhbm5lbHMpKSB7CiAKICAgICAgICAgLy8gY2xvc2UoKSBpbiBX
b3JrZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20g
ZGlzcGF0Y2hpbmcuCi0gICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29y
a2VyR2xvYmFsU2NvcGUoKSAmJiB0b1dvcmtlckdsb2JhbFNjb3BlKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCktPmlzQ2xvc2luZygpKQorICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmlzQ2xvc2luZygpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9
IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdU
Rjo6bW92ZShjaGFubmVscykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggN2M4YTlhNjg1ZTM5N2IyY2RiZDc5
NjQ0ZGEwNzQ2ZWY2NTJkYjEwNy4uNGNkMzE1NzBiYTQxMTk3Njk5MTU2YTE3YWE4ODg4NjdiNGQx
N2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiVHJlZVNoYXJl
ZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFZNOwpAQCAtNzM5LDU4ICs3NDAsNiBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFy
ZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudE5vZGUo
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlw
ZT4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHMgewotICAgIHN0YXRpYyBib29sIGlzVHlwZShB
cmdUeXBlJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlPgotc3RydWN0
IE5vZGVUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4gewotICAgIHN0
YXRpYyBib29sIGlzVHlwZShFeHBlY3RlZFR5cGUmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi0v
LyBUeXBlIGNoZWNraW5nIGZ1bmN0aW9uIGZvciBOb2RlcywgdG8gdXNlIGJlZm9yZSBjYXN0aW5n
IHdpdGggZG93bmNhc3Q8PigpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlw
ZW5hbWUgQXJnVHlwZT4KLWlubGluZSBib29sIGlzKEFyZ1R5cGUmIG5vZGUpCi17Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOwotICAgIHJldHVybiBOb2RlVHlwZUNhc3RUcmFp
dHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNUeXBlKG5vZGUpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotaW5s
aW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOwotICAgIHJldHVybiBOb2RlVHlwZUNhc3RUcmFp
dHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNUeXBlKCpub2RlKTsKLX0K
LQotLy8gRG93bmNhc3RpbmcgZnVuY3Rpb25zIGZvciBOb2RlIHR5cGVzLgotdGVtcGxhdGU8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci1pbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25k
aXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJn
ZXQmPjo6dHlwZSBkb3duY2FzdChTb3VyY2UmIHNvdXJjZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNh
c3QiKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNv
dXJjZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFs
PHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0
eXBlPihzb3VyY2UpOwotfQotdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3Vy
Y2U+IGlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNl
Pjo6dmFsdWUsIGNvbnN0IFRhcmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSog
c291cmNlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNv
dXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxT
b3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Ci19
Ci0KLS8vIEFkZCBzdXBwb3J0IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+
KCkgLyBkb3duY2FzdDw+KCkgaGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KLSNkZWZpbmUg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDbGFzc05hbWUpIFwKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4gXAotICAgIGNsYXNzIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBD
bGFzc05hbWUsIEFyZ1R5cGU+IHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXMjI0NsYXNzTmFtZShub2RlKTsgfSBc
Ci0gICAgcHJpdmF0ZToKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpIFwK
LSAgICB9OwotCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgYWxsIHVzZXMg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkuCiAjZGVm
aW5lIE5PREVfVFlQRV9DQVNUUyhUb0NsYXNzTmFtZSkgXAogICAgIFRZUEVfQ0FTVFNfQkFTRShU
b0NsYXNzTmFtZSwgTm9kZSwgbm9kZSwgV2ViQ29yZTo6aXMjI1RvQ2xhc3NOYW1lKCpub2RlKSwg
V2ViQ29yZTo6aXMjI1RvQ2xhc3NOYW1lKG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IGIzMjVjMzhkYWY1NDBhMDllOGZiZGI1MzhmY2U3YmYw
M2VlODAzOWEuLjNkNzIzYWFmODFlODhhYzFhNmQ0M2VjYjg0NDdmN2E2MTc5OGNlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTkxLDEwICs5MSwx
MCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbikKLSAgICBzdGF0aWMgYm9vbCBpc1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0gLy9uYW1lc3BhY2UKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLm5vZGVUeXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9O
T0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXggMGE5MGE0NWU2MDE5OTJjZTQ3MzAwOTI4ZDI0ODFlNGQ1
NTNjMWRmYi4uNGJlNWM5NjkxMDMzOWI5NjdjNzZhY2NmNjU5M2JlNGRhMTc5OTIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC03NywxMCArNzcsMTAgQEAgaW5saW5lIGJvb2wg
cHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgKHN0eWxlLT5j
b250ZW50RGF0YSgpIHx8IHN0eWxlLT5oYXNGbG93RnJvbSgpKTsKIH0KIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihQc2V1ZG9FbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzUHNldWRv
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgp
OyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLX0gLy8gbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlBzZXVkb0VsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTBhODRjNzc5NDgxYjk4ZTdiN2ZhMTNjNmFhYmVl
YWNiOWRiZjA2OC4uZGNlZjU3NTJiMGQwOWVmOWUyNGVkOWFiODhmNDI5NTdiOWNiMjFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKQEAg
LTE1OCwxNiArMTU5LDE2IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlUG9ydEV2ZW50cygpCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRl
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKLSAgICBBU1NFUlQoKGlz
RG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlzV29ya2VyR2xvYmFs
U2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3JrZXJHbG9iYWxTY29wZSh0aGlzKS0+
dGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAm
JiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogCiAgICAgbV9tZXNzYWdlUG9ydHMuYWRkKCZtZXNz
YWdlUG9ydCk7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVz
c2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogewotICAgIEFTU0VSVCgoaXNEb2N1
bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXNXb3JrZXJHbG9iYWxTY29w
ZSgpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0b1dvcmtlckdsb2JhbFNjb3BlKHRoaXMpLT50aHJl
YWQoKS50aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlz
TWFpblRocmVhZCgpKQorICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAm
JiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50
aHJlYWQoKS50aHJlYWRJRCgpKSk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3Nh
Z2VQb3J0KTsKIH0KQEAgLTQ0NSwxMCArNDQ2LDEwIEBAIGRvdWJsZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojp0aW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3QKIAogSlNDOjpWTSYgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogewotICAgICBpZiAoaXNEb2N1bWVudCgpKQorICAgIGlm
IChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1v
blZNKCk7CiAKLSAgICByZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZSgqdGhpcykuc2NyaXB0KCkt
PnZtKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2Ny
aXB0KCktPnZtKCk7CiB9CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGFkZDlhYTE5NjZhMTk3OTg1
MWFmYzA2MTBjMTljZWZmOWYxMmVlOS4uZmNlMTgwNDZmMTRlZjkyMTFjZWJiN2I0ZTQ5MmNhYTQ0
N2JmMjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC0yMzQsMTAgKzIzNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLSNkZWZpbmUgU0NS
SVBUX0VYRUNVVElPTl9DT05URVhUX1RZUEVfQ0FTVFMoVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFRvVmFsdWVUeXBlTmFtZSogdG8jI1RvVmFsdWVU
eXBlTmFtZShjb25zdCBSZWZQdHI8VD4mIGNvbnRleHQpIHsgcmV0dXJuIHRvIyNUb1ZhbHVlVHlw
ZU5hbWUoY29udGV4dC5nZXQoKSk7IH0gXAotICAgIFRZUEVfQ0FTVFNfQkFTRShUb1ZhbHVlVHlw
ZU5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnRleHQsIGNvbnRleHQtPmlzIyNUb1Zh
bHVlVHlwZU5hbWUoKSwgY29udGV4dC5pcyMjVG9WYWx1ZVR5cGVOYW1lKCkpCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKaW5kZXggYmZlNWI2Zjg0N2I1ZDMxOWY2OTQyMTA4M2EzZmFmNjg2
MDkxNzQwNC4uMWJlNzU3ZjE3MmZmNjI1NTM5YWY5ZjEzMjEzMDAzNjgzNjRhMmNjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCkBAIC05NSwxMCArOTUsNiBAQCBpbmxpbmUgRWxlbWVudCogU2hh
ZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmZv
Y3VzZWRFbGVtZW50KCk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU2hhZG93
Um9vdCkKLSAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd1Jvb3QoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1NoYWRvd1Jvb3QoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiBpbmxpbmUgU2hhZG93Um9vdCogTm9kZTo6c2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFpczxFbGVtZW50PigqdGhpcykpCkBAIC0xMTksNiArMTE1LDEwIEBAIGlubGluZSBib29s
IGhhc1NoYWRvd1Jvb3RQYXJlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gbm9kZS5w
YXJlbnROb2RlKCkgJiYgbm9kZS5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpOwogfQogCi19
IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYWRvd1Jvb3QpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTaGFkb3dSb290KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuaAppbmRleCA0MDliYzAzODE1NjE4MjMwNDRlYTZjYTY5MWE5NWE1OWQ5ZDk5
YzcyLi4zZjcwZjNkZDMyNTkzY2Y2ZTMzYmQyZmRhMTBjNDc2ODk0YzBiOGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTEwNiwxMCArMTA2LDEwIEBAIGlubGluZSBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIFN0eWxlZEVsZW1lbnQ6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KCkKICAgICByZXR1cm4gZWxlbWVudERhdGEoKS0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
KTsKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTdHlsZWRFbGVtZW50KQotICAg
IHN0YXRpYyBib29sIGlzU3R5bGVkRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzU3R5bGVkRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0gLy9uYW1lc3BhY2UKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVkRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1N0eWxlZEVsZW1l
bnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CmluZGV4IDhiODQ4YWI3N2FiZWM0ZmIyMTIyMGZmMTQwNzg5M2Q0NTE5M2FlZDEuLjYwZGVlZjk0
NGVkMDM5ZmM3NGE3ZTA1OTMxNmQ4ZTY2NDAwZWIxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNzQsMTAg
Kzc0LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oVGV4dCkKLSAgICBzdGF0aWMgYm9vbCBpc1RleHQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1RleHROb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OlRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBUZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
aW5kZXggOTJhOTc5NmU0Njc3MzVmNzg5Y2FiOTg3MDJlMjI1Y2I4ZTlkYzNiNi4uNTIyZTdkZjNj
ZjNjZDUxZTJjNjA1MjU4NmQ2MTIzNWNkYzBkZmExOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwKQEAgLTYzOSwyOSArNjM5LDMzIEBAIHN1YiBwcmludFR5cGVIZWxwZXJzCiAgICAgICAgIG5l
eHQgaWYgJHRhZ0NvdW50ID4gMTsKICAgICAgICAgbXkgJG5hbWUgPSAkY2xhc3NUb1RhZ3N7JGNs
YXNzfVswXTsKICAgICAgICAgcHJpbnQgRiA8PEVORAorbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgJGNsYXNzOworfQorbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlw
ZT4KLWNsYXNzIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCAkY2xhc3MsIEFyZ1R5cGU+IHsKK2Ns
YXNzIFR5cGVDYXN0VHJhaXRzPGNvbnN0IFdlYkNvcmU6OiRjbGFzcywgQXJnVHlwZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBjaGVj
a1RhZ05hbWUobm9kZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBub2Rl
KSB7IHJldHVybiBjaGVja1RhZ05hbWUobm9kZSk7IH0KIHByaXZhdGU6CiBFTkQKICAgICAgICA7
CiAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYmICRwYXJzZWRU
YWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAm
JiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9
VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYgY2hlY2tUYWdOYW1lKGRvd25jYXN0PEhU
TUxFbGVtZW50Pihub2RlKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
V2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVu
a25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1Rh
Z05hbWUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRN
TEVsZW1lbnQ+KG5vZGUpICYmIGNoZWNrVGFnTmFtZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxl
bWVudD4obm9kZSkpOyB9CiBFTkQKICAgICAgICAgICAgOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9
CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6OiRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQorICAg
IHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLmhhc1RhZ05hbWUoV2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVz
Ojoke25hbWV9VGFnKTsgfQogRU5ECiAgICAgICAgICAgIDsKICAgICAgICB9CiAgICAgICAgcHJp
bnQgRiA8PEVORAogfTsKK30KIEVORAogICAgICAgIDsKICAgICAgICBwcmludCBGICJcbiI7CkBA
IC02NzgsMTEgKzY4Miw5IEBAIHN1YiBwcmludFR5cGVIZWxwZXJzSGVhZGVyRmlsZQogICAgIHBy
aW50IEYgIiNpZm5kZWYgIi4kcGFyYW1ldGVyc3tuYW1lc3BhY2V9LiJFbGVtZW50VHlwZUhlbHBl
cnNfaFxuIjsKICAgICBwcmludCBGICIjZGVmaW5lICIuJHBhcmFtZXRlcnN7bmFtZXNwYWNlfS4i
RWxlbWVudFR5cGVIZWxwZXJzX2hcblxuIjsKICAgICBwcmludCBGICIjaW5jbHVkZSBcIiIuJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfS4iTmFtZXMuaFwiXG5cbiI7Ci0gICAgcHJpbnQgRiAibmFtZXNw
YWNlIFdlYkNvcmUge1xuXG4iOwogCiAgICAgcHJpbnRUeXBlSGVscGVycygkRiwgXCVhbGxUYWdz
KTsKIAotICAgIHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiI7CiAKICAg
ICBjbG9zZSBGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggMGE5YjVhMmJmMGQ1
YjFjNTgwYTRlMzlkYjNhYTdlMGJmODBmYmExZS4uYTY1YzM3OTAyYmY2MWU5MGQ3YmQyNTEyMjc4
NTM0MjdiNDliZGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC05NywxMSAr
OTcsMTEgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV93aW5kb3dOYW1lZEl0
ZW07CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxEb2N1bWVudCkKLSAg
ICBzdGF0aWMgYm9vbCBpc0hUTUxEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsg
cmV0dXJuIGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hU
TUxEb2N1bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkg
JiYgaXNIVE1MRG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTERvY3VtZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRv
Y3VtZW50LmlzSFRNTERvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUp
ICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MRG9jdW1lbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDY4ZjIzMWI3YzdkNzg0NDRhY2MxYWQyYWY3YmNhYTgx
NmI2ZDg4NGEuLjgxMjM0NzhkZDllMGFlYTQzOTc1NjczOWVhZDA1NjVhNWIxYjlkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTE0NiwxMCArMTQ2LDYgQEAgaW5saW5lIEhUTUxF
bGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQKICAgICBBU1NFUlQodGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQog
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxFbGVtZW50KQotICAgIHN0YXRpYyBi
b29sIGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxF
bGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJvb2wg
Tm9kZTo6aGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVu
dD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CkBAIC0xNTcsNiArMTUzLDEwIEBAIGlubGluZSBi
b29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgSFRNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpIVE1MRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2luY2x1ZGUgIkhUTUxFbGVtZW50VHlwZUhlbHBl
cnMuaCIKIAogI2VuZGlmIC8vIEhUTUxFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYzIyNGU2ZWRiZDdkZTk4Mzc0ZjNjN2RiZDlh
MWY3MDEwMDBkYzQwOS4uZTdhZTNlY2E3MjM0OGJiMDE4NmQxZDA4NjJhNTA0NTVkYmI2NjM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5
MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0F1dG9mb2N1c2VkIDogMTsK
IH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZvcm1Db250cm9sRWxlbWVu
dCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQoY29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggZjM4MTUzZjhiMTExZTNmZWIxNTAz
NTlhYmI0N2ExYmQyMGRmMzkyMy4uM2NhN2FiMTNlMzE2ZGFmNmY1Y2NmMWQ2N2RjZThmMDNiMGM3
YjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NzYsMTEgKzc2LDExIEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRnJhbWVFbGVtZW50QmFzZSkKLSAgICBz
dGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBpczxIVE1MRnJhbWVFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZy
YW1lRWxlbWVudD4oZWxlbWVudCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1l
bnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRC
YXNlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gSFRNTEZyYW1lRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgKaW5kZXggMDZhNDUzNzQ1OGE4OTY2ODU0NDBjZWI5YjFjOTVhMDc3MTVh
ZjU4OS4uOWMzYjI3ZThkNGFmNDBkN2MyZTBkNTdmNTAyYThjODgxOGE4ZDZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC02OSwxMSArNjksNiBA
QCBwcml2YXRlOgogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZyYW1lT3duZXJFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0KLQogY2xhc3MgU3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIgewogcHVibGljOgogICAgIGV4
cGxpY2l0IFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCkBAIC0x
MDEsNCArOTYsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYgLy8gSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMjdmY2RkMmU3NGM4ZTYwZDJlZDMwYjNmMmQ2YzM0
ODMzZjE1YTg4My4uZDlhNjhkM2M0OGU4M2Y3YmZjYzU3YmE0MGM2MDg4NTEwNzljNDZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwOSwxMSArOTA5LDYgQEAg
c3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogI2VuZGlmCiAjZW5kaWYKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MTWVkaWFFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxNZWRp
YUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4obm9kZSkgJiYg
aXNIVE1MTWVkaWFFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiAjaWZuZGVmIE5ERUJVRwogdGVtcGxhdGU8Pgogc3RydWN0
IFZhbHVlVG9TdHJpbmc8TWVkaWFUaW1lPiB7CkBAIC05MjQsNyArOTE5LDEyIEBAIHN0cnVjdCBW
YWx1ZVRvU3RyaW5nPE1lZGlhVGltZT4gewogfTsKICNlbmRpZgogCi19IC8vbmFtZXNwYWNlCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc01lZGlhRWxlbWVudCgp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsg
cmV0dXJuIGlzPFdlYkNvcmU6OkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJD
b3JlOjpFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAog
I2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRl
eCAwZjU3ZjQ2YTFjNzEwYTg3YTUzZGVhNTRjMjNjYzIyZWQ4ODkxZDMwLi5mOGJjN2Y5YzYzMDY2
YTM0Y2JkNWI0OTY4YzkxNmZiNjI0NWY2NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBwcml2YXRlOgogICAgIERpc3BsYXlT
dGF0ZSBtX2Rpc3BsYXlTdGF0ZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
SFRNTFBsdWdJbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MUGx1Z0luRWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxlbWVudCgpOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1BsdWdpbkVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CiAjZW5kaWYgLy8gSFRNTFBsdWdJbkVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCAwNzg2ZjIxMmFiYTYwNjc1MGY5ZjVjZmJhMThi
YzQwNmQ3MzdiZjA2Li44NmRjYzg2OTI4ZWFhNDY2ZTEyMWJjOTY3NTVhMzM0MzMwMDFhNmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMTU3
LDExICsxNTcsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGx1Z0luRGltZW5zaW9uc1NwZWNp
ZmllZDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3Qg
SFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFn
ZUVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkgJiYg
aXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50Pihub2Rl
KSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVt
ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlw
ZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCAwMzZi
ZWI2YWJjZGYyOTFiY2M2MzhmYTA1N2IxZjMzODc0YWJlOGM2Li4zY2RiOWFiZmRmYzRlMWJhMTA4
ZTRhN2QzMzRiZjkxMzNiMjIyZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBv
dmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBI
VE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRoVGFnKTsgfQotICAg
IHN0YXRpYyBib29sIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRkVGFnKSB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0aFRhZyk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29y
ZTo6SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxl
bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCmluZGV4IDY4
NDU3MDc3OTE3MmVkZTQ4MTIzMzQxOGI0ZmYzZTYxNDU5YTE1YzIuLjUwNWNjZGUyMjhjOWU4MzNh
NTliM2FjNmZiMTkyZTE4YjJlOTI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVTZWN0
aW9uRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Ym9keVRh
Zyk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFj
ZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRoZWFkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0
Zm9vdFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGJvZHlU
YWcpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNh
c3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaAppbmRleCA5ZGM3ZDkyNmJiMWNiNmMzMzExY2FjZWMxNjJiZDQ5NDcz
YmI1ZDBhLi5hZjVmZTczNzM0ZTNhMDJmMjllMjI5NzdkMTRjNjZlMjQ5ODA3Y2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0x
NTEsMTMgKzE1MSwxMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGNoYXIgbV9pc1BsYWNlaG9s
ZGVyVmlzaWJsZSA6IDE7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1Rl
eHRGb3JtQ29udHJvbCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxFbGVtZW50Pihub2RlKSAmJiBp
c0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJik7CiAKLX0gLy8gbmFt
ZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1l
bnQuaXNUZXh0Rm9ybUNvbnRyb2woKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
aAppbmRleCA3ODFkMDJjYTM2M2Q4ZmZhNDVkZGYyNzg3ZjdhNTg1MWEyM2M5OTQ4Li5lMWU5ZGUy
N2RmZDhhYThhMjM4OWYwN2RkYTY3MmU3OGQyY2Y3MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuaApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3Vs
ZFNocmlua0ltYWdlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihJbWFnZURv
Y3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzSW1hZ2VEb2N1bWVudChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzSW1hZ2VEb2N1bWVudCgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNJbWFnZURvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERv
Y3VtZW50Pihub2RlKSAmJiBpc0ltYWdlRG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUp
KTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNJbWFnZURvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29y
ZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4o
bm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBJbWFn
ZURvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKaW5kZXggMjc0
YzJhYjk5MDYwMDg5YWM3OTE5ZmMxN2RhNmFiNGQ2OGRhOGFiNy4uYzJhNjMxYTFlNTA2NmNlOTg3
ODRiYWY5ZDAzMTVkZTdkODYxYjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVt
ZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0xh
YmVsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oTGFiZWxhYmxlRWxlbWVudCkKLSAgICBzdGF0aWMg
Ym9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQotICAgIHN0YXRpYyBib29sIGlzTGFiZWxhYmxl
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkg
JiYgaXNMYWJlbGFibGVFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkxhYmVsYWJsZUVsZW1lbnQpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9k
ZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAppbmRleCBhYjVlZDA4MWE2YTQzMTg0ZDg3OWRlMDdkYmE2MDIw
MGRjY2M0ZTBkLi4wM2VkODFiNTA4ZWUxMDZiOTM5ZGJlOTM0YzViNjc4MTUwNmI4MGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaApAQCAtNTYsMTIgKzU2LDEyIEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fb3V0Z29pbmdSZWZlcnJlcjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oTWVkaWFEb2N1bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc01lZGlhRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc01lZGlhRG9j
dW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFEb2N1bWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNNZWRpYURvY3VtZW50KGRvd25j
YXN0PERvY3VtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpNZWRpYURvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzTWVkaWFEb2N1bWVu
dCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8
V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCmluZGV4
IDE4ODM0ZDY4ZTBhMzVhNWUzZjE2NjAwOGFiZmJmYzFhYTJjYTdiNWMuLjZmYzZlYmNmODE5YTBj
YjA1NmRkNDhkZTFkYzc5ZWZkNzdkOTFlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUGx1Z2luRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxIVE1MUGx1Z0lu
RWxlbWVudD4gbV9wbHVnaW5FbGVtZW50OwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihQbHVnaW5Eb2N1bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1BsdWdpbkRvY3VtZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNQbHVnaW5Eb2N1bWVu
dCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNQbHVnaW5Eb2N1bWVudChjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNQbHVnaW5Eb2N1bWVudChkb3duY2Fz
dDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6UGx1Z2luRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNQbHVnaW5Eb2N1bWVu
dCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8
V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiAjZW5kaWYgLy8gUGx1Z2luRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggOWYwNDI2NGUxNGI0NzEyNjVhNDI4MGI3MGQyZGVl
NzFiNzY0MjA4My4uMGY0MWEwMjQwYzFjNWZjOWM5YTk3MTI5YjNkM2NhYTI2MWM5MjVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03NSwxMCAr
NzUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNEaXN0cmlidXRpb247CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEluc2VydGlvblBvaW50KQotICAgIHN0YXRpYyBib29s
IGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2Vy
dGlvblBvaW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJv
b2wgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewogICAgIHJldHVy
biBub2RlICYmIGlzPEluc2VydGlvblBvaW50Pihub2RlKSAmJiBkb3duY2FzdDxJbnNlcnRpb25Q
b2ludD4oKm5vZGUpLmlzQWN0aXZlKCk7CkBAIC0xMjcsNCArMTIzLDggQEAgaW5saW5lIGJvb2wg
aGFzU2hhZG93Um9vdE9yQWN0aXZlSW5zZXJ0aW9uUG9pbnRQYXJlbnQoY29uc3QgTm9kZSYgbm9k
ZSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6Okluc2VydGlvblBvaW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5zZXJ0aW9uUG9pbnQoKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9p
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaAppbmRleCBiYjdiMDMyMDFiYmMwMmU1OWIwNTdhNjU2NzA0ZTM2Y2UwN2Nj
OTg4Li5jMzEyOGI4Y2JmYmQ2NTQ5ZDZhYTk4NDUyOWRhMTY4MDZhZThmMDAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aApAQCAtNzAsMTEgKzcwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9
OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihu
b2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogY2xhc3MgU2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC0xMDcsNiArMTAyLDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhcHR1cmluZzsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmgKaW5kZXggM2IzZDkxMTBjYjgwYzVlMmU2ZjAyNzg3MDU0Zjc4M2E5
OWMxN2EwMi4uNTJhZTQ4NzhjZDI3NGU5YzkxYWU2ZjM3ZGRjNDI2YzRkNWZmMWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTgwLDEwICs4MCwxMCBA
QCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwogfTsKIAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJWVFRFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzV2Vi
VlRURWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVu
dCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJWVFRFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBlZjAwOGQzYTI2ZmVkNzY5MjVjMzg1NDFk
ZDMyYzYzNjY1ZjM1YzgzLi44ZTk0N2NhNThkMmJiYTNjZmE2OTkyMzJhYWJjN2FjNWY0Mjc5OTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcApAQCAtMTI2Miw4ICsxMjYyLDggQEAgSW5zdHJ1bWVudGluZ0FnZW50cyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmEKIAogSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkK
LSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKHRvV29y
a2VyR2xvYmFsU2NvcGUoY29udGV4dCkpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCisgICAgICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxT
Y29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmU4YzJiZmY3YWMwYzAzZmNhNTBlNzY0ODEzMGNhMjRmMGI4Y2VhNC4uZTNkY2RiNDg2
ZjE5ZTcxMDUzMmQ5MjA5Zjk1ZjY1OTcxZmUwMDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTYsOCArNTYsOCBAQCBQYXNzUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjbwogICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAg
IGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpCi0gICAgICAgIHJldHVybiBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSwg
Y2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCByZXF1ZXN0LCBvcHRpb25zKTsK
KyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCByZXF1ZXN0
LCBvcHRpb25zKTsKIAogICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLCAqY2xpZW50LCByZXF1ZXN0LCBvcHRpb25z
KTsKIH0KQEAgLTY2LDggKzY2LDggQEAgdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKIHsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KSB7Ci0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRp
b25zKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKSB7CisgICAgICAg
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAppbmRleCA5ZmZiOTViOThlM2RkNmJlYjI1YjU2NWVmZjI3NDc1ODQw
ZWVmMmZmLi4yZTg3ODA5NWYyNzFiMWMwMmUzOWE0NjAxOTUyYTdmNWZiMWExMmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTc1Miw4ICs3NTIs
OCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVVcmxGcm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaQogCiB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAo
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFs
U2NvcGUoY29udGV4dCktPnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xv
YWRlcihDcm9zc1RocmVhZFRhc2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZSwg
cmVxdWVzdCwgc2Vzc2lvbklEKSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSkgeworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpLnRo
cmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRh
c2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZSwgcmVxdWVzdCwgc2Vzc2lvbklE
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2OCw4ICs3NjgsOCBAQCB2b2lkIE1l
bW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgUmVzbwogCiB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNl
c3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+dGhyZWFkKCku
d29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jv
c3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMsIHJlcXVlc3QpKTsKKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKSB7CisgICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5w
b3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0
RnJvbVNlc3Npb25DYWNoZXMsIHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICByZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXNJbXBsKGNvbnRleHQsIHJlcXVlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggZTA5OTA2NzJkMGNlYmU1YjA3
YjlhZDlkNGM2YmRhMDk1OTRhNDk4NC4uYjk4ZmJlYjcyZWE3ZmEzNjk4MzllMGE5OGQxMGFiN2Zi
ZGEwODM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC03MywxMCAr
NzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkg
eyB9CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKE1hdGhNTEVsZW1lbnQpCi0g
ICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNNYXRoTUxFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LQogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBpc01hdGhNTEVsZW1lbnQoKSAmJiBkb3duY2Fz
dDxNYXRoTUxFbGVtZW50PigqdGhpcykuaGFzVGFnTmFtZShuYW1lKTsKQEAgLTg0LDYgKzgwLDEw
IEBAIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNNYXRoTUxF
bGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2luY2x1ZGUgIk1h
dGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAppbmRleCA3ZDk0YTNkNGI4
MjdmOWRhNjZkODg0Mjg1ZWM5MmZlOTU5OWQwYWM0Li5lNzIxMWIzOTI5ZjE5NjA4ZTUyY2ViZTkw
ZGE5NWUyN2I1MjI4ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5oCkBAIC03MiwxNSArNzIsMTUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IG1fYW5pbWF0b3I7CiB9OwogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFNWR0FuaW1hdGVFbGVtZW50QmFzZSkKLSAgICBzdGF0aWMgYm9vbCBp
c1NWR0FuaW1hdGVFbGVtZW50QmFzZShjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50QmFzZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShT
VkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQotICAgICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnNldFRhZyk7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoV2Vi
Q29yZTo6U1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3Jl
OjpTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQorICAgICAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnNldFRhZyk7CiAgICAgfQotICAgIHN0YXRp
YyBib29sIGlzU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKGRvd25jYXN0
PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQogI2VuZGlm
IC8vIFNWR0FuaW1hdGVFbGVtZW50QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4
IDZjYWNmMDNhODFlOGNiYzczYjk0ZmJlNjJmM2EzNDViZjhlYmY3OTYuLmVmNWJlMmVlY2QwMjUw
NDZmMmI1MWViOWRhMDkzYTE4ZDU0NjQ5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBA
IC01MiwxMSArNTIsMTEgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fdHJhbnNsYXRlOwog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdEb2N1bWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc1NWR0RvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4g
ZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdEb2N1bWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNTVkdE
b2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpTVkdEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1NW
R0RvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShk
b3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKICNlbmRpZiAvLyBTVkdEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCA5YTJlOTZjOGZjMWJkZWM5MWMyZTcwYTlkOGYwNzU1OWRmMGMyMjM0Li5kODMzYzA2
MWYwOTUxN2I4MWRkYmFjNDlmZTA0NzE1OTgzYzY3OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKQEAgLTIyMSwxMCArMjIxLDYgQEAgc3RydWN0IFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9y
IHsKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBRdWFsaWZpZWROYW1lJiBhLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBiKSB7IHJldHVybiBhLm1hdGNoZXMoYik7IH0KIH07CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR0Vs
ZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdO
YW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlz
U1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1lKG5h
bWUpOwpAQCAtMjMyLDYgKzIyOCwxMCBAQCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNv
bnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzU1ZHRWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisK
ICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKaW5kZXggMGNiMTllZmUzZTYzMjEzNDBhODY5MDllMDcxYmQ0NDIxNTgxYzc5ZC4uNjZh
YzNjMjEwNTNhZjEwYTAxODg1OGQyNmEyZjk2ZmJiZjIzMDI3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAKIHZvaWQgaW52YWxpZGF0ZUZpbHRlclBy
aW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQotICAgIHN0YXRpYyBib29s
IGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0VsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsgfQotICAgIHN0YXRp
YyBib29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpT
VkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNv
cmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCA1MzM4
MDhmYzgxYmNmOWZiYTQ2N2UwOWU0NWZiMTE3MTQ4MWI2ZDJmLi4zNjU4OWJiNTIzNmRiMWRiNzlk
NzQ4Y2E4NmQ0MmE4ODg1ZTRjZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZH
R3JhZGllbnRFbGVtZW50KQotc3RhdGljIGJvb2wgaXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3Qg
U1ZHRWxlbWVudCYgZWxlbWVudCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQpCitzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZyk7CisgICAgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGll
bnRUYWcpOwogfQotc3RhdGljIGJvb2wgaXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKQogewot
ICAgIHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0dyYWRpZW50RWxlbWVudChk
b3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7CisgICAgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2Rl
KSk7CiB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5k
ZXggNDMzZjMxYzAwOTczYWQ4YjkxZTJiN2RjMWJkNjA1YmFhYjljOGUwOS4uNjEyNjY2ZjQ1ZTVm
YzEzMTBjZDUwNjgyYjVlYjgxMDUyNzkwYWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZElzb2xhdGVCbGVuZGluZzsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
U1ZHR3JhcGhpY3NFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdHcmFwaGlj
c0VsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHR3JhcGhp
Y3NFbGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzU1ZHR3JhcGhpY3NFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVu
dD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gU1ZHR3JhcGhpY3NF
bGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDA5YWU2NjJiMTA5
N2E0Mzc4MWE4MGIxNTlkOTE0NTI4N2Y3NzIzNy4uZmM0NmQ3YzdiOTg3MTIyYTJlMGRmNzNhNTJk
MzZjZjQ2MDQ5ZGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTYyLDEx
ICs2MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKIH07CiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oU1ZHUG9seUVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdQb2x5
RWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1l
czo6cG9seWxpbmVUYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdQb2x5RWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR1BvbHlF
bGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cG9seWdvblRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpwb2x5bGluZVRhZyk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6
U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+
KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCBhNTkyYWJlNzI1M2Nl
OWM3MDNjYmU2MTA4ZDNmNjA3ZGIwM2Y5NWYxLi4wOWYyMGU0MGNjZTYzZjRjZTE2ODVlMDNmZmI2
OTA1ZWMyMzExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5oCkBAIC0xMTksMTEgKzExOSwxMSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHVGV4
dENvbnRlbnRFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHVGV4dENvbnRlbnRFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udGVu
dCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdUZXh0Q29udGVu
dEVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGVsZW1lbnQuaXNUZXh0Q29udGVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5v
ZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKaW5kZXggNGQ4YzMxYjY3Njg1Y2E4MzE5NDJl
M2E1YmI0ZDAzNjY2YmRjYWM4ZS4uODc1ZGNiOWU1OWEwODMzMjY3OTNmMDQ3OTI5NjE0MTRkZGI4
NGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
aApAQCAtMjM3LDExICsyMzcsMTEgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29uZGl0
aW9uRXZlbnRMaXN0ZW5lcjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZH
U01JTEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQotICAg
IHN0YXRpYyBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdTTUlMRWxlbWVudChkb3duY2FzdDxTVkdFbGVt
ZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpT
VkdTTUlMRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZH
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NNSUxFbGVtZW50KCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6
OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAj
ZW5kaWYgLy8gU1ZHU01JTEVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCBmOWQwZTNhYjg4
NWE4MDQ0NTc5MmM2YjI3NDc0MmU2OTNjNmEwZjM0Li4wNDY0ODI3NTAxZjM5NTUzZjVjYTNiNzNk
MmFmOGExODU3ZjE5MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMjU3LDEyICsyNTcsMTIgQEAg
cHVibGljOgogICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soWz1dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNvbnRleHQpOwogICAgICAgICAgICAg
cG9ydC0+ZW50YW5nbGUoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4oY2hhbm5l
bCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpOworICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAg
ICAgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRoaXMg
c2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KLSAgICAgICAgICAgIEFT
U0VSVCghd29ya2VyR2xvYmFsU2NvcGUtPmlzQ2xvc2luZygpKTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHdvcmtlckdsb2JhbFNjb3BlLT5pc1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPmRpc3Bh
dGNoRXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
d29ya2VyR2xvYmFsU2NvcGUuaXNDbG9zaW5nKCkpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04od29ya2VyR2xvYmFsU2NvcGUuaXNTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQo
Y3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBkZTEyMTRl
NjVlNTcyNGYyNDEzODNmNWZiN2MzNmM2ZWE1NGFmMjM3Li5lMDA5ZTU3NTQyNWRhNDZlNGU2NDdk
YTc4ODdlNjRkMTgxNWQ3ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMTMzLDEwICsxMzMsMTAgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6Y2xvc2UoKQogICAgIC8vIHRhc2tzIHdpdGggaXNDbGVhbnVwVGFzaygpPT10cnVlIHdpbGwg
YmUgZXhlY3V0ZWQuCiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsKICAgICBwb3N0VGFzayh7IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQp
OworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpOworICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAg
IC8vIE5vdGlmeSBwYXJlbnQgdGhhdCB0aGlzIGNvbnRleHQgaXMgY2xvc2VkLiBQYXJlbnQgaXMg
cmVzcG9uc2libGUgZm9yIGNhbGxpbmcgV29ya2VyVGhyZWFkOjpzdG9wKCkuCi0gICAgICAgIHdv
cmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS53b3JrZXJSZXBvcnRpbmdQcm94eSgpLndvcmtlckds
b2JhbFNjb3BlQ2xvc2VkKCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndv
cmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKTsKICAgICB9IH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXgg
NDA0YTIwMTJjMjE5Y2ZjODQ5MzEyY2JlYzIyY2Q5ODNkNWZkYjI1Zi4uNWI1OGE2OWVjZGI4MmM3
ZjcwZmY2MjQzMDFkYTIwN2MxODM0MGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgxLDggKzE4MiwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90
b3BPcmlnaW47CiAgICAgfTsKIAotU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX1RZUEVfQ0FTVFMo
V29ya2VyR2xvYmFsU2NvcGUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZSkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFdvcmtlckdsb2JhbFNjb3BlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXgg
MmJjYWE0YmQ5YzgxYzgzMDJkMWZlMmE2ZTI4Mjg2ZDg4ZWU4ZjcwNi4uMmE1MDE4ODk0OGU4MWU5
ODM3MTQxY2MxNDdkMWZlYTcwYjY4YWQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyKiB3b3JrZXJPYmplY3QpCiAj
ZW5kaWYKIHsKICAgICBBU1NFUlQobV93b3JrZXJPYmplY3QpOwotICAgIEFTU0VSVCgobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAg
ICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUo
KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3JrZXJHbG9iYWxTY29wZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1
bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCisgICAg
ICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
JiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CiB9CiAKIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93
b3JrZXJPYmplY3QpOwotICAgIEFTU0VSVCgobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dG9Xb3JrZXJHbG9iYWxTY29wZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50
aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJl
YWQoKS50aHJlYWRJRCgpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBz
dGFydE1vZGUpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soWz1dIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoJmNv
bnRleHQpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVz
KCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6
IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIH0pOwogfQog
CkBAIC0yMjQsMTcgKzIyNCwxNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25uZWN0
VG9JbnNwZWN0b3IoV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlYwogICAgIEFTU0VS
VCghbV9wYWdlSW5zcGVjdG9yKTsKICAgICBtX3BhZ2VJbnNwZWN0b3IgPSBwYWdlSW5zcGVjdG9y
OwogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2Nv
cGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5k
KCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CiAgICAgfSwgV29ya2VyRGVi
dWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKCkKIHsKLSAgICBtX3BhZ2VJbnNwZWN0b3Ig
PSAwOworICAgIG1fcGFnZUluc3BlY3RvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fYXNrZWRUb1Rl
cm1pbmF0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JE
ZXN0cm95ZWQpOwogICAgIH0sIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUp
OwogfQogCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c2Vu
ZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVy
bjsKICAgICBTdHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpOwogICAg
IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFttZXNzYWdlQ29weV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9i
YWxTY29wZSgmY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlQ29weSk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJB
Z2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiAgICAgV29ya2VyRGVidWdnZXJBZ2VudDo6aW50ZXJy
dXB0QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhtX3dvcmtlclRocmVhZC5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXgg
MDVjNWZhNGI3M2Y4NjdhNTNjZGZkOTUwNjk5MzZhMTA5NjhhOGYwMS4uOTY0YTBhYWE0N2IzNTYy
ODA5MDQ2ZDU3NjlmMzE1NjNkNzExOGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAKICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVk
ZW50aWFscyhBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKICAgICBvcHRpb25zLnNl
dFNlbmRMb2FkQ2FsbGJhY2tzKFNlbmRDYWxsYmFja3MpOwogCi0gICAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh0b1dvcmtlckdsb2JhbFNjb3BlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRoaXMsIG9wdGlvbnMpOworICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRo
aXMsIG9wdGlvbnMpOwogfQogICAgIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZTQ0MjI1MGEzNDlmYTNjYmE2ZGNmYTZl
ZjAwMDg0YmJiNjYzYjMxOS4uYWRlNTY5OTM0YmY5MjNlYzJjNDk3NWUxYzM0ZmYwNDM5MjUyNzY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjE0LDIxICsy
MTQsMjEgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogICAgICAgICBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyR2xv
YmFsU2NvcGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRl
cm1pbmF0ZSh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCApIHsKLSAgICAgICAgICAgIFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRl
eHQpOworICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3RvcCB0aGUgZGF0YWJh
c2VzIGFzIHBhcnQgb2Ygc3RvcEFjdGl2ZURPTU9iamVjdHMoKSBiZWxvdz8KICAgICAgICAgICAg
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMod29ya2VyR2xvYmFsU2NvcGUsICZj
bGVhbnVwU3luYyk7CisgICAgICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9w
RGF0YWJhc2VzKCZ3b3JrZXJHbG9iYWxTY29wZSwgJmNsZWFudXBTeW5jKTsKICNlbmRpZgogCi0g
ICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKyAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKLSAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5ub3RpZnlPYnNlcnZlcnNPZlN0b3AoKTsKKyAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLm5vdGlmeU9ic2VydmVyc09mU3RvcCgpOwogCiAg
ICAgICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQg
b2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxvbmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRv
IEpTIG9iamVjdHMsCiAgICAgICAgICAgICAvLyB3aGljaCBiZWNvbWUgZGFuZ2xpbmcgb25jZSBI
ZWFwIGlzIGRlc3Ryb3llZC4KLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5yZW1vdmVB
bGxFdmVudExpc3RlbmVycygpOworICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUucmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAg
ICAgICAvLyBXZSB3YWl0IGZvciB0aGUgZGF0YWJhc2UgdGhyZWFkIHRvIGNsZWFuIHVwIGFsbCBp
dHMgc3R1ZmYgc28gdGhhdCB3ZQpAQCAtMjM4LDEwICsyMzgsMTAgQEAgdm9pZCBXb3JrZXJUaHJl
YWQ6OnN0b3AoKQogCiAgICAgICAgICAgICAvLyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQg
dGhlIGVuZCBvZiB0aGUgcXVldWUsIHNvIHRoYXQgd2UgZGVhbAogICAgICAgICAgICAgLy8gd2l0
aCBhbGwgdGhlIGNsZWFudXAgdGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0LgotICAgICAg
ICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3Bl
ID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAgICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZS5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBzYWZl
IHRvIGNhbGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3RlZCBi
eSBmdW5jdGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIGhh
dmUgY29tcGxldGVkLgotICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVhclNj
cmlwdCgpOworICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmNsZWFyU2NyaXB0KCk7
CiAgICAgICAgICAgICB9IH0pOwogCiAgICAgICAgIH0gfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKaW5kZXggMzM3Y2RhMTkxOWMyMmQyMzIyZWY3MDgwNDE0MjVmMTk0OGE5YjE3
Yi4uOWM1MGJjZDg0MTRkMmI0MmM2MjExZDdjMzBlNDlhY2RlODYzMGU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMTUwMCwyMiArMTUwMCwyMiBAQCBJRE9NRWxlbWVu
dCogRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RWxlbWVudCogZSkKICAgICBI
UkVTVUxUIGhyOwogICAgIElET01FbGVtZW50KiBkb21FbGVtZW50ID0gMDsKIAotICAgIGlmIChX
ZWJDb3JlOjppczxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+KGUpKSB7CisgICAgaWYgKGlzPFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTEZvcm1FbGVtZW50
KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxGb3JtRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBu
ZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVs
ZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CiAgICAg
ICAgIERPTUhUTUxJRnJhbWVFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJRnJhbWVF
bGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9J
RE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3Jl
OjppczxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTElucHV0RWxl
bWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MSW5wdXRFbGVtZW50KGUpOwogICAgICAgICBo
ciA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikm
ZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3JlOjppczxXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25F
bGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MT3B0aW9uRWxlbWVudCogbmV3RWxlbWVudCA9
IG5ldyBET01IVE1MT3B0aW9uRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5R
dWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CiAgICAgICAgIERPTUhUTUxT
ZWxlY3RFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxTZWxlY3RFbGVtZW50KGUpOwog
ICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwg
KHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3JlOjppczxXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8V2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTFRleHRBcmVhRWxlbWVu
dCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MVGV4dEFyZWFFbGVtZW50KGUpOwogICAgICAgICBo
ciA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikm
ZG9tRWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChlLT5pc0hUTUxFbGVtZW50KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggZGRkN2JkNmQ5MDQ1NmM1MjRiOTQzYmNj
NGQzY2VkOTBkZDVlZTE5NC4uODMxNjYyOWJjZWQ0ZGI3NjRhOWI3ZjRmMmIxNGMxY2VjNTAxYmY2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KQEAgLTM5LDE3ICszOSwxNyBA
QCAtIChXS0RPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKIHsK
ICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBleGNlcHRpb24uCiAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVs
ZW1lbnQoV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRl
RWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01F
bGVtZW50KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZUVsZW1lbnQo
dGFnTmFtZSwgZWMpLmdldCgpKTsKIH0KIAogLSAoV0tET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6
KE5TU3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01UZXh0KFdlYkNv
cmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZVRleHROb2RlKGRh
dGEpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NVGV4dChkb3duY2FzdDxXZWJD
b3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKSk7CiB9CiAK
IC0gKFdLRE9NRWxlbWVudCAqKWJvZHkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NRWxl
bWVudChXZWJDb3JlOjpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5ib2R5KCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01FbGVtZW50KGRvd25jYXN0PFdlYkNvcmU6OkRv
Y3VtZW50PigqX2ltcGwpLmJvZHkoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHQubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0
Lm1tCmluZGV4IGQ5MWU4MTIwNDYxNjI2MjZlNjJjOTRmMmIzZDk1YmI0N2JlMDNiNDEuLmUzMGFl
M2NkMjRhOGQwNGU0ZTJjOGZkN2FjOTg3NDVkYzlhZDIxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHQubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
VGV4dC5tbQpAQCAtMzUsMTQgKzM1LDE0IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTVRleHQKIAog
LSAoTlNTdHJpbmcgKilkYXRhCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmRvd25jYXN0PFdlYkNv
cmU6OlRleHQ+KCpfaW1wbCkuZGF0YSgpOworICAgIHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpU
ZXh0PigqX2ltcGwpLmRhdGEoKTsKIH0KIAogLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRh
dGEKIHsKICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBleGNlcHRpb24uCiAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsKLSAgICBXZWJDb3JlOjpkb3duY2FzdDxXZWJD
b3JlOjpUZXh0PigqX2ltcGwpLnNldERhdGEoZGF0YSwgZWMpOworICAgIGRvd25jYXN0PFdlYkNv
cmU6OlRleHQ+KCpfaW1wbCkuc2V0RGF0YShkYXRhLCBlYyk7CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238955</attachid>
            <date>2014-09-30 13:48:57 -0700</date>
            <delta_ts>2014-09-30 14:32:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137243-20140930134858.patch</filename>
            <type>text/plain</type>
            <size>92848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmYzk4ZjFhMmZlODk3Yjg0OTkzMDE3
YzlhMWY5MGE3NDg3ZDhmOTYuLjU4N2E4N2JiYTIzNTZkYTJiMjI4ZjlkZmQ5MTBlNzcwMTk0ZmYy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDktMjkgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8
PigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcyNDMKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQ
b3VsYWluLgorCisgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBv
cnQgdG8gYWxsIHR5cGVzLCBub3QganVzdCBOb2Rlcy4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRp
b25zLmg6CisgICAgICAgICogd3RmL1R5cGVDYXN0cy5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
aXMpOgorICAgICAgICAoV1RGOjpkb3duY2FzdCk6CisKIDIwMTQtMDktMzAgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGhlIFNUUklOR19TVEFU
UyBjb2RlcGF0aCBjb21waWxpbmcgYWdhaW4sIGFuZCBhZGQgY2FsbHMgdG8gcmVmL2RlcmVmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNDU2NTM2M2QxM2ZkYTdmMTI0ZTYzYWZiM2U2NWUwZjVmNjhjZmNiZS4uNmI1
YWEyM2I2YjdlODRkNDE2MjRiM2IwYzU0NmY1N2JlM2U4YTBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5OSBAQAorMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0
byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAg
ICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlw
ZXMsIG5vdCBqdXN0IE5vZGVzLgorICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoZSBmb2xsb3dp
bmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIC0gTW92ZSBpczw+IC8gZG93bmNhc3Q8Pigp
IGFuZCBOb2RlVHlwZUNhc3RUcmFpdHMgZnJvbSBOb2RlLmggdG8gYSBuZXcKKyAgICAgICAgICB3
dGYvVHlwZUNhc3RzLmggaGVhZGVyLiBBbHNvIG1vdmUgdGhlbSB0byBXVEYgbmFtZXNwYWNlIGlu
c3RlYWQgb2YKKyAgICAgICAgICBXZWJDb3JlIG5hbWVzcGFjZSBhcyB0aGV5IGNhbiBiZSB1c2Vk
IGZvciBjbGFzc2VzIGluIG90aGVyIG5hbWVzcGFjZXMKKyAgICAgICAgICAoZS5nLiBXZWJLaXQg
bmFtZXNwYWNlKS4KKyAgICAgICAgLSBSZW5hbWUgTm9kZVR5cGVDYXN0c1RyYWl0cyB0byBUeXBl
Q2FzdFRyYWl0cyBhcyBpdCBjYW4gYmUgc3BlY2lhbGl6ZWQKKyAgICAgICAgICBmb3Igbm9uLU5v
ZGVzLgorICAgICAgICAtIFNpbmNlIEMrKyBkb2VzIG5vdCBhbGxvdyB0ZW1wbGF0ZSBzcGVjaWFs
aXphdGlvbnMgaW4gZGlmZmVyZW50CisgICAgICAgICAgbmFtZXNwYWNlcywgSSBoYWQgdG8gbW92
ZSBhbGwgdGhlIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIHVzZXMgdG8KKyAgICAgICAgICB0
aGUgZ2xvYmFsIHNjb3BlIGFuZCB1c2UgdGhlIFdlYkNvcmU6OiBuYW1lc3BhY2UgZXhwbGljaXRs
eSBpbiB0aG9zZS4KKyAgICAgICAgICBUaGlzIGlzIGEgYml0IHVuZm9ydHVuYXRlIGJ1dCBJIGNv
dWxkbid0IGZpbmQgYSBiZXR0ZXIgd2F5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB0YWtl
cyBjYXJlIG9mIHN1cHBvcnRpbmcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvcgorICAgICAgICB0
aGUgV29ya2VyR2xvYmFsU2NvcGUgY2xhc3MsIHdoaWNoIGRvZXMgbm90IGRlcml2ZSBmcm9tIE5v
ZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBkb20v
QXR0ci5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXR0cik6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5oOgorICAgICAgICAoaXNUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzQ0RBVEFTZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzQ2hhcmFjdGVyRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudEZy
YWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZG93bmNhc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1By
b2Nlc3NpbmdJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1BzZXVkb0VsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdl
UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp2bSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzU2hhZG93Um9vdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1N0eWxlZEVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5w
bDoKKyAgICAgICAgKHByaW50VHlwZUhlbHBlcnMpOgorICAgICAgICAocHJpbnRUeXBlSGVscGVy
c0hlYWRlckZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgIChp
c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRG9jdW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjppc0hUTUxFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c0hUTUxGcmFtZUVsZW1lbnRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTEZyYW1lT3duZXJFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxN
ZWRpYUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxUYWJsZUNlbGxFbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg6
CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVu
dC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW1hZ2VEb2N1bWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9MYWJlbGFibGVFbGVtZW50Lmg6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNMYWJlbGFibGVFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc01lZGlhRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvUGx1Z2luRG9jdW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1BsdWdpbkRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5z
ZXJ0aW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1dlYlZUVEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYXRoTUxFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdBbmltYXRlRWxlbWVudEJhc2Up
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTVkdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjppc1NWR0dyYWRpZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzU1ZHR3JhcGhpY3NFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NW
R1BvbHlFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdUZXh0Q29u
dGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR1NNSUxF
bGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNr
OjpTaGFyZWRXb3JrZXJDb25uZWN0VGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpjb25uZWN0VG9JbnNwZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAyMDE0
LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlz
PD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlNTFm
YzcxMTQ2ZWYyNDQ2YmVmZTViZThhYTZlYzY3NmE4MTA1YjguLjcxNzAwNDMyMTlkZTJkMjcxMmI4
ZWFkMTA3MTExODY4MjkzZDVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzI0Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgR2VuZXJh
bGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBhbGwgdHlwZXMsIG5vdCBqdXN0
IE5vZGVzLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9NRWxl
bWVudDo6Y3JlYXRlSW5zdGFuY2UpOgorCiAyMDE0LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGJhYzRjYTM2ZmM0NjdlZDFiMGNkMWQ3YTUzOTE4OTMxN2QxYmM5
NzUuLmM4ODBkYzMwMmNkM2IxY2NhZDRmMjQwNmYzMzQ4ZDk4ODA1OGRkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxNC0wOS0yOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3Vw
cG9ydCB0byBhbGwgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgR2VuZXJhbGl6ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgc3VwcG9ydCB0byBh
bGwgdHlwZXMsIG5vdCBqdXN0IE5vZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW06CisgICAgICAgICgtW1dLRE9NRG9jdW1l
bnQgY3JlYXRlRWxlbWVudDpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBjcmVhdGVUZXh0
Tm9kZTpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBib2R5XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbToKKyAgICAgICAgKC1b
V0tET01UZXh0IGRhdGFdKToKKyAgICAgICAgKC1bV0tET01UZXh0IHNldERhdGE6XSk6CisKIDIw
MTQtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggYTQw
YmM4YjA2NTZhYjBkMTA5ZmJiZTBhZWFhNzJkMjUyYmU0OTYyYS4uNzJiZTNkNjM4Y2QzNWQ1ODVj
NTRhZWI4ZTY4YzcwYjU4NTQyZmVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzg0LDYgKzM4NCw4
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKQogCiAvKiBU
WVBFIENBU1QgKi8KIAorLy8gRklYTUU6IFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJlbW92ZWQgb25j
ZSB0aGUgY29kZSBiYXNlIGlzIHBvcnRlZCB0byB1c2luZworLy8gdGhlIG5ldyBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTXyooKSBtYWNyby4KICNkZWZpbmUgVFlQRV9DQVNUU19CQVNFKFRvQ2xhc3NO
YW1lLCBhcmd1bWVudFR5cGUsIGFyZ3VtZW50TmFtZSwgcG9pbnRlclByZWRpY2F0ZSwgcmVmZXJl
bmNlUHJlZGljYXRlKSBcCiBpbmxpbmUgVG9DbGFzc05hbWUqIHRvIyNUb0NsYXNzTmFtZShhcmd1
bWVudFR5cGUqIGFyZ3VtZW50TmFtZSkgXAogeyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UeXBlQ2FzdHMuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
NTBkMTc3ZTVlOTk0ZGFjYTg5ODM2MzU2NzkxOTFiZTc4NmMxODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UeXBlQ2FzdHMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBUeXBlQ2FzdHNfaAorI2RlZmluZSBUeXBlQ2FzdHNfaAorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlw
ZT4KK3N0cnVjdCBUeXBlQ2FzdFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJn
VHlwZSYpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZT4KK3N0cnVjdCBU
eXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4geworICAgIHN0YXRpYyBi
b29sIGlzT2ZUeXBlKEV4cGVjdGVkVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KK307CisKKy8vIFR5
cGUgY2hlY2tpbmcgZnVuY3Rpb24sIHRvIHVzZSBiZWZvcmUgY2FzdGluZyB3aXRoIGRvd25jYXN0
PD4oKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+
CitpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBzb3VyY2UpCit7CisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNlc3Nh
cnkgdHlwZSBjaGVjayIpOworICAgIHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3Rl
ZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZShzb3VyY2UpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXMo
QXJnVHlwZSogc291cmNlKQoreworICAgIEFTU0VSVChzb3VyY2UpOworICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVj
ZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhw
ZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoKnNvdXJjZSk7Cit9CisKKy8vIFNh
ZmUgZG93bmNhc3RpbmcgZnVuY3Rpb25zLgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2Nv
bnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZSBkb3duY2Fz
dChTb3VyY2UmIHNvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3QiKTsKKyAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291
cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOworfQor
dGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRh
cmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoreworICAgIHN0
YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAiVW5u
ZWNlc3NhcnkgY2FzdCIpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFz
b3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5
cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29u
c3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Cit9CisKKy8vIEFkZCBzdXBwb3J0
IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+KCkgLyBkb3duY2FzdDw+KCkg
aGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihDbGFzc05hbWUpIFwKK25hbWVzcGFjZSBXVEYgeyBcCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQXJnVHlwZT4gXAorY2xhc3MgVHlwZUNhc3RUcmFpdHM8Y29uc3QgQ2xhc3NOYW1lLCBB
cmdUeXBlPiB7IFwKK3B1YmxpYzogXAorICAgIHN0YXRpYyBib29sIGlzT2ZUeXBlKEFyZ1R5cGUm
IHNvdXJjZSkgeyByZXR1cm4gaXNUeXBlKHNvdXJjZSk7IH0gXAorcHJpdmF0ZToKKworI2RlZmlu
ZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpIFwKK307IFwKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6aXM7Cit1c2luZyBXVEY6OmRvd25jYXN0OworCisjZW5kaWYg
Ly8gVHlwZUNhc3RzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKaW5kZXggY2UwMTAwN2E3ZDAwMDc4OGUxY2YxYmE2MTQ4NTNjZDc2NjdmYzJl
OS4uMDEyOGY1MGQyOTI5ZjUxMjVmOGIwYjEzMmRlYmFkN2VlYThjNjM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+
Z3JvdXAoKS5ncm91cFNldHRpbmdzKCkuaW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAgfQot
ICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgY29uc3QgR3JvdXBTZXR0aW5ncyog
Z3JvdXBTZXR0aW5ncyA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuZ3Jv
dXBTZXR0aW5ncygpOwogICAgIGlmIChncm91cFNldHRpbmdzKQogICAgICAgICByZXR1cm4gZ3Jv
dXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IDkxYjA0M2Ix
M2YxZjU0NzA0M2NmNjJkZTllM2Q4NjQxODdmYzJmMWYuLmEzYzEyNjcyMThmODIyNTIwOTNkNDIx
OGYwNzY1NWUwN2E2ZjUxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFz
ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2Uq
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFNjcmlwdEUKICAgICBXb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7CiAgICAgICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXI7
Ci0gICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB0b1dvcmtlckds
b2JhbFNjb3BlKGNvbnRleHQpLT5ncm91cFNldHRpbmdzKCk7CisgICAgICAgIGNvbnN0IEdyb3Vw
U2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNv
bnRleHQpLmdyb3VwU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKGdyb3VwU2V0dGluZ3MpCiAgICAg
ICAgICAgICBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIgPSBncm91cFNldHRpbmdzLT5pbmRl
eGVkREJEYXRhYmFzZVBhdGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggMTY1NGRkNTYwZTJjOTUwOTkyM2Q2NjlmZWU2Zjk4OWIxNzA3NTQ0NS4uODM5ZmE4NzIzNjZi
ZGU2ZTQzNzA2MDUxMmFkMjYxZjRjZDA4MjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShTY3JpcHQKICAgICBB
U1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAKLSAgICBpZiAoY29udGV4dC0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7Ci0gICAgICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkucnVuTG9v
cCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKKyAgICAgICAg
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpjb250ZXh0KTsKKyAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdv
cmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBtb2RlOwogICAgICAgICBtb2RlLmFwcGVuZExpdGVyYWwod2ViU29ja2V0Q2hhbm5lbE1vZGUp
OwogICAgICAgICBtb2RlLmFwcGVuZE51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpOwot
ICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh3
b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLnRvU3RyaW5nKCkpOworICAgICAgICByZXR1
cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSgmd29ya2VyR2xvYmFs
U2NvcGUsIGNsaWVudCwgbW9kZS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgY2xpZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA5OWM0MDJjMzI3ZTdmOTdjYWNlOWVjNjM5NWM1ZGVkZWRlZDA4NWU0Li5kNGVkZDY5
MWY5MWNiMDM5OTNhZjkzZDA0MzI2N2NiYmU0YTUyY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0xMDgsOCArMTA4LDggQEAg
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ28KICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKQogICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChkb3duY2Fz
dDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIGV4ZWMpOwogCi0gICAgaWYgKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0
dXJuIHRvV29ya2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgp
LT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyNSw4ICsxMjUsOCBAQCBKU0RPTUdsb2JhbE9iamVjdCogdG9K
U0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
bwogICAgIGlmIChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSwgd29ybGQpOwogCi0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIHRvV29ya2VyR2xvYmFsU2Nv
cGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDJkMmE3
NTQ2ZGYyMWE0OTMzZWFmYmFjMmM0MTRiNjE3YjQ5Y2JmZDUuLjVjNzZiNmQ0NWZiMmVkZDQzZjg4
NjAxMWRiZjBjY2YyZWY2MjIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTMxLDEwICsxMzEsMTAgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2
ZW50KTsKIAotICAgICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKSB7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpIHsKICAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4Y2Vw
dGlvbiA9IChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpKTsKICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yQ2F1
c2VkRXhjZXB0aW9uIHx8ICh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZSgpKSkK
LSAgICAgICAgICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CisgICAgICAgICAgICAgICAgZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKS0+
Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCBkMTFlNDU0ZGJhOTdjNjJlMjFlMDZlNDVkYWExMGI4ZGZjM2NmODY3Li5hMWI1MWFhMzVmMjcz
NTkzMjI5MTAyOTJmYTdjNjFiYzg2Zjc2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTY2hlZHVs
ZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICBleGVjdXRlKGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSk7CiAgICAgZWxzZQotICAgICAgICBleGVjdXRlKHRvV29ya2VyR2xvYmFs
U2NvcGUoY29udGV4dCkpOworICAgICAgICBleGVjdXRlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rp
b25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFs
dWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCAxZjZi
Y2U0MzEwYmZlNDM1NTA3N2M5YWVmMzQ5YzQ2MjkxMGI1ODM0Li5hN2E4OTQ1NDc5YmQ1NTIzYWIz
NDI3MzVlNzcyMTM3YzQwZTBkYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTk5LDEwICs5OSwxMCBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkOwogfTsKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihBdHRyKQotICAgIHN0YXRpYyBib29sIGlzQXR0cihj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0cmlidXRlTm9kZSgpOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdHRyKQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQXR0cmli
dXRlTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBB
dHRyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAppbmRleCA2Y2Q0ZjY4YzYwYjlkNjVlOTNk
ZTdhOTExMDg5Mjc2ZGE2MmU5NTlhLi43ZTk4MjNlMmZhNzM4YTcwYWU1NjFlZDA5YmNjOWUwMzZi
NzJhZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCkBAIC00MSwxMCArNDEsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
Q0RBVEFTZWN0aW9uKQotICAgIHN0YXRpYyBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05P
REU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNEQVRBU2VjdGlv
bikKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkNEQVRBX1NFQ1RJT05fTk9E
RTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gQ0RBVEFTZWN0
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDAxNmVkZDVhZjJmZjgxNTQ5
NjdhYjY5OTkwNDllZGQ3ZGViMTg1ZGIuLjMxN2Q5MzFiNGY3NTIyNTZjY2JlMDYzOGZiNjAwYjA0
NDg5NWMyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNzYsMTAgKzc2LDEw
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oQ2hhcmFjdGVyRGF0YSkKLSAgICBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlckRh
dGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCk7
IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZiAvLyBDaGFyYWN0ZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4
IDBhN2RlY2VjOWE5MmRjOWRlMzJjNzExYTcyNGJhMTBjZTZiNzBhMjguLmMxYTQ5ZDU5YThhOWJi
ZDllNzlhOWRkZDBiMmY0OWIxYjdiODNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaApAQCAtNDEsMTAg
KzQxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9k
ZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihDb21tZW50KQotICAgIHN0YXRpYyBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9Ci1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpDb21tZW50KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBl
KCkgPT0gV2ViQ29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKICNlbmRpZiAvLyBDb21tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
YzQyZDQ0MmM2MjhhZjJlNzUzYWJkZTUyY2Y3YWVlMWJiNzg0ZDA0Zi4uOTJkZGZjMjAwMmE2NTgx
OTY5MzM1ZDcxZDA5MTZkZDA5N2JmZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE3NDAs
MTMgKzE3NDAsMTMgQEAgaW5saW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRG
b3JEb2N1bWVudChEb2N1bWVudCopOwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKERv
Y3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnQoY29uc3QgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0RvY3VtZW50KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0RvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNE
b2N1bWVudE5vZGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
RG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNEb2N1bWVudCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0
dXJuIG5vZGUuaXNEb2N1bWVudE5vZGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCiBuYW1lc3BhY2UgV1RGIHsKIGlubGluZSBXZWJDb3JlOjpEb2N1bWVudCogZ2V0UHRyKFdl
YkNvcmU6OkRvY3VtZW50JiBwKSB7IHJldHVybiAmcDsgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmgKaW5kZXggYWM3ZDZmNjViZjQ1YmJlNDllMTBjMjg4OWNlNDIxNDFkOGRl
YTE5NC4uNjdlYmZjM2U5ODRiNjgwNWQ3ZGIwZWZmYjM0MzVkYzFiZGViODczMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC01MiwxMCArNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKERvY3VtZW50RnJhZ21lbnQp
Ci0gICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudEZyYWdtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsg
cmV0dXJuIG5vZGUuaXNEb2N1bWVudEZyYWdtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFjZQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2Rl
LmlzRG9jdW1lbnRGcmFnbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGY0ZWY3OWNlMGVkNWE0MDVk
YWQyOTVmZDAzODNhNGRlMzlkYjJmYjIuLmE5YjdhNmE1MjlhN2E3YmVkZDExYTkyMGIzMzRkYzA2
ZTgwMWY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTYwLDEwICs2MCwxMCBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N1YnNldDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oRG9jdW1lbnRUeXBlKQotICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBl
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpET0NV
TUVOVF9UWVBFX05PREU7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkRvY3VtZW50VHlwZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09IFdlYkNvcmU6Ok5vZGU6OkRPQ1VN
RU5UX1RZUEVfTk9ERTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IDE4N2U5ZDMyNzBjYjE2NjAyMGNhOTYyNDU3MDRkM2YxNTYy
MzUxNDcuLjAwZjJiY2IyNjZhZmQyM2Q0MTc5ZTExZTg4M2Q1ZjkxZTg3MDcwYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNjY2LDEwICs2NjYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxFbGVt
ZW50RGF0YT4gbV9lbGVtZW50RGF0YTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzQXR0cmlidXRlcygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlzPEVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxFbGVtZW50PigqdGhpcykuaGFz
QXR0cmlidXRlcygpOwpAQCAtNzgxLDQgKzc3Nyw4IEBAIGlubGluZSBVbmlxdWVFbGVtZW50RGF0
YSYgRWxlbWVudDo6ZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RWxlbWVudCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBmMjRkNmM4YTc1ZmRl
MWEzODBiZGE2OTMyOTgwN2MwMTY5MjliNzY0Li41OGJlYjdmOWFhNDZkNjc2OTYyOWI2NGNiZGVj
ZjQ0OWVhNDE4NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICB3aGlsZSAo
bV9lbnRhbmdsZWRDaGFubmVsICYmIG1fZW50YW5nbGVkQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZUZy
b21SZW1vdGUobWVzc2FnZSwgY2hhbm5lbHMpKSB7CiAKICAgICAgICAgLy8gY2xvc2UoKSBpbiBX
b3JrZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20g
ZGlzcGF0Y2hpbmcuCi0gICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29y
a2VyR2xvYmFsU2NvcGUoKSAmJiB0b1dvcmtlckdsb2JhbFNjb3BlKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCktPmlzQ2xvc2luZygpKQorICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmlzQ2xvc2luZygpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9
IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdU
Rjo6bW92ZShjaGFubmVscykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggN2M4YTlhNjg1ZTM5N2IyY2RiZDc5
NjQ0ZGEwNzQ2ZWY2NTJkYjEwNy4uNGNkMzE1NzBiYTQxMTk3Njk5MTU2YTE3YWE4ODg4NjdiNGQx
N2M3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiVHJlZVNoYXJl
ZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFZNOwpAQCAtNzM5LDU4ICs3NDAsNiBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFy
ZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudE5vZGUo
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlw
ZT4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHMgewotICAgIHN0YXRpYyBib29sIGlzVHlwZShB
cmdUeXBlJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlPgotc3RydWN0
IE5vZGVUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIEV4cGVjdGVkVHlwZT4gewotICAgIHN0
YXRpYyBib29sIGlzVHlwZShFeHBlY3RlZFR5cGUmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi0v
LyBUeXBlIGNoZWNraW5nIGZ1bmN0aW9uIGZvciBOb2RlcywgdG8gdXNlIGJlZm9yZSBjYXN0aW5n
IHdpdGggZG93bmNhc3Q8PigpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlw
ZW5hbWUgQXJnVHlwZT4KLWlubGluZSBib29sIGlzKEFyZ1R5cGUmIG5vZGUpCi17Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOwotICAgIHJldHVybiBOb2RlVHlwZUNhc3RUcmFp
dHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNUeXBlKG5vZGUpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlPgotaW5s
aW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVjdGVkVHlwZSwgQXJnVHlwZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOwotICAgIHJldHVybiBOb2RlVHlwZUNhc3RUcmFp
dHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNUeXBlKCpub2RlKTsKLX0K
LQotLy8gRG93bmNhc3RpbmcgZnVuY3Rpb25zIGZvciBOb2RlIHR5cGVzLgotdGVtcGxhdGU8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci1pbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25k
aXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJn
ZXQmPjo6dHlwZSBkb3duY2FzdChTb3VyY2UmIHNvdXJjZSkKLXsKLSAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNh
c3QiKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNv
dXJjZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFs
PHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0
eXBlPihzb3VyY2UpOwotfQotdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3Vy
Y2U+IGlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNl
Pjo6dmFsdWUsIGNvbnN0IFRhcmdldCosIFRhcmdldCo+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSog
c291cmNlKQotewotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNv
dXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxT
b3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7Ci19
Ci0KLS8vIEFkZCBzdXBwb3J0IGZvciB0eXBlIGNoZWNraW5nIC8gY2FzdGluZyB1c2luZyBpczw+
KCkgLyBkb3duY2FzdDw+KCkgaGVscGVycyBmb3IgYSBzcGVjaWZpYyBjbGFzcy4KLSNkZWZpbmUg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihDbGFzc05hbWUpIFwKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4gXAotICAgIGNsYXNzIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBD
bGFzc05hbWUsIEFyZ1R5cGU+IHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXMjI0NsYXNzTmFtZShub2RlKTsgfSBc
Ci0gICAgcHJpdmF0ZToKLQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpIFwK
LSAgICB9OwotCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgYWxsIHVzZXMg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkuCiAjZGVm
aW5lIE5PREVfVFlQRV9DQVNUUyhUb0NsYXNzTmFtZSkgXAogICAgIFRZUEVfQ0FTVFNfQkFTRShU
b0NsYXNzTmFtZSwgTm9kZSwgbm9kZSwgV2ViQ29yZTo6aXMjI1RvQ2xhc3NOYW1lKCpub2RlKSwg
V2ViQ29yZTo6aXMjI1RvQ2xhc3NOYW1lKG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IGIzMjVjMzhkYWY1NDBhMDllOGZiZGI1MzhmY2U3YmYw
M2VlODAzOWEuLjNkNzIzYWFmODFlODhhYzFhNmQ0M2VjYjg0NDdmN2E2MTc5OGNlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTkxLDEwICs5MSwx
MCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbikKLSAgICBzdGF0aWMgYm9vbCBpc1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0gLy9uYW1lc3BhY2UKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLm5vZGVUeXBlKCkgPT0gV2ViQ29yZTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9O
T0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXggMGE5MGE0NWU2MDE5OTJjZTQ3MzAwOTI4ZDI0ODFlNGQ1
NTNjMWRmYi4uNGJlNWM5NjkxMDMzOWI5NjdjNzZhY2NmNjU5M2JlNGRhMTc5OTIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC03NywxMCArNzcsMTAgQEAgaW5saW5lIGJvb2wg
cHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgKHN0eWxlLT5j
b250ZW50RGF0YSgpIHx8IHN0eWxlLT5oYXNGbG93RnJvbSgpKTsKIH0KIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihQc2V1ZG9FbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzUHNldWRv
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgp
OyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLX0gLy8gbmFtZXNwYWNlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlBzZXVkb0VsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTBhODRjNzc5NDgxYjk4ZTdiN2ZhMTNjNmFhYmVl
YWNiOWRiZjA2OC4uZGNlZjU3NTJiMGQwOWVmOWUyNGVkOWFiODhmNDI5NTdiOWNiMjFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKQEAg
LTE1OCwxNiArMTU5LDE2IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlUG9ydEV2ZW50cygpCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRl
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKLSAgICBBU1NFUlQoKGlz
RG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlzV29ya2VyR2xvYmFs
U2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3JrZXJHbG9iYWxTY29wZSh0aGlzKS0+
dGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAm
JiBpc01haW5UaHJlYWQoKSkKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogCiAgICAgbV9tZXNzYWdlUG9ydHMuYWRkKCZtZXNz
YWdlUG9ydCk7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVz
c2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogewotICAgIEFTU0VSVCgoaXNEb2N1
bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXNXb3JrZXJHbG9iYWxTY29w
ZSgpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0b1dvcmtlckdsb2JhbFNjb3BlKHRoaXMpLT50aHJl
YWQoKS50aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlz
TWFpblRocmVhZCgpKQorICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAm
JiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50
aHJlYWQoKS50aHJlYWRJRCgpKSk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3Nh
Z2VQb3J0KTsKIH0KQEAgLTQ0NSwxMCArNDQ2LDEwIEBAIGRvdWJsZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojp0aW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3QKIAogSlNDOjpWTSYgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogewotICAgICBpZiAoaXNEb2N1bWVudCgpKQorICAgIGlm
IChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1v
blZNKCk7CiAKLSAgICByZXR1cm4gdG9Xb3JrZXJHbG9iYWxTY29wZSgqdGhpcykuc2NyaXB0KCkt
PnZtKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2Ny
aXB0KCktPnZtKCk7CiB9CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGFkZDlhYTE5NjZhMTk3OTg1
MWFmYzA2MTBjMTljZWZmOWYxMmVlOS4uZmNlMTgwNDZmMTRlZjkyMTFjZWJiN2I0ZTQ5MmNhYTQ0
N2JmMjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC0yMzQsMTAgKzIzNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLSNkZWZpbmUgU0NS
SVBUX0VYRUNVVElPTl9DT05URVhUX1RZUEVfQ0FTVFMoVG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFRvVmFsdWVUeXBlTmFtZSogdG8jI1RvVmFsdWVU
eXBlTmFtZShjb25zdCBSZWZQdHI8VD4mIGNvbnRleHQpIHsgcmV0dXJuIHRvIyNUb1ZhbHVlVHlw
ZU5hbWUoY29udGV4dC5nZXQoKSk7IH0gXAotICAgIFRZUEVfQ0FTVFNfQkFTRShUb1ZhbHVlVHlw
ZU5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnRleHQsIGNvbnRleHQtPmlzIyNUb1Zh
bHVlVHlwZU5hbWUoKSwgY29udGV4dC5pcyMjVG9WYWx1ZVR5cGVOYW1lKCkpCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKaW5kZXggYmZlNWI2Zjg0N2I1ZDMxOWY2OTQyMTA4M2EzZmFmNjg2
MDkxNzQwNC4uMWJlNzU3ZjE3MmZmNjI1NTM5YWY5ZjEzMjEzMDAzNjgzNjRhMmNjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCkBAIC05NSwxMCArOTUsNiBAQCBpbmxpbmUgRWxlbWVudCogU2hh
ZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmZv
Y3VzZWRFbGVtZW50KCk7CiB9CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU2hhZG93
Um9vdCkKLSAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd1Jvb3QoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1NoYWRvd1Jvb3QoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiBpbmxpbmUgU2hhZG93Um9vdCogTm9kZTo6c2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFpczxFbGVtZW50PigqdGhpcykpCkBAIC0xMTksNiArMTE1LDEwIEBAIGlubGluZSBib29s
IGhhc1NoYWRvd1Jvb3RQYXJlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gbm9kZS5w
YXJlbnROb2RlKCkgJiYgbm9kZS5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpOwogfQogCi19
IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYWRvd1Jvb3QpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTaGFkb3dSb290KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuaAppbmRleCA0MDliYzAzODE1NjE4MjMwNDRlYTZjYTY5MWE5NWE1OWQ5ZDk5
YzcyLi4zZjcwZjNkZDMyNTkzY2Y2ZTMzYmQyZmRhMTBjNDc2ODk0YzBiOGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTEwNiwxMCArMTA2LDEwIEBAIGlubGluZSBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIFN0eWxlZEVsZW1lbnQ6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KCkKICAgICByZXR1cm4gZWxlbWVudERhdGEoKS0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
KTsKIH0KIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTdHlsZWRFbGVtZW50KQotICAg
IHN0YXRpYyBib29sIGlzU3R5bGVkRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzU3R5bGVkRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0gLy9uYW1lc3BhY2UKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVkRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1N0eWxlZEVsZW1l
bnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CmluZGV4IDhiODQ4YWI3N2FiZWM0ZmIyMTIyMGZmMTQwNzg5M2Q0NTE5M2FlZDEuLjYwZGVlZjk0
NGVkMDM5ZmM3NGE3ZTA1OTMxNmQ4ZTY2NDAwZWIxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNzQsMTAg
Kzc0LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oVGV4dCkKLSAgICBzdGF0aWMgYm9vbCBpc1RleHQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1RleHROb2RlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OlRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBUZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
aW5kZXggOTJhOTc5NmU0Njc3MzVmNzg5Y2FiOTg3MDJlMjI1Y2I4ZTlkYzNiNi4uNTIyZTdkZjNj
ZjNjZDUxZTJjNjA1MjU4NmQ2MTIzNWNkYzBkZmExOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwKQEAgLTYzOSwyOSArNjM5LDMzIEBAIHN1YiBwcmludFR5cGVIZWxwZXJzCiAgICAgICAgIG5l
eHQgaWYgJHRhZ0NvdW50ID4gMTsKICAgICAgICAgbXkgJG5hbWUgPSAkY2xhc3NUb1RhZ3N7JGNs
YXNzfVswXTsKICAgICAgICAgcHJpbnQgRiA8PEVORAorbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgJGNsYXNzOworfQorbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlw
ZT4KLWNsYXNzIE5vZGVUeXBlQ2FzdFRyYWl0czxjb25zdCAkY2xhc3MsIEFyZ1R5cGU+IHsKK2Ns
YXNzIFR5cGVDYXN0VHJhaXRzPGNvbnN0IFdlYkNvcmU6OiRjbGFzcywgQXJnVHlwZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBjaGVj
a1RhZ05hbWUobm9kZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJiBub2Rl
KSB7IHJldHVybiBjaGVja1RhZ05hbWUobm9kZSk7IH0KIHByaXZhdGU6CiBFTkQKICAgICAgICA7
CiAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYmICRwYXJzZWRU
YWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAm
JiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9
VGFnKTsgfQotICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYgY2hlY2tUYWdOYW1lKGRvd25jYXN0PEhU
TUxFbGVtZW50Pihub2RlKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
V2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVu
a25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OiRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1Rh
Z05hbWUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRN
TEVsZW1lbnQ+KG5vZGUpICYmIGNoZWNrVGFnTmFtZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxl
bWVudD4obm9kZSkpOyB9CiBFTkQKICAgICAgICAgICAgOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3Qg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9
CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IFdlYkNvcmU6OiRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
V2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQorICAg
IHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLmhhc1RhZ05hbWUoV2ViQ29yZTo6JHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVz
Ojoke25hbWV9VGFnKTsgfQogRU5ECiAgICAgICAgICAgIDsKICAgICAgICB9CiAgICAgICAgcHJp
bnQgRiA8PEVORAogfTsKK30KIEVORAogICAgICAgIDsKICAgICAgICBwcmludCBGICJcbiI7CkBA
IC02NzgsMTEgKzY4Miw5IEBAIHN1YiBwcmludFR5cGVIZWxwZXJzSGVhZGVyRmlsZQogICAgIHBy
aW50IEYgIiNpZm5kZWYgIi4kcGFyYW1ldGVyc3tuYW1lc3BhY2V9LiJFbGVtZW50VHlwZUhlbHBl
cnNfaFxuIjsKICAgICBwcmludCBGICIjZGVmaW5lICIuJHBhcmFtZXRlcnN7bmFtZXNwYWNlfS4i
RWxlbWVudFR5cGVIZWxwZXJzX2hcblxuIjsKICAgICBwcmludCBGICIjaW5jbHVkZSBcIiIuJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfS4iTmFtZXMuaFwiXG5cbiI7Ci0gICAgcHJpbnQgRiAibmFtZXNw
YWNlIFdlYkNvcmUge1xuXG4iOwogCiAgICAgcHJpbnRUeXBlSGVscGVycygkRiwgXCVhbGxUYWdz
KTsKIAotICAgIHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiI7CiAKICAg
ICBjbG9zZSBGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggMGE5YjVhMmJmMGQ1
YjFjNTgwYTRlMzlkYjNhYTdlMGJmODBmYmExZS4uYTY1YzM3OTAyYmY2MWU5MGQ3YmQyNTEyMjc4
NTM0MjdiNDliZGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC05NywxMSAr
OTcsMTEgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV93aW5kb3dOYW1lZEl0
ZW07CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxEb2N1bWVudCkKLSAg
ICBzdGF0aWMgYm9vbCBpc0hUTUxEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIHsg
cmV0dXJuIGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hU
TUxEb2N1bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkg
JiYgaXNIVE1MRG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTERvY3VtZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRv
Y3VtZW50LmlzSFRNTERvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUp
ICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MRG9jdW1lbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDY4ZjIzMWI3YzdkNzg0NDRhY2MxYWQyYWY3YmNhYTgx
NmI2ZDg4NGEuLjgxMjM0NzhkZDllMGFlYTQzOTc1NjczOWVhZDA1NjVhNWIxYjlkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTE0NiwxMCArMTQ2LDYgQEAgaW5saW5lIEhUTUxF
bGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQKICAgICBBU1NFUlQodGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQog
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxFbGVtZW50KQotICAgIHN0YXRpYyBi
b29sIGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxF
bGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJvb2wg
Tm9kZTo6aGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVu
dD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CkBAIC0xNTcsNiArMTUzLDEwIEBAIGlubGluZSBi
b29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgSFRNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpIVE1MRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2luY2x1ZGUgIkhUTUxFbGVtZW50VHlwZUhlbHBl
cnMuaCIKIAogI2VuZGlmIC8vIEhUTUxFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYzIyNGU2ZWRiZDdkZTk4Mzc0ZjNjN2RiZDlh
MWY3MDEwMDBkYzQwOS4uZTdhZTNlY2E3MjM0OGJiMDE4NmQxZDA4NjJhNTA0NTVkYmI2NjM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE5
MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0F1dG9mb2N1c2VkIDogMTsK
IH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZvcm1Db250cm9sRWxlbWVu
dCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQoY29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvLyBuYW1lc3BhY2UKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggZjM4MTUzZjhiMTExZTNmZWIxNTAz
NTlhYmI0N2ExYmQyMGRmMzkyMy4uM2NhN2FiMTNlMzE2ZGFmNmY1Y2NmMWQ2N2RjZThmMDNiMGM3
YjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NzYsMTEgKzc2LDExIEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogfTsKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MRnJhbWVFbGVtZW50QmFzZSkKLSAgICBz
dGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBpczxIVE1MRnJhbWVFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZy
YW1lRWxlbWVudD4oZWxlbWVudCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxGcmFtZUVsZW1l
bnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRC
YXNlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gSFRNTEZyYW1lRWxlbWVudEJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgKaW5kZXggMDZhNDUzNzQ1OGE4OTY2ODU0NDBjZWI5YjFjOTVhMDc3MTVh
ZjU4OS4uOWMzYjI3ZThkNGFmNDBkN2MyZTBkNTdmNTAyYThjODgxOGE4ZDZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC02OSwxMSArNjksNiBA
QCBwcml2YXRlOgogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKIH07CiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTEZyYW1lT3duZXJFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCi0KLQogY2xhc3MgU3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIgewogcHVibGljOgogICAgIGV4
cGxpY2l0IFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCkBAIC0x
MDEsNCArOTYsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYgLy8gSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMjdmY2RkMmU3NGM4ZTYwZDJlZDMwYjNmMmQ2YzM0
ODMzZjE1YTg4My4uZDlhNjhkM2M0OGU4M2Y3YmZjYzU3YmE0MGM2MDg4NTEwNzljNDZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwOSwxMSArOTA5LDYgQEAg
c3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogI2VuZGlmCiAjZW5kaWYKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihIVE1MTWVkaWFFbGVtZW50KQotICAgIHN0YXRp
YyBib29sIGlzSFRNTE1lZGlhRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxNZWRp
YUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4obm9kZSkgJiYg
aXNIVE1MTWVkaWFFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQotCiAjaWZuZGVmIE5ERUJVRwogdGVtcGxhdGU8Pgogc3RydWN0
IFZhbHVlVG9TdHJpbmc8TWVkaWFUaW1lPiB7CkBAIC05MjQsNyArOTE5LDEyIEBAIHN0cnVjdCBW
YWx1ZVRvU3RyaW5nPE1lZGlhVGltZT4gewogfTsKICNlbmRpZgogCi19IC8vbmFtZXNwYWNlCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc01lZGlhRWxlbWVudCgp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsg
cmV0dXJuIGlzPFdlYkNvcmU6OkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJD
b3JlOjpFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAog
I2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRl
eCAwZjU3ZjQ2YTFjNzEwYTg3YTUzZGVhNTRjMjNjYzIyZWQ4ODkxZDMwLi5mOGJjN2Y5YzYzMDY2
YTM0Y2JkNWI0OTY4YzkxNmZiNjI0NWY2NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBwcml2YXRlOgogICAgIERpc3BsYXlT
dGF0ZSBtX2Rpc3BsYXlTdGF0ZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
SFRNTFBsdWdJbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MUGx1Z0luRWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUGx1Z2luRWxlbWVudCgpOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1BsdWdpbkVsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CiAjZW5kaWYgLy8gSFRNTFBsdWdJbkVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCAwNzg2ZjIxMmFiYTYwNjc1MGY5ZjVjZmJhMThi
YzQwNmQ3MzdiZjA2Li44NmRjYzg2OTI4ZWFhNDY2ZTEyMWJjOTY3NTVhMzM0MzMwMDFhNmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMTU3
LDExICsxNTcsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGx1Z0luRGltZW5zaW9uc1NwZWNp
ZmllZDsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3Qg
SFRNTFBsdWdJbkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNQbHVnSW5JbWFn
ZUVsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzSFRNTFBsdWdJbkltYWdlRWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkgJiYg
aXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50Pihub2Rl
KSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVt
ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9k
ZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlw
ZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCAwMzZi
ZWI2YWJjZGYyOTFiY2M2MzhmYTA1N2IxZjMzODc0YWJlOGM2Li4zY2RiOWFiZmRmYzRlMWJhMTA4
ZTRhN2QzMzRiZjkxMzNiMjIyZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBv
dmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBI
VE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRoVGFnKTsgfQotICAg
IHN0YXRpYyBib29sIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19IC8vIG5hbWVzcGFjZQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRkVGFnKSB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0aFRhZyk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29y
ZTo6SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxl
bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCmluZGV4IDY4
NDU3MDc3OTE3MmVkZTQ4MTIzMzQxOGI0ZmYzZTYxNDU5YTE1YzIuLjUwNWNjZGUyMjhjOWU4MzNh
NTliM2FjNmZiMTkyZTE4YjJlOTI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKSBvdmVycmlkZTsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGFibGVTZWN0
aW9uRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRmb290VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Ym9keVRh
Zyk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfSAvL25hbWVzcGFj
ZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SFRNTEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnRoZWFkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0
Zm9vdFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGJvZHlU
YWcpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNh
c3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaAppbmRleCA5ZGM3ZDkyNmJiMWNiNmMzMzExY2FjZWMxNjJiZDQ5NDcz
YmI1ZDBhLi5hZjVmZTczNzM0ZTNhMDJmMjllMjI5NzdkMTRjNjZlMjQ5ODA3Y2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0x
NTEsMTMgKzE1MSwxMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGNoYXIgbV9pc1BsYWNlaG9s
ZGVyVmlzaWJsZSA6IDE7CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1Rl
eHRGb3JtQ29udHJvbCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxFbGVtZW50Pihub2RlKSAmJiBp
c0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJik7CiAKLX0gLy8gbmFt
ZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1l
bnQuaXNUZXh0Rm9ybUNvbnRyb2woKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
aAppbmRleCA3ODFkMDJjYTM2M2Q4ZmZhNDVkZGYyNzg3ZjdhNTg1MWEyM2M5OTQ4Li5lMWU5ZGUy
N2RmZDhhYThhMjM4OWYwN2RkYTY3MmU3OGQyY2Y3MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuaApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3Vs
ZFNocmlua0ltYWdlOwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihJbWFnZURv
Y3VtZW50KQotICAgIHN0YXRpYyBib29sIGlzSW1hZ2VEb2N1bWVudChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzSW1hZ2VEb2N1bWVudCgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNJbWFnZURvY3VtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPERv
Y3VtZW50Pihub2RlKSAmJiBpc0ltYWdlRG9jdW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUp
KTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNJbWFnZURvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29y
ZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4o
bm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBJbWFn
ZURvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKaW5kZXggMjc0
YzJhYjk5MDYwMDg5YWM3OTE5ZmMxN2RhNmFiNGQ2OGRhOGFiNy4uYzJhNjMxYTFlNTA2NmNlOTg3
ODRiYWY5ZDAzMTVkZTdkODYxYjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVt
ZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0xh
YmVsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oTGFiZWxhYmxlRWxlbWVudCkKLSAgICBzdGF0aWMg
Ym9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0
dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQotICAgIHN0YXRpYyBib29sIGlzTGFiZWxhYmxl
RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkg
JiYgaXNMYWJlbGFibGVFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLVNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkxhYmVsYWJsZUVsZW1lbnQpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkhUTUxFbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudD4obm9k
ZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAppbmRleCBhYjVlZDA4MWE2YTQzMTg0ZDg3OWRlMDdkYmE2MDIw
MGRjY2M0ZTBkLi4wM2VkODFiNTA4ZWUxMDZiOTM5ZGJlOTM0YzViNjc4MTUwNmI4MGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaApAQCAtNTYsMTIgKzU2LDEyIEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fb3V0Z29pbmdSZWZlcnJlcjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oTWVkaWFEb2N1bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc01lZGlhRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc01lZGlhRG9j
dW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFEb2N1bWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNNZWRpYURvY3VtZW50KGRvd25j
YXN0PERvY3VtZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpNZWRpYURvY3VtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzTWVkaWFEb2N1bWVu
dCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8
V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCmluZGV4
IDE4ODM0ZDY4ZTBhMzVhNWUzZjE2NjAwOGFiZmJmYzFhYTJjYTdiNWMuLjZmYzZlYmNmODE5YTBj
YjA1NmRkNDhkZTFkYzc5ZWZkNzdkOTFlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUGx1Z2luRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmgKQEAgLTYxLDExICs2MSwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxIVE1MUGx1Z0lu
RWxlbWVudD4gbV9wbHVnaW5FbGVtZW50OwogfTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihQbHVnaW5Eb2N1bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1BsdWdpbkRvY3VtZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNQbHVnaW5Eb2N1bWVu
dCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNQbHVnaW5Eb2N1bWVudChjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNQbHVnaW5Eb2N1bWVudChkb3duY2Fz
dDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6UGx1Z2luRG9jdW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNQbHVnaW5Eb2N1bWVu
dCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8
V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiAjZW5kaWYgLy8gUGx1Z2luRG9jdW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggOWYwNDI2NGUxNGI0NzEyNjVhNDI4MGI3MGQyZGVl
NzFiNzY0MjA4My4uMGY0MWEwMjQwYzFjNWZjOWM5YTk3MTI5YjNkM2NhYTI2MWM5MjVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03NSwxMCAr
NzUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNEaXN0cmlidXRpb247CiB9OwogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKEluc2VydGlvblBvaW50KQotICAgIHN0YXRpYyBib29s
IGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2Vy
dGlvblBvaW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogaW5saW5lIGJv
b2wgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewogICAgIHJldHVy
biBub2RlICYmIGlzPEluc2VydGlvblBvaW50Pihub2RlKSAmJiBkb3duY2FzdDxJbnNlcnRpb25Q
b2ludD4oKm5vZGUpLmlzQWN0aXZlKCk7CkBAIC0xMjcsNCArMTIzLDggQEAgaW5saW5lIGJvb2wg
aGFzU2hhZG93Um9vdE9yQWN0aXZlSW5zZXJ0aW9uUG9pbnRQYXJlbnQoY29uc3QgTm9kZSYgbm9k
ZSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6Okluc2VydGlvblBvaW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5zZXJ0aW9uUG9pbnQoKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9p
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaAppbmRleCBiYjdiMDMyMDFiYmMwMmU1OWIwNTdhNjU2NzA0ZTM2Y2UwN2Nj
OTg4Li5jMzEyOGI4Y2JmYmQ2NTQ5ZDZhYTk4NDUyOWRhMTY4MDZhZThmMDAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aApAQCAtNzAsMTEgKzcwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9
OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihu
b2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQogY2xhc3MgU2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC0xMDcsNiArMTAyLDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhcHR1cmluZzsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkhUTUxFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmgKaW5kZXggM2IzZDkxMTBjYjgwYzVlMmU2ZjAyNzg3MDU0Zjc4M2E5
OWMxN2EwMi4uNTJhZTQ4NzhjZDI3NGU5YzkxYWU2ZjM3ZGRjNDI2YzRkNWZmMWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTgwLDEwICs4MCwxMCBA
QCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwogfTsKIAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJWVFRFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzV2Vi
VlRURWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVu
dCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJWVFRFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBlZjAwOGQzYTI2ZmVkNzY5MjVjMzg1NDFk
ZDMyYzYzNjY1ZjM1YzgzLi44ZTk0N2NhNThkMmJiYTNjZmE2OTkyMzJhYWJjN2FjNWY0Mjc5OTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcApAQCAtMTI2Miw4ICsxMjYyLDggQEAgSW5zdHJ1bWVudGluZ0FnZW50cyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmEKIAogSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkK
LSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKHRvV29y
a2VyR2xvYmFsU2NvcGUoY29udGV4dCkpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCisgICAgICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxT
Y29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmU4YzJiZmY3YWMwYzAzZmNhNTBlNzY0ODEzMGNhMjRmMGI4Y2VhNC4uZTNkY2RiNDg2
ZjE5ZTcxMDUzMmQ5MjA5Zjk1ZjY1OTcxZmUwMDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTYsOCArNTYsOCBAQCBQYXNzUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjbwogICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAg
IGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpCi0gICAgICAgIHJldHVybiBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSwg
Y2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCByZXF1ZXN0LCBvcHRpb25zKTsK
KyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCByZXF1ZXN0
LCBvcHRpb25zKTsKIAogICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLCAqY2xpZW50LCByZXF1ZXN0LCBvcHRpb25z
KTsKIH0KQEAgLTY2LDggKzY2LDggQEAgdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKIHsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KSB7Ci0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkodG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRp
b25zKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKSB7CisgICAgICAg
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCByZXF1ZXN0LCBjbGllbnQsIG9wdGlvbnMp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAppbmRleCA5ZmZiOTViOThlM2RkNmJlYjI1YjU2NWVmZjI3NDc1ODQw
ZWVmMmZmLi4yZTg3ODA5NWYyNzFiMWMwMmUzOWE0NjAxOTUyYTdmNWZiMWExMmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTc1Miw4ICs3NTIs
OCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVVcmxGcm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaQogCiB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAo
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFs
U2NvcGUoY29udGV4dCktPnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xv
YWRlcihDcm9zc1RocmVhZFRhc2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZSwg
cmVxdWVzdCwgc2Vzc2lvbklEKSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSkgeworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpLnRo
cmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRh
c2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZSwgcmVxdWVzdCwgc2Vzc2lvbklE
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2OCw4ICs3NjgsOCBAQCB2b2lkIE1l
bW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgUmVzbwogCiB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNl
c3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+dGhyZWFkKCku
d29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jv
c3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMsIHJlcXVlc3QpKTsKKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKSB7CisgICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5w
b3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0
RnJvbVNlc3Npb25DYWNoZXMsIHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICByZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXNJbXBsKGNvbnRleHQsIHJlcXVlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggZTA5OTA2NzJkMGNlYmU1YjA3
YjlhZDlkNGM2YmRhMDk1OTRhNDk4NC4uYjk4ZmJlYjcyZWE3ZmEzNjk4MzllMGE5OGQxMGFiN2Zi
ZGEwODM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC03MywxMCAr
NzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkg
eyB9CiB9OwogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKE1hdGhNTEVsZW1lbnQpCi0g
ICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNNYXRoTUxFbGVtZW50KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
LQogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBpc01hdGhNTEVsZW1lbnQoKSAmJiBkb3duY2Fz
dDxNYXRoTUxFbGVtZW50PigqdGhpcykuaGFzVGFnTmFtZShuYW1lKTsKQEAgLTg0LDYgKzgwLDEw
IEBAIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgTWF0aE1MUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNNYXRoTUxF
bGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2luY2x1ZGUgIk1h
dGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIgogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAppbmRleCA3ZDk0YTNkNGI4
MjdmOWRhNjZkODg0Mjg1ZWM5MmZlOTU5OWQwYWM0Li5lNzIxMWIzOTI5ZjE5NjA4ZTUyY2ViZTkw
ZGE5NWUyN2I1MjI4ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5oCkBAIC03MiwxNSArNzIsMTUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IG1fYW5pbWF0b3I7CiB9OwogCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFNWR0FuaW1hdGVFbGVtZW50QmFzZSkKLSAgICBzdGF0aWMgYm9vbCBp
c1NWR0FuaW1hdGVFbGVtZW50QmFzZShjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50QmFzZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShT
VkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQotICAgICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnNldFRhZyk7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoV2Vi
Q29yZTo6U1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3Jl
OjpTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQorICAgICAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6OnNldFRhZyk7CiAgICAgfQotICAgIHN0YXRp
YyBib29sIGlzU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlKGRvd25jYXN0
PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSAm
JiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkpOyB9CiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQogI2VuZGlm
IC8vIFNWR0FuaW1hdGVFbGVtZW50QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4
IDZjYWNmMDNhODFlOGNiYzczYjk0ZmJlNjJmM2EzNDViZjhlYmY3OTYuLmVmNWJlMmVlY2QwMjUw
NDZmMmI1MWViOWRhMDkzYTE4ZDU0NjQ5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBA
IC01MiwxMSArNTIsMTEgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fdHJhbnNsYXRlOwog
fTsKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdEb2N1bWVudCkKLSAgICBzdGF0
aWMgYm9vbCBpc1NWR0RvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4g
ZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdEb2N1bWVu
dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxEb2N1bWVudD4obm9kZSkgJiYgaXNTVkdE
b2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpTVkdEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1NW
R0RvY3VtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShk
b3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKICNlbmRpZiAvLyBTVkdEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCA5YTJlOTZjOGZjMWJkZWM5MWMyZTcwYTlkOGYwNzU1OWRmMGMyMjM0Li5kODMzYzA2
MWYwOTUxN2I4MWRkYmFjNDlmZTA0NzE1OTgzYzY3OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKQEAgLTIyMSwxMCArMjIxLDYgQEAgc3RydWN0IFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9y
IHsKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBRdWFsaWZpZWROYW1lJiBhLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBiKSB7IHJldHVybiBhLm1hdGNoZXMoYik7IH0KIH07CiAKLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHRWxlbWVudCkKLSAgICBzdGF0aWMgYm9vbCBpc1NWR0Vs
ZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdO
YW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlz
U1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1lKG5h
bWUpOwpAQCAtMjMyLDYgKzIyOCwxMCBAQCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNv
bnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVy
biBub2RlLmlzU1ZHRWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisK
ICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKaW5kZXggMGNiMTllZmUzZTYzMjEzNDBhODY5MDllMDcxYmQ0NDIxNTgxYzc5ZC4uNjZh
YzNjMjEwNTNhZjEwYTAxODg1OGQyNmEyZjk2ZmJiZjIzMDI3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAKIHZvaWQgaW52YWxpZGF0ZUZpbHRlclBy
aW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQotICAgIHN0YXRpYyBib29s
IGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFNWR0VsZW1lbnQm
IGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZlY3QoKTsgfQotICAgIHN0YXRp
YyBib29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpT
VkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNv
cmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCA1MzM4
MDhmYzgxYmNmOWZiYTQ2N2UwOWU0NWZiMTE3MTQ4MWI2ZDJmLi4zNjU4OWJiNTIzNmRiMWRiNzlk
NzQ4Y2E4NmQ0MmE4ODg1ZTRjZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZH
R3JhZGllbnRFbGVtZW50KQotc3RhdGljIGJvb2wgaXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3Qg
U1ZHRWxlbWVudCYgZWxlbWVudCkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQpCitzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZyk7CisgICAgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGll
bnRUYWcpOwogfQotc3RhdGljIGJvb2wgaXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKQogewot
ICAgIHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0dyYWRpZW50RWxlbWVudChk
b3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7CisgICAgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2Rl
KSk7CiB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5k
ZXggNDMzZjMxYzAwOTczYWQ4YjkxZTJiN2RjMWJkNjA1YmFhYjljOGUwOS4uNjEyNjY2ZjQ1ZTVm
YzEzMTBjZDUwNjgyYjVlYjgxMDUyNzkwYWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaApAQCAtODIsMTEgKzgyLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZElzb2xhdGVCbGVuZGluZzsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
U1ZHR3JhcGhpY3NFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdHcmFwaGlj
c0VsZW1lbnQoKTsgfQotICAgIHN0YXRpYyBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFNWR0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHR3JhcGhp
Y3NFbGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50KQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzU1ZHR3JhcGhpY3NFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6U1ZHRWxlbWVu
dD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5vZGUpKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gU1ZHR3JhcGhpY3NF
bGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDA5YWU2NjJiMTA5
N2E0Mzc4MWE4MGIxNTlkOTE0NTI4N2Y3NzIzNy4uZmM0NmQ3YzdiOTg3MTIyYTJlMGRmNzNhNTJk
MzZjZjQ2MDQ5ZGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTYyLDEx
ICs2MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKIH07CiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oU1ZHUG9seUVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdQb2x5
RWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1l
czo6cG9seWxpbmVUYWcpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdQb2x5RWxlbWVudChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR1BvbHlF
bGVtZW50KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6cG9seWdvblRhZykgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpwb2x5bGluZVRhZyk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6
U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OlNWR0VsZW1lbnQ+
KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCBhNTkyYWJlNzI1M2Nl
OWM3MDNjYmU2MTA4ZDNmNjA3ZGIwM2Y5NWYxLi4wOWYyMGU0MGNjZTYzZjRjZTE2ODVlMDNmZmI2
OTA1ZWMyMzExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5oCkBAIC0xMTksMTEgKzExOSwxMSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHVGV4
dENvbnRlbnRFbGVtZW50KQotICAgIHN0YXRpYyBib29sIGlzU1ZHVGV4dENvbnRlbnRFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udGVu
dCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdUZXh0Q29udGVu
dEVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOyB9Ci1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJu
IGVsZW1lbnQuaXNUZXh0Q29udGVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlNWR0VsZW1lbnQ+KG5v
ZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKaW5kZXggNGQ4YzMxYjY3Njg1Y2E4MzE5NDJl
M2E1YmI0ZDAzNjY2YmRjYWM4ZS4uODc1ZGNiOWU1OWEwODMzMjY3OTNmMDQ3OTI5NjE0MTRkZGI4
NGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
aApAQCAtMjM3LDExICsyMzcsMTEgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29uZGl0
aW9uRXZlbnRMaXN0ZW5lcjsKIH07CiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZH
U01JTEVsZW1lbnQpCi0gICAgc3RhdGljIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQotICAg
IHN0YXRpYyBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdTTUlMRWxlbWVudChkb3duY2FzdDxTVkdFbGVt
ZW50Pihub2RlKSk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpT
VkdTTUlMRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U1ZH
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NNSUxFbGVtZW50KCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8V2ViQ29yZTo6U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6
OlNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAj
ZW5kaWYgLy8gU1ZHU01JTEVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCBmOWQwZTNhYjg4
NWE4MDQ0NTc5MmM2YjI3NDc0MmU2OTNjNmEwZjM0Li4wNDY0ODI3NTAxZjM5NTUzZjVjYTNiNzNk
MmFmOGExODU3ZjE5MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMjU3LDEyICsyNTcsMTIgQEAg
cHVibGljOgogICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soWz1dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNvbnRleHQpOwogICAgICAgICAgICAg
cG9ydC0+ZW50YW5nbGUoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4oY2hhbm5l
bCkpOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpOworICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAg
ICAgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRoaXMg
c2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KLSAgICAgICAgICAgIEFT
U0VSVCghd29ya2VyR2xvYmFsU2NvcGUtPmlzQ2xvc2luZygpKTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHdvcmtlckdsb2JhbFNjb3BlLT5pc1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPmRpc3Bh
dGNoRXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
d29ya2VyR2xvYmFsU2NvcGUuaXNDbG9zaW5nKCkpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04od29ya2VyR2xvYmFsU2NvcGUuaXNTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQo
Y3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBkZTEyMTRl
NjVlNTcyNGYyNDEzODNmNWZiN2MzNmM2ZWE1NGFmMjM3Li5lMDA5ZTU3NTQyNWRhNDZlNGU2NDdk
YTc4ODdlNjRkMTgxNWQ3ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMTMzLDEwICsxMzMsMTAgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6Y2xvc2UoKQogICAgIC8vIHRhc2tzIHdpdGggaXNDbGVhbnVwVGFzaygpPT10cnVlIHdpbGwg
YmUgZXhlY3V0ZWQuCiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsKICAgICBwb3N0VGFzayh7IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQp
OworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpOworICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAg
IC8vIE5vdGlmeSBwYXJlbnQgdGhhdCB0aGlzIGNvbnRleHQgaXMgY2xvc2VkLiBQYXJlbnQgaXMg
cmVzcG9uc2libGUgZm9yIGNhbGxpbmcgV29ya2VyVGhyZWFkOjpzdG9wKCkuCi0gICAgICAgIHdv
cmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS53b3JrZXJSZXBvcnRpbmdQcm94eSgpLndvcmtlckds
b2JhbFNjb3BlQ2xvc2VkKCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndv
cmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKTsKICAgICB9IH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXgg
NDA0YTIwMTJjMjE5Y2ZjODQ5MzEyY2JlYzIyY2Q5ODNkNWZkYjI1Zi4uNWI1OGE2OWVjZGI4MmM3
ZjcwZmY2MjQzMDFkYTIwN2MxODM0MGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgxLDggKzE4MiwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90
b3BPcmlnaW47CiAgICAgfTsKIAotU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX1RZUEVfQ0FTVFMo
V29ya2VyR2xvYmFsU2NvcGUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZSkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFdvcmtlckdsb2JhbFNjb3BlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXgg
MmJjYWE0YmQ5YzgxYzgzMDJkMWZlMmE2ZTI4Mjg2ZDg4ZWU4ZjcwNi4uMmE1MDE4ODk0OGU4MWU5
ODM3MTQxY2MxNDdkMWZlYTcwYjY4YWQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyKiB3b3JrZXJPYmplY3QpCiAj
ZW5kaWYKIHsKICAgICBBU1NFUlQobV93b3JrZXJPYmplY3QpOwotICAgIEFTU0VSVCgobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAg
ICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUo
KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gdG9Xb3JrZXJHbG9iYWxTY29wZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1
bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCisgICAg
ICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
JiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CiB9CiAKIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93
b3JrZXJPYmplY3QpOwotICAgIEFTU0VSVCgobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dG9Xb3JrZXJHbG9iYWxTY29wZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50
aHJlYWRJRCgpKSk7CisgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJl
YWQoKS50aHJlYWRJRCgpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBz
dGFydE1vZGUpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soWz1dIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoJmNv
bnRleHQpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVz
KCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6
IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIH0pOwogfQog
CkBAIC0yMjQsMTcgKzIyNCwxNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25uZWN0
VG9JbnNwZWN0b3IoV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlYwogICAgIEFTU0VS
VCghbV9wYWdlSW5zcGVjdG9yKTsKICAgICBtX3BhZ2VJbnNwZWN0b3IgPSBwYWdlSW5zcGVjdG9y
OwogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2Nv
cGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5k
KCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CiAgICAgfSwgV29ya2VyRGVi
dWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKCkKIHsKLSAgICBtX3BhZ2VJbnNwZWN0b3Ig
PSAwOworICAgIG1fcGFnZUluc3BlY3RvciA9IG51bGxwdHI7CiAgICAgaWYgKG1fYXNrZWRUb1Rl
cm1pbmF0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JE
ZXN0cm95ZWQpOwogICAgIH0sIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUp
OwogfQogCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c2Vu
ZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVy
bjsKICAgICBTdHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpOwogICAg
IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFttZXNzYWdlQ29weV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgdG9Xb3JrZXJHbG9i
YWxTY29wZSgmY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlQ29weSk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJB
Z2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiAgICAgV29ya2VyRGVidWdnZXJBZ2VudDo6aW50ZXJy
dXB0QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhtX3dvcmtlclRocmVhZC5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXgg
MDVjNWZhNGI3M2Y4NjdhNTNjZGZkOTUwNjk5MzZhMTA5NjhhOGYwMS4uOTY0YTBhYWE0N2IzNTYy
ODA5MDQ2ZDU3NjlmMzE1NjNkNzExOGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAKICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVk
ZW50aWFscyhBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKICAgICBvcHRpb25zLnNl
dFNlbmRMb2FkQ2FsbGJhY2tzKFNlbmRDYWxsYmFja3MpOwogCi0gICAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh0b1dvcmtlckdsb2JhbFNjb3BlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRoaXMsIG9wdGlvbnMpOworICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRo
aXMsIG9wdGlvbnMpOwogfQogICAgIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZTQ0MjI1MGEzNDlmYTNjYmE2ZGNmYTZl
ZjAwMDg0YmJiNjYzYjMxOS4uYWRlNTY5OTM0YmY5MjNlYzJjNDk3NWUxYzM0ZmYwNDM5MjUyNzY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjE0LDIxICsy
MTQsMjEgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogICAgICAgICBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyR2xv
YmFsU2NvcGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRl
cm1pbmF0ZSh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCApIHsKLSAgICAgICAgICAgIFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoJmNvbnRl
eHQpOworICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3RvcCB0aGUgZGF0YWJh
c2VzIGFzIHBhcnQgb2Ygc3RvcEFjdGl2ZURPTU9iamVjdHMoKSBiZWxvdz8KICAgICAgICAgICAg
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMod29ya2VyR2xvYmFsU2NvcGUsICZj
bGVhbnVwU3luYyk7CisgICAgICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9w
RGF0YWJhc2VzKCZ3b3JrZXJHbG9iYWxTY29wZSwgJmNsZWFudXBTeW5jKTsKICNlbmRpZgogCi0g
ICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKyAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLnN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKLSAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5ub3RpZnlPYnNlcnZlcnNPZlN0b3AoKTsKKyAg
ICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLm5vdGlmeU9ic2VydmVyc09mU3RvcCgpOwogCiAg
ICAgICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQg
b2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxvbmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRv
IEpTIG9iamVjdHMsCiAgICAgICAgICAgICAvLyB3aGljaCBiZWNvbWUgZGFuZ2xpbmcgb25jZSBI
ZWFwIGlzIGRlc3Ryb3llZC4KLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5yZW1vdmVB
bGxFdmVudExpc3RlbmVycygpOworICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUucmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAg
ICAgICAvLyBXZSB3YWl0IGZvciB0aGUgZGF0YWJhc2UgdGhyZWFkIHRvIGNsZWFuIHVwIGFsbCBp
dHMgc3R1ZmYgc28gdGhhdCB3ZQpAQCAtMjM4LDEwICsyMzgsMTAgQEAgdm9pZCBXb3JrZXJUaHJl
YWQ6OnN0b3AoKQogCiAgICAgICAgICAgICAvLyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQg
dGhlIGVuZCBvZiB0aGUgcXVldWUsIHNvIHRoYXQgd2UgZGVhbAogICAgICAgICAgICAgLy8gd2l0
aCBhbGwgdGhlIGNsZWFudXAgdGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0LgotICAgICAg
ICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3Bl
ID0gdG9Xb3JrZXJHbG9iYWxTY29wZSgmY29udGV4dCk7CisgICAgICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZS5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBzYWZl
IHRvIGNhbGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3RlZCBi
eSBmdW5jdGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIGhh
dmUgY29tcGxldGVkLgotICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVhclNj
cmlwdCgpOworICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLmNsZWFyU2NyaXB0KCk7
CiAgICAgICAgICAgICB9IH0pOwogCiAgICAgICAgIH0gfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKaW5kZXggMzM3Y2RhMTkxOWMyMmQyMzIyZWY3MDgwNDE0MjVmMTk0OGE5YjE3
Yi4uOWM1MGJjZDg0MTRkMmI0MmM2MjExZDdjMzBlNDlhY2RlODYzMGU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMTUwMCwyMiArMTUwMCwyMiBAQCBJRE9NRWxlbWVu
dCogRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RWxlbWVudCogZSkKICAgICBI
UkVTVUxUIGhyOwogICAgIElET01FbGVtZW50KiBkb21FbGVtZW50ID0gMDsKIAotICAgIGlmIChX
ZWJDb3JlOjppczxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+KGUpKSB7CisgICAgaWYgKGlzPFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTEZvcm1FbGVtZW50
KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxGb3JtRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBu
ZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVs
ZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CiAgICAg
ICAgIERPTUhUTUxJRnJhbWVFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJRnJhbWVF
bGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9J
RE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3Jl
OjppczxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTElucHV0RWxl
bWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MSW5wdXRFbGVtZW50KGUpOwogICAgICAgICBo
ciA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikm
ZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3JlOjppczxXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudD4oZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25F
bGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MT3B0aW9uRWxlbWVudCogbmV3RWxlbWVudCA9
IG5ldyBET01IVE1MT3B0aW9uRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5R
dWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CiAgICAgICAgIERPTUhUTUxT
ZWxlY3RFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxTZWxlY3RFbGVtZW50KGUpOwog
ICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwg
KHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJDb3JlOjppczxXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50PihlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8V2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTFRleHRBcmVhRWxlbWVu
dCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MVGV4dEFyZWFFbGVtZW50KGUpOwogICAgICAgICBo
ciA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikm
ZG9tRWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChlLT5pc0hUTUxFbGVtZW50KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggZGRkN2JkNmQ5MDQ1NmM1MjRiOTQzYmNj
NGQzY2VkOTBkZDVlZTE5NC4uODMxNjYyOWJjZWQ0ZGI3NjRhOWI3ZjRmMmIxNGMxY2VjNTAxYmY2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KQEAgLTM5LDE3ICszOSwxNyBA
QCAtIChXS0RPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKIHsK
ICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBleGNlcHRpb24uCiAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTUVs
ZW1lbnQoV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCkuY3JlYXRl
RWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01F
bGVtZW50KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZUVsZW1lbnQo
dGFnTmFtZSwgZWMpLmdldCgpKTsKIH0KIAogLSAoV0tET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6
KE5TU3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01UZXh0KFdlYkNv
cmU6OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZVRleHROb2RlKGRh
dGEpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NVGV4dChkb3duY2FzdDxXZWJD
b3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKSk7CiB9CiAK
IC0gKFdLRE9NRWxlbWVudCAqKWJvZHkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NRWxl
bWVudChXZWJDb3JlOjpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5ib2R5KCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01FbGVtZW50KGRvd25jYXN0PFdlYkNvcmU6OkRv
Y3VtZW50PigqX2ltcGwpLmJvZHkoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01F
bGVtZW50Lm1tCmluZGV4IGNmNzFiMWEyMWFmMDQzMTQzNTE4ZWY5NzA2MmE0YWM5YjQ0ZmZjMTQu
LmE1MzQ1MGZkMjc3ZWNjNTdiYmJmMDA5M2JjY2I1ZTI4MTE3YWU4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NRWxlbWVudC5tbQpAQCAtMzUsMjQgKzM1LDI0IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S0RPTUVsZW1lbnQKIAogLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRl
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmRvd25jYXN0PFdlYkNvcmU6OkVsZW1lbnQ+KCpfaW1w
bCkuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6
OkVsZW1lbnQ+KCpfaW1wbCkuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50PigqX2ltcGwpLmdldEF0dHJpYnV0ZShh
dHRyaWJ1dGUpOworICAgIHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50PigqX2ltcGwp
LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCiAtICh2b2lkKXNldEF0dHJpYnV0ZTooTlNT
dHJpbmcgKiluYW1lIHZhbHVlOihOU1N0cmluZyAqKXZhbHVlCiB7CiAgICAgLy8gRklYTUU6IERv
IHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9uLgogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4oKl9pbXBsKS5z
ZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGVjKTsKKyAgICBkb3duY2FzdDxXZWJDb3JlOjpFbGVt
ZW50PigqX2ltcGwpLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZWMpOwogfQogCiAtIChOU1N0
cmluZyAqKXRhZ05hbWUKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6
RWxlbWVudD4oKl9pbXBsKS50YWdOYW1lKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6
OkVsZW1lbnQ+KCpfaW1wbCkudGFnTmFtZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
VGV4dC5tbQppbmRleCBkOTFlODEyMDQ2MTYyNjI2ZTYyYzk0ZjJiM2Q5NWJiNDdiZTAzYjQxLi5l
MzBhZTNjZDI0YThkMDRlNGUyYzhmZDdhYzk4NzQ1ZGM5YWQyMTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVRleHQubW0KQEAgLTM1LDE0ICszNSwxNCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01UZXh0
CiAKIC0gKE5TU3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBXZWJDb3JlOjpkb3duY2FzdDxX
ZWJDb3JlOjpUZXh0PigqX2ltcGwpLmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8V2ViQ29y
ZTo6VGV4dD4oKl9pbXBsKS5kYXRhKCk7CiB9CiAKIC0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcg
KilkYXRhCiB7CiAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0aW9u
LgogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgV2ViQ29yZTo6ZG93bmNhc3Q8
V2ViQ29yZTo6VGV4dD4oKl9pbXBsKS5zZXREYXRhKGRhdGEsIGVjKTsKKyAgICBkb3duY2FzdDxX
ZWJDb3JlOjpUZXh0PigqX2ltcGwpLnNldERhdGEoZGF0YSwgZWMpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>