<?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>224162</bug_id>
          
          <creation_ts>2021-04-03 15:03:00 -0700</creation_ts>
          <short_desc>[JSC] Shrink some of Vectors in JSC</short_desc>
          <delta_ts>2021-04-05 21:26:16 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746820</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 15:03:00 -0700</bug_when>
    <thetext>[JSC] Shrink some of Vectors in JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746821</commentid>
    <comment_count>1</comment_count>
      <attachid>425110</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 15:06:55 -0700</bug_when>
    <thetext>Created attachment 425110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746822</commentid>
    <comment_count>2</comment_count>
      <attachid>425111</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 15:09:27 -0700</bug_when>
    <thetext>Created attachment 425111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746824</commentid>
    <comment_count>3</comment_count>
      <attachid>425113</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 16:14:55 -0700</bug_when>
    <thetext>Created attachment 425113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746825</commentid>
    <comment_count>4</comment_count>
      <attachid>425113</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-03 16:26:06 -0700</bug_when>
    <thetext>Comment on attachment 425113
Patch

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

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:137
&gt; +        result.shrinkToFit();

For cases like this, might it make sense to have

&gt; Source/JavaScriptCore/heap/JITStubRoutineSet.cpp:129
&gt;      m_routines.shrink(dstIndex);
&gt; +    m_routines.shrinkToFit();

Could these be combined into to just m_routines.shrinkCapacity(dstIndex)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746828</commentid>
    <comment_count>5</comment_count>
      <attachid>425115</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 16:40:03 -0700</bug_when>
    <thetext>Created attachment 425115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746833</commentid>
    <comment_count>6</comment_count>
      <attachid>425113</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 17:31:04 -0700</bug_when>
    <thetext>Comment on attachment 425113
Patch

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

&gt;&gt; Source/JavaScriptCore/heap/JITStubRoutineSet.cpp:129
&gt;&gt; +    m_routines.shrinkToFit();
&gt; 
&gt; Could these be combined into to just m_routines.shrinkCapacity(dstIndex)?

Sounds good. Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746834</commentid>
    <comment_count>7</comment_count>
      <attachid>425117</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 17:32:34 -0700</bug_when>
    <thetext>Created attachment 425117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746839</commentid>
    <comment_count>8</comment_count>
      <attachid>425119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 18:21:46 -0700</bug_when>
    <thetext>Created attachment 425119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746840</commentid>
    <comment_count>9</comment_count>
      <attachid>425120</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 18:44:43 -0700</bug_when>
    <thetext>Created attachment 425120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746841</commentid>
    <comment_count>10</comment_count>
      <attachid>425121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 18:51:55 -0700</bug_when>
    <thetext>Created attachment 425121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746844</commentid>
    <comment_count>11</comment_count>
      <attachid>425121</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-03 19:43:40 -0700</bug_when>
    <thetext>Comment on attachment 425121
Patch

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

&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp:44
&gt; +GetterSetterAccessCase::GetterSetterAccessCase(VM&amp; vm, JSCell* owner, AccessType accessType, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet, JSObject* customSlotBase, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)

Should that be a RefPtr&lt;&gt;&amp;&amp;?

&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:59
&gt; +        JSObject* customSlotBase, Optional&lt;DOMAttributeAnnotation&gt;, RefPtr&lt;PolyProtoAccessChain&gt;);

RefPtr&lt;&gt;&amp;&amp;?

&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:62
&gt; +        const ObjectPropertyConditionSet&amp;, RefPtr&lt;PolyProtoAccessChain&gt;, bool viaProxy = false,

Ditto

&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:73
&gt; +    GetterSetterAccessCase(VM&amp;, JSCell*, AccessType, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, bool viaProxy, WatchpointSet* additionalSet, JSObject* customSlotBase, RefPtr&lt;PolyProtoAccessChain&gt;);

Ditto

&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.cpp:36
&gt; +IntrinsicGetterAccessCase::IntrinsicGetterAccessCase(VM&amp; vm, JSCell* owner, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)

Ditto

&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.cpp:42
&gt; +std::unique_ptr&lt;AccessCase&gt; IntrinsicGetterAccessCase::create(VM&amp; vm, JSCell* owner, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)

Ditto

&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.h:45
&gt; +    static std::unique_ptr&lt;AccessCase&gt; create(VM&amp;, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt;);

Ditto

&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.h:52
&gt; +    IntrinsicGetterAccessCase(VM&amp;, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt;);

Ditto

&gt; Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp:41
&gt; +std::unique_ptr&lt;AccessCase&gt; ProxyableAccessCase::create(VM&amp; vm, JSCell* owner, AccessType type, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746845</commentid>
    <comment_count>12</comment_count>
      <attachid>425121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 19:54:53 -0700</bug_when>
    <thetext>Comment on attachment 425121
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp:44
&gt;&gt; +GetterSetterAccessCase::GetterSetterAccessCase(VM&amp; vm, JSCell* owner, AccessType accessType, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet, JSObject* customSlotBase, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)
&gt; 
&gt; Should that be a RefPtr&lt;&gt;&amp;&amp;?

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:59
&gt;&gt; +        JSObject* customSlotBase, Optional&lt;DOMAttributeAnnotation&gt;, RefPtr&lt;PolyProtoAccessChain&gt;);
&gt; 
&gt; RefPtr&lt;&gt;&amp;&amp;?

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:62
&gt;&gt; +        const ObjectPropertyConditionSet&amp;, RefPtr&lt;PolyProtoAccessChain&gt;, bool viaProxy = false,
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:73
&gt;&gt; +    GetterSetterAccessCase(VM&amp;, JSCell*, AccessType, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, bool viaProxy, WatchpointSet* additionalSet, JSObject* customSlotBase, RefPtr&lt;PolyProtoAccessChain&gt;);
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.cpp:36
&gt;&gt; +IntrinsicGetterAccessCase::IntrinsicGetterAccessCase(VM&amp; vm, JSCell* owner, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.cpp:42
&gt;&gt; +std::unique_ptr&lt;AccessCase&gt; IntrinsicGetterAccessCase::create(VM&amp; vm, JSCell* owner, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.h:45
&gt;&gt; +    static std::unique_ptr&lt;AccessCase&gt; create(VM&amp;, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt;);
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.h:52
&gt;&gt; +    IntrinsicGetterAccessCase(VM&amp;, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&amp;, JSFunction* intrinsicFunction, RefPtr&lt;PolyProtoAccessChain&gt;);
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp:41
&gt;&gt; +std::unique_ptr&lt;AccessCase&gt; ProxyableAccessCase::create(VM&amp; vm, JSCell* owner, AccessType type, CacheableIdentifier identifier, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet&amp; conditionSet, bool viaProxy, WatchpointSet* additionalSet, RefPtr&lt;PolyProtoAccessChain&gt; prototypeAccessChain)
&gt; 
&gt; Ditto

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746846</commentid>
    <comment_count>13</comment_count>
      <attachid>425122</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 19:57:22 -0700</bug_when>
    <thetext>Created attachment 425122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746851</commentid>
    <comment_count>14</comment_count>
      <attachid>425124</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 21:52:08 -0700</bug_when>
    <thetext>Created attachment 425124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746997</commentid>
    <comment_count>15</comment_count>
      <attachid>425121</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-05 10:15:45 -0700</bug_when>
    <thetext>Comment on attachment 425121
Patch

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

&gt; Source/JavaScriptCore/bytecode/PolyProtoAccessChain.cpp:80
&gt; +    return adoptRef(*new PolyProtoAccessChain(WTFMove(chain)));

It&apos;s unfortunate that we are implementing a tryCreate() function here but we&apos;re going to crash if new fails.  Can we use a placement new using tryMalloc so that we can fail without crashing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747001</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-05 10:23:40 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #15)
&gt; Comment on attachment 425121 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425121&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/PolyProtoAccessChain.cpp:80
&gt; &gt; +    return adoptRef(*new PolyProtoAccessChain(WTFMove(chain)));
&gt; 
&gt; It&apos;s unfortunate that we are implementing a tryCreate() function here but
&gt; we&apos;re going to crash if new fails.  Can we use a placement new using
&gt; tryMalloc so that we can fail without crashing?

Make that tryFastMalloc().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747007</commentid>
    <comment_count>17</comment_count>
      <attachid>425121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 10:34:11 -0700</bug_when>
    <thetext>Comment on attachment 425121
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/PolyProtoAccessChain.cpp:80
&gt;&gt;&gt; +    return adoptRef(*new PolyProtoAccessChain(WTFMove(chain)));
&gt;&gt; 
&gt;&gt; It&apos;s unfortunate that we are implementing a tryCreate() function here but we&apos;re going to crash if new fails.  Can we use a placement new using tryMalloc so that we can fail without crashing?
&gt; 
&gt; Make that tryFastMalloc().

This tryCreate has meaning: it fails when the passed argument meets particular condition.
Returning nullptr when OOM will break our IC&apos;s semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747021</commentid>
    <comment_count>18</comment_count>
      <attachid>425121</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-05 11:15:02 -0700</bug_when>
    <thetext>Comment on attachment 425121
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecode/PolyProtoAccessChain.cpp:80
&gt;&gt;&gt;&gt; +    return adoptRef(*new PolyProtoAccessChain(WTFMove(chain)));
&gt;&gt;&gt; 
&gt;&gt;&gt; It&apos;s unfortunate that we are implementing a tryCreate() function here but we&apos;re going to crash if new fails.  Can we use a placement new using tryMalloc so that we can fail without crashing?
&gt;&gt; 
&gt;&gt; Make that tryFastMalloc().
&gt; 
&gt; This tryCreate has meaning: it fails when the passed argument meets particular condition.
&gt; Returning nullptr when OOM will break our IC&apos;s semantics.

ok, thanks for clarifying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747272</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 21:25:42 -0700</bug_when>
    <thetext>Committed r275490 (236147@main): &lt;https://commits.webkit.org/236147@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747273</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 21:26:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/76251180&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425110</attachid>
            <date>2021-04-03 15:06:55 -0700</date>
            <delta_ts>2021-04-03 15:09:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403150654.patch</filename>
            <type>text/plain</type>
            <size>30160</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi4xOGYzNTVkMDg2MzUwNzZh
MDJhZGQyODZjNjkyOTgyZjdlZWFjZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgWFhYU3RhdHVz
OjpzaHJpbmtUb0ZpdCB0byBzaHJpbmsgdW5kZXJseWluZyBkeW5hbWljIFZlY3RvcnMuCisgICAg
ICAgIDIuIFJlcGxhY2UgdGllclVwSW5Mb29wSGllcmFyY2h5J3MgVmVjdG9yIHdpdGggUmVmQ291
bnRlZEFycmF5IHNpbmNlIGl0IGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9ubHkgZGF0YS4K
KyAgICAgICAgMy4gVXNlIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldCBm
b3IgU3RyaW5nVGFibGVzIHNpbmNlIHRoaXMgaXMgY29uc3RydWN0ZWQtb25jZS1sb29rdXAtb25s
eSBkYXRhLiBXZSBhbHNvIGFkZAorICAgICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQgc3VwcG9ydCBmb3IgQ2FjaGVkVHlwZXMuCisgICAgICAgIDQuIFVzZSBy
ZXNpemVUb0ZpdCBmb3IgU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBhbmQgU3dpdGNoSnVtcFRhYmxl
cy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUv
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAg
ICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlND
OjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3Rh
dHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpt
ZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6bWVy
Z2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mU3RhdHVz
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVG
b3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAg
ICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6dGllclVwSW5M
b29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVu
KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOgorICAgICAgICAqIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6
ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAgICAgICAgKiBqaXQvQ2Fs
bEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6
OnNocmlua1RvRml0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKwogMjAy
MS0wNC0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAg
ICAgUmVkdWNlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGNvdW50IGVtaXR0ZWQgZm9yIGBjbGFzcyBl
eHRlbmRzYApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCAwMWRkZjU1Mjg4YjdkN2ZkOTc0MzRjY2IyOWQ5YjEwODE4NzhiZjMwLi42
M2IyYjJhOTg1MDEzYWEzZDk2NTZmMmM4ZDE4MDgzODE4NzE2YzQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIxLTA0LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gU2hyaW5rIHNvbWUgb2YgVmVjdG9ycyBpbiBKU0MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByYmVnaW4gYW5kIHJlbmQgdG8g
bWFrZSBSZWZDb3VudGVkQXJyYXkgdXNhYmxlIGZvciBWZWN0b3IgY2xpZW50cyB3aG8gdXNlIHRo
ZXNlIGZlYXR1cmVzLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWRBcnJheS5oOgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmJlZ2luKToKKyAgICAgICAgKFdURjo6UmVmQ291bnRl
ZEFycmF5OjplbmQpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmJlZ2luIGNvbnN0
KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjplbmQgY29uc3QpOgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRB
cnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6cmJlZ2luIGNvbnN0
KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyZW5kIGNvbnN0KToKKwogMjAyMS0w
NC0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmFibGUgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVkIGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAK
aW5kZXggNjRlMmEwMjg2ZTg1N2ExYzYzNDQ1NzBhNTNkY2RhNzhmZGRiYTMyMy4uMzZjMzQwOWRi
YjdmNDdmY2RmMmE0ZGM4ZWI1MzI2ZGY3YmRlOGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI4MSw2ICsyODEsNyBAQCB2b2lk
IENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRG
cmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxlRGF0YSkK
IHsKICAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVE
YXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhLT5zaHJpbmtUb0ZpdCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCmluZGV4IGFlN2E0
ZjdjNzQyNzkzNjY0ZTY5N2E1ZjVkY2M0MWU0YTAzODJjYzEuLmQ1NGZhMjNiZWMzZDM1MGM2Yzhl
YzAyMWU4NDc2Y2E1NDk4NDI5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtNDEsNiArNDEs
MTEgQEAgYm9vbCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBD
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIHZhcmkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNW
YXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOwor
fQorCiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTEw
OSw2ICsxMTQsNyBAQCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaQogICAgICAgICAgICAgICAgIHJl
dHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAq
c3R1YkluZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTEsNiArMTk3LDcgQEAgdm9pZCBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAg
IHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNT
bG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0No
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5kZXggZTY3YjYzODM4ODQ5ZjUyM2VmYjY5NWVmMWVk
YjA5ODdiNjJmNTgxZi4uYTk4OGYyYWY4YjFiYjUyYzVhNDNhYzg1MWZmYTIyNjhmZGYzNDBlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAogICAgIGJvb2wgYXBw
ZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMjM0MTk4
YTlhZTU0MGNmMzI1NjRiZDU3YWY0MGUwODIzZWMwNDBkLi4yOGNhOWVjNWZmZGIyNWUyMWVkNjhl
MTNhYTk2YzI5OTU3ZWM0NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZ3Jvdyhjb3VudCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMucmVzaXplVG9GaXQoY291bnQp
OwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpp
dGVyYXRvciBwdHIgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkp
Lm9mZnNldFRhYmxlLmJlZ2luKCk7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwpAQCAtNDUwLDcg
KzQ1MCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRh
YmxlcygpKSB7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuZ3Jv
dyhjb3VudCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMucmVz
aXplVG9GaXQoY291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHNvdXJj
ZVRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShpKTsKICAgICAgICAg
ICAgICAgICBTaW1wbGVKdW1wVGFibGUmIGRlc3RUYWJsZSA9IG1fcmFyZURhdGEtPm1fc3dpdGNo
SnVtcFRhYmxlc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlTdGF0dXMuY3BwCmluZGV4IDkyMzE0N2Q2MzNlN2YzM2ZkMDU0NGM2NDU0YzZjZTIxNGRh
MGMzMTEuLjAxOTA5YTFlMTMwYmFiMDI0NDkwOTU2ZjFkYzM5ZDVkOTRmOTExZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApAQCAt
NDAsNiArNDAsMTEgQEAgYm9vbCBEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJp
YW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpzaHJp
bmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBEZWxldGVC
eVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFz
ZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTEyOSw2ICsxMzQsNyBAQCBEZWxldGVCeVN0YXR1cyBE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2so
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQo
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIxNCw2ICsyMjAsNyBAQCB2
b2lkIERlbGV0ZUJ5U3RhdHVzOjptZXJnZShjb25zdCBEZWxldGVCeVN0YXR1cyYgb3RoZXIpCiAg
ICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQo
KTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAppbmRleCBi
MDc2YmYyNjllYzc4MGJlODZlZDkzZTRlMTM2NzY5Y2ZhZjdjMzFiLi41YmE4MDNhYTk3N2ZmM2Rj
NWJlZTU4N2I0NzcxYjAwNDE2YmJkNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBEZWxldGVC
eVN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwogCiAgICAgYm9vbCBhcHBl
bmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IGQ5NTcyMWVlYjAy
ZjQ4MzUzNDE5M2JmYjdlN2VkYzUwYTBhODMzNjcuLmJkNzRmYjY0ZjM0MTE1MTcwYTAxYzE2MThi
ODVlNDdlMDQ3NmViNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmNwcApAQCAtNDUsNiArNDUsMTEgQEAgYm9vbCBHZXRCeVN0YXR1czo6YXBwZW5k
VmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5k
SUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIEdldEJ5U3Rh
dHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQor
CiBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBWTSYgdm0g
PSBwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMzM5LDYgKzM0NCw3IEBAIEdldEJ5U3RhdHVzIEdl
dEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAg
ICAgICAgICAgIH0gfQogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICByZXN1bHQuc2hyaW5r
VG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgICAgIApAQCAtNDMz
LDYgKzQzOSw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IFN0
cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCoKICAgICAgICAgICAgIHJldHVybiBH
ZXRCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCisgICAgcmVzdWx0
LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpAQCAtNDk0LDYgKzUwMSw3IEBAIHZvaWQgR2V0QnlTdGF0dXM6Om1lcmdlKGNvbnN0IEdl
dEJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZh
cmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQor
ICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgTW9kdWxlTmFtZXNwYWNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlTdGF0dXMuaAppbmRleCBkM2IxYzYyNmRjYWQzNzlhOWZkOGJiMDQ0NGNhMWZkN2NiOGJmZjI2
Li4yNDM3MzBmZGUzM2FlNzVlZjFmNjM2YzQxN2Y4OGI4ZTk5NmY1MmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaApAQCAtMTIzLDYgKzEyMyw3IEBA
IGNsYXNzIEdldEJ5U3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7IC8vIFJl
dHVybiB0cnVlIGlmIHRoaXMgZ2V0cyB0byBsaXZlLgogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50
KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKaW5kZXggOTU3ODMwMTg2YzllZTljMjQxMTli
ZjQ3ZGJkZTljNzRjZWNmYWZjOC4uNDkzOGE2M2MxYjJhZWM5MGJmZDA0NmNmNTc0OTZjODUzMTNh
MjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0
YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgSW5CeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50
KGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVz
VmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBJbkJ5SWRTdGF0dXM6OnNo
cmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKICNpZiBF
TkFCTEUoSklUKQogSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKQEAg
LTIwMCw2ICsyMDUsNyBAQCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1
YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCkBAIC0yMzMsNiArMjM5LDcgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6
Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCmluZGV4IDBmNDdmZGY3Y2I2
YmQ4N2RhMmViNzM1MzQwMGNiYWNjNDk1MjRjZTYuLjdmMTVmYzVlNDYxYTlhMDJlNGY3YmRiNjFm
ODc5NmNmYjc2Njk1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkU3RhdHVzLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBjbGFzcyBJbkJ5SWRTdGF0dXMgZmluYWwg
ewogICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogI2VuZGlmCiAgICAgYm9vbCBhcHBlbmRW
YXJpYW50KGNvbnN0IEluQnlJZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAK
ICAgICBTdGF0ZSBtX3N0YXRlIHsgTm9JbmZvcm1hdGlvbiB9OwogICAgIFZlY3RvcjxJbkJ5SWRW
YXJpYW50LCAxPiBtX3ZhcmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCmluZGV4IGNmODU4ZmQzOTQ2ODBhNWVlYTkwMDhi
YTcwZTczN2IxODQyZmRiNmMuLjczYzc4MTliNTE2NzY2OTM3ODMxMzJkOTk4ZmQ4ZTY0MWY1Y2Yx
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9m
U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5jcHAKQEAgLTM5LDYgKzM5LDExIEBAIHZvaWQgSW5zdGFuY2VPZlN0YXR1czo6YXBw
ZW5kVmFyaWFudChjb25zdCBJbnN0YW5jZU9mVmFyaWFudCYgdmFyaWFudCkKICAgICBhcHBlbmRJ
Q1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgSW5zdGFuY2VP
ZlN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsK
K30KKwogSW5zdGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBJQ1N0YXR1c01hcCYgaW5mb01hcCwgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4KQogewpAQCAtOTYsNiArMTAxLDcgQEAgSW5zdGFuY2VPZlN0YXR1cyBJ
bnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwKICAgICAgICAgICAgIGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6SW5zdGFuY2VP
ZkhpdCkpOwogICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKaW5kZXggODVjNDVjYzhh
MTljMmY5ZDM0MWNmNWIyZTBjZTBiYmExZWI1MWEyMi4uYmE5OWM2Nzk4YTY1ZmMxYWUwZDNmMjYy
OTYyYjQ1ZTY0YWUwZjQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RhbmNlT2ZTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgSW5zdGFuY2VP
ZlN0YXR1cyBmaW5hbCB7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRWYXJpYW50KGNvbnN0
IEluc3RhbmNlT2ZWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIAogICAg
IFN0YXRlIG1fc3RhdGU7CiAgICAgVmVjdG9yPEluc3RhbmNlT2ZWYXJpYW50LCAyPiBtX3Zhcmlh
bnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCmluZGV4IGMx
NTlhYzMxN2E5Nzg0NmFhOGRkNjYxZDY4OTdjMDVhNTU1OWFlOWIuLjVmYjg0YTFlNTRlZGViZjBi
YWI2MThmZjdiODIzOWZiYTliMzJmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTdHJpbmdKdW1wVGFibGUgewotICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zm
c2V0VGFibGU7CisgICAgICAgIHVzaW5nIFN0cmluZ09mZnNldFRhYmxlID0gTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9j
YXRpb24+OwogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRGVm
YXVsdDsgLy8gRklYTUU6IGl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvIHN0b3JlIHRoaXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAK
aW5kZXggNmIwYjg3OGNlNzEwOGViMDVhOTAyNWExOGY4MTU4MTk0MDBkZTQ1My4uZTVkMTMyYjYy
ODcyMDJkMGQyNTQ2MGY2OWJkNTY4YzBiNGFlYjE5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtNDMsNiArNDMsMTEgQEAgYm9v
bCBQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJp
YW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFu
dCk7CiB9CiAKK3ZvaWQgUHV0QnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFy
aWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IHBy
b2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0yMjksNiArMjM0LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSk7CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAgICAgCkBAIC0zNzEsNiArMzc3LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnUKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwog
ICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogI2VuZGlmCkBAIC00MzcsNiArNDQ0LDcgQEAgdm9pZCBQdXRCeUlkU3RhdHVzOjptZXJn
ZShjb25zdCBQdXRCeUlkU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFy
aWFudChvdGhlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAg
ICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgY2FzZSBUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgKaW5kZXggODExY2M3ZjcwZjk5NTNiYThmMjdkN2M0NjM1NTFmNjM4
MDM0YmUxOC4uODc4ZTI1MmRiNjlhYzU3MTNkYzhlOGY4YjY0NDAwMGNhZTYzMGIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCkBAIC0xMzUs
NiArMTM1LDcgQEAgY2xhc3MgUHV0QnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIFB1dEJ5
SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCBCeXRlY29kZUluZGV4LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAgICAgCiAgICAgU3Rh
dGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8UHV0QnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJh
bmRTdGF0dXMuY3BwCmluZGV4IGRlNDhmNzcwNGVkODYwMzdjODQzMjUwNDIyZmM5ZGQ2MmJlZDVk
OTYuLjgzMDdhMzQ2MWM5Y2U5NTU0NjAwMTJlZjVjNWYzMzdlNjJhY2Y0MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0
dXMuY3BwCkBAIC00MSw2ICs0MSwxMSBAQCBib29sIFNldFByaXZhdGVCcmFuZFN0YXR1czo6YXBw
ZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50KQogICAgIHJl
dHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3Zv
aWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50
cy5zaHJpbmtUb0ZpdCgpOworfQorCiBTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRp
ZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5t
X2xvY2spOwpAQCAtMTEzLDYgKzExOCw3IEBAIFNldFByaXZhdGVCcmFuZFN0YXR1cyBTZXRQcml2
YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9u
KHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlu
a1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTUsNiArMjAx
LDcgQEAgdm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNvbnN0IFNldFByaXZhdGVC
cmFuZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJW
YXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0K
KyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBMaWtl
bHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IDlhODM0Zjg1Y2MwZWM3Njk5ZmY0Mzkz
MWZhOWU2ZjYxNWM4ZjFlZTQuLjQ4ZWE2N2U0NDJmYTVkMWE5OTllNjcxYWZkNzYyOWE2NTQ4MmZl
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRl
QnJhbmRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7CiAKICAgICBib29sIGFwcGVu
ZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IGIzZjRlZjNlZDQ1YTk4OGYzMzdkNDI0MzJiYWY2NmIzMDZmMzE0NTUuLjI0ODY5Mzc0NzExNzhh
ZGVjZDZmYjZlOTZhN2I5NWIxOTI3YjdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00Miw4ICs0Miw4IEBACiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PHd0Zi9CaXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgpAQCAtODAsNyArODAsNyBAQCBzdHJ1
Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNl
dDsKICAgICB9OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zm
c2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHVzaW5nIFN0cmluZ09mZnNldFRh
YmxlID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+OwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRh
YmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFs
dWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgKaW5kZXggYTM3ODk4OTIzN2NkNGIxZjYzYmI3ZDNkOTVjMDc2ODQ3MmUyNWFiZC4uNWFl
YmJmYWQ0ZTU5MDI3ZGZkYjg3OGViMjAyZTNiZjk5MDkyODY2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBjbGFzcyBKSVRDb2RlIGZp
bmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogICAgIC8vCiAgICAgLy8gVGhlIGtleSBtYXkg
bm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NSIEVudHJ5IGJ1dCB0aGUgbGlzdCBpbiB0aGUg
dmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRvIGJlIHVzYWJsZSBmb3IgT1NSIEVudHJ5Lgot
ICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiB0aWVyVXBJ
bkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBSZWZDb3VudGVkQXJy
YXk8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKIAogICAgIC8vIE1hcCBl
YWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NSRW50ZXIgdG8gaXRzIHN0cmVhbSBpbmRl
eC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkPiBieXRlY29kZUluZGV4VG9T
dHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggYmQxZDhhMDcy
NjYyY2MzNTNhNDQ3YzA1YmI2ZjFlNDBlOTlkYmNiMi4uYWFlYTU4NGIwNjIwYzRhM2UxODQ1ZWYx
YmNhOTVmYTIzM2YwMTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKQEAgLTEw
Niw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBs
YW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFRy
eVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5VG9UaWVyVXAoYm9vbCB3aWxsVHJ5VG9U
aWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxsVHJ5VG9UaWVyVXA7IH0KIAotICAgIEhh
c2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiYgdGllclVwSW5Mb29w
SGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7IH0KKyAgICBIYXNo
TWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4mIHRpZXJV
cEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGllclVwSW5Mb29wSGllcmFyY2h5OyB9CiAg
ICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+JiB0aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlcygpIHsg
cmV0dXJuIG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7IH0KIAogICAgIGVudW0gU3RhZ2Ug
eyBQcmVwYXJpbmcsIENvbXBpbGluZywgUmVhZHksIENhbmNlbGxlZCB9OwpAQCAtMTU5LDcgKzE1
OSw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewog
ICAgIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIG1fZ2xvYmFsUHJvcGVydGllczsKICAgICBSZWNv
cmRlZFN0YXR1c2VzIG1fcmVjb3JkZWRTdGF0dXNlczsKIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJ
bmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsKKyAg
ICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4g
bV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+IG1fdGll
clVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBTdGFnZSBtX3N0YWdlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAKaW5kZXggZmExM2Y5NWU1Y2VlZDM0ZDY2NDY4NmZjZjYzMjVjODc2YjljMTU1OC4u
YjNhMzAzODE0YmE5NjU1MWNiYWFmZjdmNWEyMzAyMjhjOTEyNzRhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdGll
clVwQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4u
dGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgV1RGTW92ZSh0aWVyVXBDYW5k
aWRhdGVzKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGll
cmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgdGllclVwQ2FuZGlkYXRlcyk7CiAgICAgICAgIH0KICAg
ICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0V2lsbFRyeVRvVGllclVwKHRydWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnlCaXRzLmgKaW5kZXggYTM5YjE0M2Y3NzMwMTZhM2I1ZGFlYzgzNWYzMzE5MzdlZDgzZTE5My4u
MTgxYjQ5YjgwNjhiOTY1Y2I4Mzc5NThkZTBjMTZhMTBiYTEyNzlhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKQEAgLTIyMiw3ICsyMjIs
NyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBW
ZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBWZWN0b3I8U2VnbWVudCwgMCwgQ3Jhc2hP
bk92ZXJmbG93LCAyPiBtX3NlZ21lbnRzOwogICAgIHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0
aW5lU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0
LmNwcAppbmRleCBhOTFlOTg4YjE4OTViNWZlNGY4MWRhNzc3OTJiMTNiNWI0OTMyMzNlLi5iMmFi
YjgzZTU1OWUxNjA2NmJkMTc2YmRlMmVmMGEyMTljMmVkODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkBAIC0xMjYsNiArMTI2LDcg
QEAgdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJv
dXRpbmVzKCkKICAgICAgICAgcm91dGluZS5yb3V0aW5lLT5kZWxldGVGcm9tR0MoKTsKICAgICB9
CiAgICAgbV9yb3V0aW5lcy5zaHJpbmsoZHN0SW5kZXgpOworICAgIG1fcm91dGluZXMuc2hyaW5r
VG9GaXQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAppbmRleCA3MjAxZWUxY2Yz
MWU1MjZjN2M3NDUwMDVmM2VhZTViNGUyYWM5OTlhLi5hNmRlMmE0Yzc2OGJlMTE4OTBkNjcyOTRk
NGQ3MzFlYmM3NzJjZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nh
bGxGcmFtZVNodWZmbGVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlRGF0YS5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
cnVjdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgeworICAgICAgICBhcmdzLnNo
cmlua1RvRml0KCk7CisgICAgfQorCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAg
ICAgdW5zaWduZWQgbnVtTG9jYWxzIHsgVUlOVF9NQVggfTsKICAgICB1bnNpZ25lZCBudW1QYXNz
ZWRBcmdzIHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAppbmRleCA3YmEyNzFkOGM2YjNmMTkwNjYyYTAxYmVmOGUzMWQyMTFjOGNj
MmVhLi42OTI5MDZhMjBhYWMwNDA1MjEyNjMzZDNmNThkZmJiMjUyNWIxNDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Z0ltcGwuaD4KIApAQCAtNjY5LDEwICs2NzAsMTAgQEAgY2xhc3MgQ2FjaGVkUGFpciA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8c3RkOjpwYWlyPFNvdXJjZVR5cGU8Rmlyc3Q+LCBTb3VyY2VUeXBlPFMK
ICAgICBTZWNvbmQgbV9zZWNvbmQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+
PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0
eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4K
LWNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1h
cDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+LCB0eXBl
bmFtZSBUYWJsZVRyYWl0cyA9IFdURjo6SGFzaFRhYmxlVHJhaXRzPgorY2xhc3MgQ2FjaGVkSGFz
aE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5
PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRz
QXJnLCBUYWJsZVRyYWl0cz4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBW
PgotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OworICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywg
S2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzPjsKIAogcHVibGljOgog
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1hcDxTb3VyY2VUeXBlPEtl
eT4sIFNvdXJjZVR5cGU8VmFsdWU+PiYgbWFwKQpAQCAtNjk2LDYgKzY5Nyw5IEBAIGNsYXNzIENh
Y2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VU
eXBlPEtleT4sIFNvdXJjCiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFBhaXI8S2V5LCBWYWx1ZT4+
IG1fZW50cmllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIE1h
cHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+PgordXNpbmcgQ2Fj
aGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwID0gQ2FjaGVkSGFzaE1h
cDxLZXksIFZhbHVlLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgV1RG
OjpNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hUYWJsZVRyYWl0cz47CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2UgOiBw
dWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VD4gewogcHVibGljOgpAQCAtOTEwLDcgKzkxNCw3
IEBAIGNsYXNzIENhY2hlZFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU+IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFz
aE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4sIFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlOjogT2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFibGU7CisgICAgQ2FjaGVkTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRTdHJpbmdJ
bXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uPiBtX29mZnNldFRh
YmxlOwogfTsKIAogY2xhc3MgQ2FjaGVkQml0VmVjdG9yIDogcHVibGljIFZhcmlhYmxlTGVuZ3Ro
T2JqZWN0PEJpdFZlY3Rvcj4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCA1NWNhOTgx
MzEzOGIyNjIwMTAzNDk5MDdjMjU2OWZlYzJkYjE0YTFjLi5kY2EzODM0NDNmODFiMDk3NGZjNTlk
NjQ1OTA0MDI2NmY4MzJkYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVk
QXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNTAsNiAr
NTAsMTEgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBlbnVtIENvbW1vbkNvcHlDb25z
dHJ1Y3RvclRhZyB7IENvbW1vbkNvcHlDb25zdHJ1Y3RvciB9OwogCiBwdWJsaWM6CisgICAgdXNp
bmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQqOwor
ICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0
b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRl
cmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCiAgICAgUmVmQ291bnRlZEFycmF5KCkgPSBkZWZhdWx0
OwogICAgIAogICAgIFJlZkNvdW50ZWRBcnJheShjb25zdCBSZWZDb3VudGVkQXJyYXkmIG90aGVy
KQpAQCAtMTY5LDggKzE3NCw4IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgc2l6ZV90
IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFQpOyB9CiAgICAgCiAg
ICAgVCogZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fZGF0YSk7IH0KLSAgICBU
KiBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQqIGVuZCgpCisgICAgaXRlcmF0b3Ig
YmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE3OSw4ICsxODQs
MTMgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9CiAgICAgCiAgICAgY29uc3QgVCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcykt
PmRhdGEoKTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQotICAgIGNvbnN0IFQqIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVuZCgp
OyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+
ZW5kKCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0
dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkp
OyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KICAgICAKICAgICBUJiBhdChzaXplX3QgaSkK
ICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425111</attachid>
            <date>2021-04-03 15:09:27 -0700</date>
            <delta_ts>2021-04-03 16:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403150926.patch</filename>
            <type>text/plain</type>
            <size>30289</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi5hMjVjNWM3YTg1M2JhMzQ0
YjE3MTZjOTIwNDkyYjU3MTJmMzQ0NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgWFhYU3RhdHVz
OjpzaHJpbmtUb0ZpdCB0byBzaHJpbmsgdW5kZXJseWluZyBkeW5hbWljIFZlY3RvcnMuCisgICAg
ICAgIDIuIFJlcGxhY2UgdGllclVwSW5Mb29wSGllcmFyY2h5J3MgVmVjdG9yIHdpdGggUmVmQ291
bnRlZEFycmF5IHNpbmNlIGl0IGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9ubHkgZGF0YS4K
KyAgICAgICAgMy4gVXNlIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldCBm
b3IgU3RyaW5nVGFibGVzIHNpbmNlIHRoaXMgaXMgY29uc3RydWN0ZWQtb25jZS1sb29rdXAtb25s
eSBkYXRhLiBXZSBhbHNvIGFkZAorICAgICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQgc3VwcG9ydCBmb3IgQ2FjaGVkVHlwZXMuCisgICAgICAgIDQuIFVzZSBy
ZXNpemVUb0ZpdCBmb3IgU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBhbmQgU3dpdGNoSnVtcFRhYmxl
cy4KKyAgICAgICAgNS4gSklUU3R1YlJvdXRpbmVTZXQncyBWZWN0b3Igc2hvdWxkIGJlIHNocnVu
ay4KKyAgICAgICAgNi4gQmxvY2tEaXJlY3RvcnlCaXRzJ3MgVmVjdG9yJ3MgaW5pdGlhbCBzaXpl
IHNob3VsZCBiZSBzbWFsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2Up
OgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVj
b2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6
OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5
SWRTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6Oklu
QnlJZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJ
bnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpz
aHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVz
OjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZH
SklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOgor
ICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRT
dHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAg
ICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5
cGVzLmNwcDoKKwogMjAyMS0wNC0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CiAKICAgICAgICAgUmVkdWNlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGNvdW50IGVtaXR0
ZWQgZm9yIGBjbGFzcyBleHRlbmRzYApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMWRkZjU1Mjg4YjdkN2ZkOTc0MzRjY2IyOWQ5
YjEwODE4NzhiZjMwLi42M2IyYjJhOTg1MDEzYWEzZDk2NTZmMmM4ZDE4MDgzODE4NzE2YzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA0LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gU2hyaW5rIHNvbWUgb2YgVmVjdG9ycyBpbiBKU0MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByYmVn
aW4gYW5kIHJlbmQgdG8gbWFrZSBSZWZDb3VudGVkQXJyYXkgdXNhYmxlIGZvciBWZWN0b3IgY2xp
ZW50cyB3aG8gdXNlIHRoZXNlIGZlYXR1cmVzLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWRB
cnJheS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmJlZ2luKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjplbmQpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJy
YXk6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjplbmQgY29u
c3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbik6CisgICAgICAgIChX
VEY6OlJlZkNvdW50ZWRBcnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJh
eTo6cmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyZW5kIGNv
bnN0KToKKwogMjAyMS0wNC0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNF
bmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKaW5kZXggNjRlMmEwMjg2ZTg1N2ExYzYzNDQ1NzBhNTNkY2RhNzhmZGRi
YTMyMy4uMzZjMzQwOWRiYjdmNDdmY2RmMmE0ZGM4ZWI1MzI2ZGY3YmRlOGI2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI4MSw2
ICsyODEsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIHZvaWQgQ2Fs
bExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRh
JiBzaHVmZmxlRGF0YSkKIHsKICAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENh
bGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRh
LT5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwCmluZGV4IGFlN2E0ZjdjNzQyNzkzNjY0ZTY5N2E1ZjVkY2M0MWU0YTAzODJjYzEuLmQ1NGZh
MjNiZWMzZDM1MGM2YzhlYzAyMWU4NDc2Y2E1NDk4NDI5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5k
VmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIHZhcmkKICAgICByZXR1cm4g
YXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5z
aHJpbmtUb0ZpdCgpOworfQorCiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
SUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBk
aWRFeGl0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+
bV9sb2NrKTsKQEAgLTEwOSw2ICsxMTQsNyBAQCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaQogICAg
ICAgICAgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJz
aW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNo
cmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTEsNiAr
MTk3LDcgQEAgdm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UoY29uc3QgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50
KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAg
ICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNh
c2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5kZXggZTY3YjYzODM4ODQ5
ZjUyM2VmYjY5NWVmMWVkYjA5ODdiNjJmNTgxZi4uYTk4OGYyYWY4YjFiYjUyYzVhNDNhYzg1MWZm
YTIyNjhmZGYzNDBlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3Mg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUoVk0mKTsK
IAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQm
KTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCBhMjM0MTk4YTlhZTU0MGNmMzI1NjRiZDU3YWY0MGUwODIzZWMwNDBkLi4yOGNhOWVj
NWZmZGIyNWUyMWVkNjhlMTNhYTk2YzI5OTU3ZWM0NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIGJvb2wgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0g
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0g
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuZ3Jvdyhjb3Vu
dCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMucmVz
aXplVG9GaXQoY291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmlu
Z09mZnNldFRhYmxlOjppdGVyYXRvciBwdHIgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dp
dGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmJlZ2luKCk7CiAgICAgICAgICAgICAgICAgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1
bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVu
ZCgpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMucmVzaXplVG9GaXQoY291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIHNvdXJjZVRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJs
ZShpKTsKICAgICAgICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIGRlc3RUYWJsZSA9IG1fcmFy
ZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCmluZGV4IDkyMzE0N2Q2MzNlN2YzM2ZkMDU0
NGM2NDU0YzZjZTIxNGRhMGMzMTEuLjAxOTA5YTFlMTMwYmFiMDI0NDkwOTU2ZjFkYzM5ZDVkOTRm
OTExZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVC
eVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmNwcApAQCAtNDAsNiArNDAsMTEgQEAgYm9vbCBEZWxldGVCeVN0YXR1czo6YXBwZW5k
VmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBw
ZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIERlbGV0
ZUJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgp
OworfQorCiBEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5l
KENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTEyOSw2ICsxMzQsNyBAQCBE
ZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1
bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIx
NCw2ICsyMjAsNyBAQCB2b2lkIERlbGV0ZUJ5U3RhdHVzOjptZXJnZShjb25zdCBEZWxldGVCeVN0
YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAg
ICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBMaWtlbHlUYWtl
c1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rl
bGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuaAppbmRleCBiMDc2YmYyNjllYzc4MGJlODZlZDkzZTRlMTM2NzY5Y2ZhZjdjMzFiLi41
YmE4MDNhYTk3N2ZmM2RjNWJlZTU4N2I0NzcxYjAwNDE2YmJkNmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApAQCAtODYsNiArODYsNyBA
QCBjbGFzcyBEZWxldGVCeVN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwog
CiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAg
dm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmlu
ZGV4IGQ5NTcyMWVlYjAyZjQ4MzUzNDE5M2JmYjdlN2VkYzUwYTBhODMzNjcuLmJkNzRmYjY0ZjM0
MTE1MTcwYTAxYzE2MThiODVlNDdlMDQ3NmViNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtNDUsNiArNDUsMTEgQEAgYm9vbCBHZXRC
eVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCkKICAg
ICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQog
Cit2b2lkIEdldEJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJp
bmtUb0ZpdCgpOworfQorCiBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTElu
dChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkK
IHsKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMzM5LDYgKzM0NCw3IEBA
IEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjaygKICAgICAgICAgICAgIH0gfQogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgICAgIApAQCAtNDMzLDYgKzQzOSw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21w
dXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCoKICAgICAg
ICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAg
ICAgCisgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNDk0LDYgKzUwMSw3IEBAIHZvaWQgR2V0QnlTdGF0dXM6
Om1lcmdlKGNvbnN0IEdldEJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5k
VmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3co
KTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAppbmRleCBkM2IxYzYyNmRjYWQzNzlhOWZkOGJiMDQ0
NGNhMWZkN2NiOGJmZjI2Li4yNDM3MzBmZGUzM2FlNzVlZjFmNjM2YzQxN2Y4OGI4ZTk5NmY1MmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaApAQCAt
MTIzLDYgKzEyMyw3IEBAIGNsYXNzIEdldEJ5U3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFs
aXplKFZNJik7IC8vIFJldHVybiB0cnVlIGlmIHRoaXMgZ2V0cyB0byBsaXZlLgogCiAgICAgYm9v
bCBhcHBlbmRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtU
b0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKaW5kZXggOTU3ODMw
MTg2YzllZTljMjQxMTliZjQ3ZGJkZTljNzRjZWNmYWZjOC4uNDkzOGE2M2MxYjJhZWM5MGJmZDA0
NmNmNTc0OTZjODUzMTNhMjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luQnlJZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgSW5CeUlkU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJu
IGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBJ
bkJ5SWRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0
KCk7Cit9CisKICNpZiBFTkFCTEUoSklUKQogSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcg
ZGlkRXhpdCkKIHsKQEAgLTIwMCw2ICsyMDUsNyBAQCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yMzMsNiArMjM5LDcgQEAgdm9p
ZCBJbkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHNocmlu
a1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBUYWtlc1Nsb3dQ
YXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0
YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCmlu
ZGV4IDBmNDdmZGY3Y2I2YmQ4N2RhMmViNzM1MzQwMGNiYWNjNDk1MjRjZTYuLjdmMTVmYzVlNDYx
YTlhMDJlNGY3YmRiNjFmODc5NmNmYjc2Njk1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBjbGFzcyBJbkJ5
SWRTdGF0dXMgZmluYWwgewogICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0m
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogI2VuZGlmCiAg
ICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgTm9JbmZvcm1hdGlvbiB9OwogICAg
IFZlY3RvcjxJbkJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCmluZGV4IGNmODU4ZmQz
OTQ2ODBhNWVlYTkwMDhiYTcwZTczN2IxODQyZmRiNmMuLjczYzc4MTliNTE2NzY2OTM3ODMxMzJk
OTk4ZmQ4ZTY0MWY1Y2YxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKQEAgLTM5LDYgKzM5LDExIEBAIHZvaWQgSW5zdGFu
Y2VPZlN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBJbnN0YW5jZU9mVmFyaWFudCYgdmFyaWFu
dCkKICAgICBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
K3ZvaWQgSW5zdGFuY2VPZlN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMu
c2hyaW5rVG9GaXQoKTsKK30KKwogSW5zdGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBJQ1N0YXR1c01hcCYgaW5mb01h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewpAQCAtOTYsNiArMTAxLDcgQEAgSW5z
dGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwKICAgICAgICAgICAgIGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNz
Q2FzZTo6SW5zdGFuY2VPZkhpdCkpOwogICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9G
aXQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0
dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgK
aW5kZXggODVjNDVjYzhhMTljMmY5ZDM0MWNmNWIyZTBjZTBiYmExZWI1MWEyMi4uYmE5OWM2Nzk4
YTY1ZmMxYWUwZDNmMjYyOTYyYjQ1ZTY0YWUwZjQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCkBAIC0xMDYsNiArMTA2LDcgQEAg
Y2xhc3MgSW5zdGFuY2VPZlN0YXR1cyBmaW5hbCB7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhcHBl
bmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpOwogICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgVmVjdG9yPEluc3RhbmNlT2ZWYXJp
YW50LCAyPiBtX3ZhcmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5oCmluZGV4IGMxNTlhYzMxN2E5Nzg0NmFhOGRkNjYxZDY4OTdjMDVhNTU1OWFlOWIuLjVm
Yjg0YTFlNTRlZGViZjBiYWI2MThmZjdiODIzOWZiYTliMzJmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTdHJpbmdKdW1wVGFibGUg
ewotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2Nh
dGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgICAgIHVzaW5nIFN0cmluZ09mZnNldFRhYmxl
ID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFJlZlB0cjxTdHJpbmdJ
bXBsPiwgT2Zmc2V0TG9jYXRpb24+OwogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRU
YWJsZTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRj
aFB0clRhZz4gY3RpRGVmYXVsdDsgLy8gRklYTUU6IGl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5
IHRvIHN0b3JlIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKaW5kZXggNmIwYjg3OGNlNzEwOGViMDVhOTAyNWExOGY4MTU4MTk0MDBk
ZTQ1My4uZTVkMTMyYjYyODcyMDJkMGQyNTQ2MGY2OWJkNTY4YzBiNGFlYjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtNDMs
NiArNDMsMTEgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiB2YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92
YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgUHV0QnlJZFN0YXR1czo6c2hyaW5rVG9GaXQo
KQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNJiB2bSA9IHByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0yMjksNiArMjM0LDcgQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSk7CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAgICAgCkBAIC0zNzEsNiArMzc3LDcgQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgpOwogICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC00MzcsNiArNDQ0LDcgQEAgdm9pZCBQdXRC
eUlkU3RhdHVzOjptZXJnZShjb25zdCBQdXRCeUlkU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAg
IGlmICghYXBwZW5kVmFyaWFudChvdGhlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdl
U2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgY2FzZSBUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKaW5kZXggODExY2M3ZjcwZjk5NTNiYThm
MjdkN2M0NjM1NTFmNjM4MDM0YmUxOC4uODc4ZTI1MmRiNjlhYzU3MTNkYzhlOGY4YjY0NDAwMGNh
ZTYzMGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgY2xhc3MgUHV0QnlJZFN0YXR1cyBmaW5hbCB7CiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCBCeXRl
Y29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKICAgICBib29sIGFwcGVu
ZFZhcmlhbnQoY29uc3QgUHV0QnlJZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7
CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8UHV0QnlJZFZhcmlhbnQsIDE+
IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwCmluZGV4IGRlNDhmNzcwNGVkODYwMzdjODQzMjUw
NDIyZmM5ZGQ2MmJlZDVkOTYuLjgzMDdhMzQ2MWM5Y2U5NTU0NjAwMTJlZjVjNWYzMzdlNjJhY2Y0
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRl
QnJhbmRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC00MSw2ICs0MSwxMSBAQCBib29sIFNldFByaXZhdGVC
cmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2
YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFy
aWFudCk7CiB9CiAKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7
CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBTZXRQcml2YXRlQnJhbmRTdGF0
dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihi
YXNlbGluZUJsb2NrLT5tX2xvY2spOwpAQCAtMTEzLDYgKzExOCw3IEBAIFNldFByaXZhdGVCcmFu
ZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhK
U0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICB9CiAKKyAgICAg
ICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CkBAIC0xOTUsNiArMjAxLDcgQEAgdm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNv
bnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVu
ZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93
KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwog
CiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IDlhODM0Zjg1
Y2MwZWM3Njk5ZmY0MzkzMWZhOWU2ZjYxNWM4ZjFlZTQuLjQ4ZWE2N2U0NDJmYTVkMWE5OTllNjcx
YWZkNzYyOWE2NTQ4MmZlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3Mg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7CiAK
ICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYpOwor
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IGIzZjRlZjNlZDQ1YTk4OGYzMzdkNDI0MzJiYWY2NmIzMDZmMzE0NTUu
LjI0ODY5Mzc0NzExNzhhZGVjZDZmYjZlOTZhN2I5NWIxOTI3YjdlODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00Miw4
ICs0Miw4IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgpAQCAtODAs
NyArODAsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBpbnQz
Ml90IGJyYW5jaE9mZnNldDsKICAgICB9OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHVzaW5n
IFN0cmluZ09mZnNldFRhYmxlID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+OwogICAgIFN0cmluZ09mZnNl
dFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUo
U3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggYTM3ODk4OTIzN2NkNGIxZjYzYmI3ZDNkOTVjMDc2
ODQ3MmUyNWFiZC4uNWFlYmJmYWQ0ZTU5MDI3ZGZkYjg3OGViMjAyZTNiZjk5MDkyODY2YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBj
bGFzcyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogICAgIC8vCiAgICAg
Ly8gVGhlIGtleSBtYXkgbm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NSIEVudHJ5IGJ1dCB0
aGUgbGlzdCBpbiB0aGUgdmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRvIGJlIHVzYWJsZSBm
b3IgT1NSIEVudHJ5LgotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2Rl
SW5kZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4
LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsK
IAogICAgIC8vIE1hcCBlYWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NSRW50ZXIgdG8g
aXRzIHN0cmVhbSBpbmRleC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkPiBi
eXRlY29kZUluZGV4VG9TdHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
aW5kZXggYmQxZDhhMDcyNjYyY2MzNTNhNDQ3YzA1YmI2ZjFlNDBlOTlkYmNiMi4uYWFlYTU4NGIw
NjIwYzRhM2UxODQ1ZWYxYmNhOTVmYTIzM2YwMTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2lsbFRyeVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5VG9UaWVyVXAo
Ym9vbCB3aWxsVHJ5VG9UaWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxsVHJ5VG9UaWVy
VXA7IH0KIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+
PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxvb3BIaWVyYXJj
aHk7IH0KKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29k
ZUluZGV4Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGllclVwSW5Mb29w
SGllcmFyY2h5OyB9CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+JiB0aWVyVXBBbmRPU1JFbnRl
ckJ5dGVjb2RlcygpIHsgcmV0dXJuIG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7IH0KIAog
ICAgIGVudW0gU3RhZ2UgeyBQcmVwYXJpbmcsIENvbXBpbGluZywgUmVhZHksIENhbmNlbGxlZCB9
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UGxhbj4gewogICAgIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIG1fZ2xvYmFsUHJvcGVy
dGllczsKICAgICBSZWNvcmRlZFN0YXR1c2VzIG1fcmVjb3JkZWRTdGF0dXNlczsKIAotICAgIEhh
c2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9v
cEhpZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxC
eXRlY29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAgICAgVmVjdG9yPEJ5dGVj
b2RlSW5kZXg+IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBTdGFnZSBtX3N0
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggZmExM2Y5NWU1Y2VlZDM0ZDY2NDY4NmZjZjYz
MjVjODc2YjljMTU1OC4uYjNhMzAzODE0YmE5NjU1MWNiYWFmZjdmNWEyMzAyMjhjOTEyNzRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVj
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghdGllclVwQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgV1RG
TW92ZSh0aWVyVXBDYW5kaWRhdGVzKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4u
dGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgdGllclVwQ2FuZGlkYXRlcyk7
CiAgICAgICAgIH0KICAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0V2lsbFRyeVRvVGllclVwKHRy
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKaW5kZXggYTM5YjE0M2Y3NzMwMTZhM2I1ZGFlYzgzNWYz
MzE5MzdlZDgzZTE5My4uMTgxYjQ5YjgwNjhiOTY1Y2I4Mzc5NThkZTBjMTZhMTBiYTEyNzlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgK
QEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgewogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBWZWN0b3I8U2Vn
bWVudCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAyPiBtX3NlZ21lbnRzOwogICAgIHVuc2lnbmVkIG1f
bnVtQml0cyB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJ
VFN0dWJSb3V0aW5lU2V0LmNwcAppbmRleCBhOTFlOTg4YjE4OTViNWZlNGY4MWRhNzc3OTJiMTNi
NWI0OTMyMzNlLi5iMmFiYjgzZTU1OWUxNjA2NmJkMTc2YmRlMmVmMGEyMTljMmVkODlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkBA
IC0xMjYsNiArMTI2LDcgQEAgdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRK
ZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCkKICAgICAgICAgcm91dGluZS5yb3V0aW5lLT5kZWxldGVG
cm9tR0MoKTsKICAgICB9CiAgICAgbV9yb3V0aW5lcy5zaHJpbmsoZHN0SW5kZXgpOworICAgIG1f
cm91dGluZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaApp
bmRleCA3MjAxZWUxY2YzMWU1MjZjN2M3NDUwMDVmM2VhZTViNGUyYWM5OTlhLi5hNmRlMmE0Yzc2
OGJlMTE4OTBkNjcyOTRkNGQ3MzFlYmM3NzJjZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIHN0cnVjdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgewor
ICAgICAgICBhcmdzLnNocmlua1RvRml0KCk7CisgICAgfQorCiAgICAgVmVjdG9yPFZhbHVlUmVj
b3Zlcnk+IGFyZ3M7CiAgICAgdW5zaWduZWQgbnVtTG9jYWxzIHsgVUlOVF9NQVggfTsKICAgICB1
bnNpZ25lZCBudW1QYXNzZWRBcmdzIHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA3YmEyNzFkOGM2YjNmMTkwNjYyYTAx
YmVmOGUzMWQyMTFjOGNjMmVhLi42OTI5MDZhMjBhYWMwNDA1MjEyNjMzZDNmNThkZmJiMjUyNWIx
NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKyNpbmNsdWRlIDx3dGYv
Um9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KIApAQCAtNjY5LDEwICs2NzAsMTAgQEAgY2xhc3MgQ2Fj
aGVkUGFpciA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8c3RkOjpwYWlyPFNvdXJjZVR5cGU8Rmlyc3Q+
LCBTb3VyY2VUeXBlPFMKICAgICBTZWNvbmQgbV9zZWNvbmQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8
U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3Vy
Y2VUeXBlPEtleT4+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJj
ZVR5cGU8VmFsdWU+Pj4KLWNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5n
dGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4+IHsKK3RlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3Vy
Y2VUeXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5
cGU8S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlw
ZTxWYWx1ZT4+LCB0eXBlbmFtZSBUYWJsZVRyYWl0cyA9IFdURjo6SGFzaFRhYmxlVHJhaXRzPgor
Y2xhc3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFw
PFNvdXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtleVRyYWl0c0Fy
ZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLLCB0eXBlbmFtZSBWPgotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywg
S2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OworICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8
SywgViwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRz
PjsKIAogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1h
cDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+PiYgbWFwKQpAQCAtNjk2LDYgKzY5
Nyw5IEBAIGNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8
SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjCiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFBh
aXI8S2V5LCBWYWx1ZT4+IG1fZW50cmllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBl
PEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5
Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1
ZT4+PgordXNpbmcgQ2FjaGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
ID0gQ2FjaGVkSGFzaE1hcDxLZXksIFZhbHVlLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgV1RGOjpNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hUYWJs
ZVRyYWl0cz47CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWNoZWRVbmlxdWVkU3Ry
aW5nSW1wbEJhc2UgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VD4gewogcHVibGljOgpA
QCAtOTEwLDcgKzkxNCw3IEBAIGNsYXNzIENhY2hlZFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IHsKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4sIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjogT2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFibGU7CisgICAg
Q2FjaGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPENhY2hlZFJlZlB0
cjxDYWNoZWRTdHJpbmdJbXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0
aW9uPiBtX29mZnNldFRhYmxlOwogfTsKIAogY2xhc3MgQ2FjaGVkQml0VmVjdG9yIDogcHVibGlj
IFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEJpdFZlY3Rvcj4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXku
aAppbmRleCA1NWNhOTgxMzEzOGIyNjIwMTAzNDk5MDdjMjU2OWZlYzJkYjE0YTFjLi5kY2EzODM0
NDNmODFiMDk3NGZjNTlkNjQ1OTA0MDI2NmY4MzJkYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZDb3VudGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJy
YXkuaApAQCAtNTAsNiArNTAsMTEgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBlbnVt
IENvbW1vbkNvcHlDb25zdHJ1Y3RvclRhZyB7IENvbW1vbkNvcHlDb25zdHJ1Y3RvciB9OwogCiBw
dWJsaWM6CisgICAgdXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRv
ciA9IGNvbnN0IFQqOworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2Vf
aXRlcmF0b3I8aXRlcmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBz
dGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCiAgICAgUmVmQ291bnRlZEFy
cmF5KCkgPSBkZWZhdWx0OwogICAgIAogICAgIFJlZkNvdW50ZWRBcnJheShjb25zdCBSZWZDb3Vu
dGVkQXJyYXkmIG90aGVyKQpAQCAtMTY5LDggKzE3NCw4IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJh
eSB7CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICogc2l6ZW9m
KFQpOyB9CiAgICAgCiAgICAgVCogZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1f
ZGF0YSk7IH0KLSAgICBUKiBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQqIGVuZCgp
CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBl
bmQoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gMDsK
QEAgLTE3OSw4ICsxODQsMTMgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9CiAgICAg
CiAgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRl
ZEFycmF5Kj4odGhpcyktPmRhdGEoKTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQotICAg
IGNvbnN0IFQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5
Kj4odGhpcyktPmVuZCgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9CisgICAg
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVk
QXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkg
eyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yKGJlZ2luKCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KICAgICAKICAgICBU
JiBhdChzaXplX3QgaSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425113</attachid>
            <date>2021-04-03 16:14:55 -0700</date>
            <delta_ts>2021-04-03 16:40:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403161454.patch</filename>
            <type>text/plain</type>
            <size>31098</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi4xMjY1NjBlMTZkYzhjNjg1
OTM2MTIxODhjNjQ2ZjU3NTNhNzFhNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgWFhYU3RhdHVz
OjpzaHJpbmtUb0ZpdCB0byBzaHJpbmsgdW5kZXJseWluZyBkeW5hbWljIFZlY3RvcnMuCisgICAg
ICAgIDIuIFJlcGxhY2UgdGllclVwSW5Mb29wSGllcmFyY2h5J3MgVmVjdG9yIHdpdGggUmVmQ291
bnRlZEFycmF5IHNpbmNlIGl0IGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9ubHkgZGF0YS4K
KyAgICAgICAgMy4gVXNlIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldCBm
b3IgU3RyaW5nVGFibGVzIHNpbmNlIHRoaXMgaXMgY29uc3RydWN0ZWQtb25jZS1sb29rdXAtb25s
eSBkYXRhLiBXZSBhbHNvIGFkZAorICAgICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQgc3VwcG9ydCBmb3IgQ2FjaGVkVHlwZXMuCisgICAgICAgIDQuIFVzZSBy
ZXNpemVUb0ZpdCBmb3IgU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBhbmQgU3dpdGNoSnVtcFRhYmxl
cy4KKyAgICAgICAgNS4gSklUU3R1YlJvdXRpbmVTZXQncyBWZWN0b3Igc2hvdWxkIGJlIHNocnVu
ay4KKyAgICAgICAgNi4gQmxvY2tEaXJlY3RvcnlCaXRzJ3MgVmVjdG9yJ3MgaW5pdGlhbCBzaXpl
IHNob3VsZCBiZSBzbWFsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2Up
OgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVj
b2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6
OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5
SWRTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6Oklu
QnlJZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJ
bnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpz
aHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVz
OjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZH
SklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOgor
ICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRT
dHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAg
ICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5
cGVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnBv
cEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnRpbCk6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29k
ZSBpbnN0cnVjdGlvbiBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFk
ZGY1NTI4OGI3ZDdmZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNjNiMmIyYTk4NTAxM2FhM2Q5
NjU2ZjJjOGQxODA4MzgxODcxNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNC0wMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFNocmlu
ayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgcmJlZ2luIGFuZCByZW5kIHRvIG1ha2UgUmVmQ291bnRlZEFy
cmF5IHVzYWJsZSBmb3IgVmVjdG9yIGNsaWVudHMgd2hvIHVzZSB0aGVzZSBmZWF0dXJlcy4KKwor
ICAgICAgICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRl
ZEFycmF5OjpiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6
OlJlZkNvdW50ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFy
cmF5OjpyYmVnaW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAg
ICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6
OlJlZkNvdW50ZWRBcnJheTo6cmVuZCBjb25zdCk6CisKIDIwMjEtMDQtMDIgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFByZWZlclBhZ2VS
ZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDY0ZTJhMDI4NmU4
NTdhMWM2MzQ0NTcwYTUzZGNkYTc4ZmRkYmEzMjMuLjM2YzM0MDlkYmI3ZjQ3ZmNkZjJhNGRjOGVi
NTMyNmRmN2JkZThiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCkBAIC0yODEsNiArMjgxLDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnZp
c2l0V2VhayhWTSYgdm0pCiB2b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShj
b25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7CiAgICAgbV9mcmFtZVNo
dWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEp
OworICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+c2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAppbmRleCBhZTdhNGY3Yzc0Mjc5MzY2NGU2OTdh
NWY1ZGNjNDFlNGEwMzgyY2MxLi5kNTRmYTIzYmVjM2QzNTBjNmM4ZWMwMjFlODQ3NmNhNTQ5ODQy
OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50JiB2YXJpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRz
LCB2YXJpYW50KTsKIH0KIAordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9G
aXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMDksNiArMTE0LDcgQEAgQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2kKICAgICAgICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAgICAg
ICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApAQCAtMTkxLDYgKzE5Nyw3IEBAIHZvaWQgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6Om1lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAg
ICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwog
ICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0
YXR1cy5oCmluZGV4IGU2N2I2MzgzODg0OWY1MjNlZmI2OTVlZjFlZGIwOTg3YjYyZjU4MWYuLmE5
ODhmMmFmOGIxYmI1MmM1YTQzYWM4NTFmZmEyMjY4ZmRmMzQwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5o
CkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsK
ICAgICBib29sIGZpbmFsaXplKFZNJik7CiAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3Qg
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTIzNDE5OGE5YWU1NDBjZjMyNTY0YmQ1
N2FmNDBlMDgyM2VjMDQwZC4uMjhjYTllYzVmZmRiMjVlMjFlZDY4ZTEzYWE5NmMyOTk1N2VjNDQ5
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTQzNyw3ICs0MzcsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgcHRyID0gdW5s
aW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5iZWdp
bigpOwogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZz
ZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1
bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9
IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAg
ICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSk7CiAgICAgICAgICAgICAgICAgU2ltcGxlSnVt
cFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApp
bmRleCA5MjMxNDdkNjMzZTdmMzNmZDA1NDRjNjQ1NGM2Y2UyMTRkYTBjMzExLi4wMTkwOWExZTEz
MGJhYjAyNDQ5MDk1NmYxZGMzOWQ1ZDk0ZjkxMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIGJv
b2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQm
IHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2
YXJpYW50KTsKIH0KIAordm9pZCBEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAg
IG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlT
dGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhp
dCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9j
ayk7CkBAIC0xMjksNiArMTM0LDcgQEAgRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCkBAIC0yMTQsNiArMjIwLDcgQEAgdm9pZCBEZWxldGVCeVN0YXR1
czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFh
cHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdl
U2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKaW5kZXggYjA3NmJmMjY5ZWM3ODBiZTg2
ZWQ5M2U0ZTEzNjc2OWNmYWY3YzMxYi4uNWJhODAzYWE5NzdmZjNkYzViZWU1ODdiNDc3MWIwMDQx
NmJiZDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgRGVsZXRlQnlTdGF0dXMgZmluYWwgewog
ICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCBkOTU3MjFlZWIwMmY0ODM1MzQxOTNiZmI3ZTdl
ZGM1MGEwYTgzMzY3Li5iZDc0ZmI2NGYzNDExNTE3MGEwMWMxNjE4Yjg1ZTQ3ZTA0NzZlYjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAg
LTQ1LDYgKzQ1LDExIEBAIGJvb2wgR2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudCht
X3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQo
KQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogR2V0QnlTdGF0dXMgR2V0
QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+
dm0oKTsKQEAgLTMzOSw2ICszNDQsNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICB9IH0KICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTQzMyw2ICs0MzksNyBAQCBHZXRC
eVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwg
VW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTQ5NCw2ICs1
MDEsNyBAQCB2b2lkIEdldEJ5U3RhdHVzOjptZXJnZShjb25zdCBHZXRCeVN0YXR1cyYgb3RoZXIp
CiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFj
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKaW5kZXgg
ZDNiMWM2MjZkY2FkMzc5YTlmZDhiYjA0NDRjYTFmZDdjYjhiZmYyNi4uMjQzNzMwZmRlMzNhZTc1
ZWYxZjYzNmM0MTdmODhiOGU5OTZmNTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBjbGFzcyBHZXRCeVN0YXR1
cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlz
IGdldHMgdG8gbGl2ZS4KIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBHZXRCeUlkVmFy
aWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
SWRTdGF0dXMuY3BwCmluZGV4IDk1NzgzMDE4NmM5ZWU5YzI0MTE5YmY0N2RiZGU5Yzc0Y2VjZmFm
YzguLjQ5MzhhNjNjMWIyYWVjOTBiZmQwNDZjZjU3NDk2Yzg1MzEzYTI2NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCkBAIC00MSw2ICs0
MSwxMSBAQCBib29sIEluQnlJZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJp
YW50JiB2YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50
cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgSW5CeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7Cisg
ICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiAjaWYgRU5BQkxFKEpJVCkKIEluQnlJ
ZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CkBAIC0yMDAsNiArMjA1LDcgQEAg
SW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMjMzLDYgKzIzOSw3IEBAIHZvaWQgSW5CeUlkU3RhdHVzOjptZXJnZShjb25zdCBJbkJ5
SWRTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRTdGF0dXMuaAppbmRleCAwZjQ3ZmRmN2NiNmJkODdkYTJlYjczNTM0MDBj
YmFjYzQ5NTI0Y2U2Li43ZjE1ZmM1ZTQ2MWE5YTAyZTRmN2JkYjYxZjg3OTZjZmI3NjY5NWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCkBAIC0x
MTYsNiArMTE2LDcgQEAgY2xhc3MgSW5CeUlkU3RhdHVzIGZpbmFsIHsKICAgICBzdGF0aWMgSW5C
eUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8qLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKTsKICNlbmRpZgogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5
SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgU3RhdGUgbV9zdGF0
ZSB7IE5vSW5mb3JtYXRpb24gfTsKICAgICBWZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4gbV92YXJp
YW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9m
U3RhdHVzLmNwcAppbmRleCBjZjg1OGZkMzk0NjgwYTVlZWE5MDA4YmE3MGU3MzdiMTg0MmZkYjZj
Li43M2M3ODE5YjUxNjc2NjkzNzgzMTMyZDk5OGZkOGU2NDFmNWNmMTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCkBAIC0z
OSw2ICszOSwxMSBAQCB2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
SW5zdGFuY2VPZlZhcmlhbnQmIHZhcmlhbnQpCiAgICAgYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1f
dmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1Rv
Rml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkK
IHsKQEAgLTk2LDYgKzEwMSw3IEBAIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsCiAgICAgICAgICAg
ICBhY2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6Okluc3RhbmNlT2ZIaXQpKTsKICAgICB9CiAg
ICAgCisgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCmluZGV4IDg1YzQ1Y2M4YTE5YzJmOWQzNDFjZjViMmUw
Y2UwYmJhMWViNTFhMjIuLmJhOTljNjc5OGE2NWZjMWFlMGQzZjI2Mjk2MmI0NWU2NGFlMGY0NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3Rh
dHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0
dXMuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIEluc3RhbmNlT2ZTdGF0dXMgZmluYWwgewog
CiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kVmFyaWFudChjb25zdCBJbnN0YW5jZU9mVmFyaWFu
dCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwog
ICAgIFZlY3RvcjxJbnN0YW5jZU9mVmFyaWFudCwgMj4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRleCBjMTU5YWMzMTdhOTc4NDZhYThk
ZDY2MWQ2ODk3YzA1YTU1NTlhZTliLi41ZmI4NGExZTU0ZWRlYmYwYmFiNjE4ZmY3YjgyMzlmYmE5
YjMyZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCkBA
IC0zMCw3ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5o
IgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgogCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlIHsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOworICAgICAg
ICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5I
b29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPjsKICAgICAgICAg
U3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aURlZmF1bHQ7IC8vIEZJWE1FOiBp
dCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4IDZiMGI4NzhjZTcx
MDhlYjA1YTkwMjVhMThmODE1ODE5NDAwZGU0NTMuLmU1ZDEzMmI2Mjg3MjAyZDBkMjU0NjBmNjli
ZDU2OGMwYjRhZWIxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKQEAgLTQzLDYgKzQzLDExIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4g
YXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIFB1
dEJ5SWRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0
KCk7Cit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52bSgp
OwpAQCAtMjI5LDYgKzIzNCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKEpTQzo6
c2xvd1ZlcnNpb24oc3VtbWFyeSkpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICByZXN1
bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgICAg
IApAQCAtMzcxLDYgKzM3Nyw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCisgICAg
cmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpAQCAt
NDM3LDYgKzQ0NCw3IEBAIHZvaWQgUHV0QnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgUHV0QnlJZFN0
YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXIpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJp
bmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgVGFrZXNTbG93
UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CmluZGV4IDgxMWNjN2Y3MGY5OTUzYmE4ZjI3ZDdjNDYzNTUxZjYzODAzNGJlMTguLjg3OGUyNTJk
YjY5YWM1NzEzZGM4ZThmOGI2NDQwMDBjYWU2MzBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMTM1LDYgKzEzNSw3IEBAIGNsYXNz
IFB1dEJ5SWRTdGF0dXMgZmluYWwgewogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
cm9tTExJbnQoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCk7CiAgICAgCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFB1dEJ5SWRWYXJpYW50Jik7
CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
VmVjdG9yPFB1dEJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAppbmRl
eCBkZTQ4Zjc3MDRlZDg2MDM3Yzg0MzI1MDQyMmZjOWRkNjJiZWQ1ZDk2Li44MzA3YTM0NjFjOWNl
OTU1NDYwMDEyZWY1YzVmMzM3ZTYyYWNmNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtNDEsNiAr
NDEsMTEgQEAgYm9vbCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0
dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIFNldFByaXZhdGVCcmFu
ZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsK
K30KKwogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTExMyw2
ICsxMTgsNyBAQCBTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZQogICAgICAgICAgICAgICAgIHJldHVy
biBTZXRQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJ
bmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTk1LDYgKzIwMSw3IEBAIHZvaWQgU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjptZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVy
KQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1Rv
Rml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJh
bmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJh
bmRTdGF0dXMuaAppbmRleCA5YTgzNGY4NWNjMGVjNzY5OWZmNDM5MzFmYTllNmY2MTVjOGYxZWU0
Li40OGVhNjdlNDQyZmE1ZDFhOTk5ZTY3MWFmZDc2MjlhNjU0ODJmZTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5o
CkBAIC04OCw2ICs4OCw3IEBAIGNsYXNzIFNldFByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CiAg
ICAgYm9vbCBmaW5hbGl6ZShWTSYpOwogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFNl
dFByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiM2Y0ZWYzZWQ0NWE5ODhm
MzM3ZDQyNDMyYmFmNjZiMzA2ZjMxNDU1Li4yNDg2OTM3NDcxMTc4YWRlY2Q2ZmI2ZTk2YTdiOTVi
MTkyN2I3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtNDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5
Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVHJp
U3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5p
cXVlZFN0cmluZ0ltcGwuaD4KQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlIHsKICAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CiAgICAgfTsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJp
bmdPZmZzZXRUYWJsZTsKKyAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExv
Y2F0aW9uPjsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGlu
ZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1
bHRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IGEzNzg5
ODkyMzdjZDRiMWY2M2JiN2QzZDk1YzA3Njg0NzJlMjVhYmQuLjVhZWJiZmFkNGU1OTAyN2RmZGI4
NzhlYjIwMmUzYmY5OTA5Mjg2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgY2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBEaXJl
Y3RKSVRDb2RlIHsKICAgICAvLwogICAgIC8vIFRoZSBrZXkgbWF5IG5vdCBhbHdheXMgYmUgYSB0
YXJnZXQgZm9yIE9TUiBFbnRyeSBidXQgdGhlIGxpc3QgaW4gdGhlIHZhbHVlIGlzIGd1YXJhbnRl
ZWQKICAgICAvLyB0byBiZSB1c2FibGUgZm9yIE9TUiBFbnRyeS4KLSAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIFZlY3RvcjxCeXRlY29kZUluZGV4Pj4gdGllclVwSW5Mb29wSGllcmFyY2h5Owor
ICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRlZEFycmF5PEJ5dGVjb2RlSW5kZXg+
PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAKICAgICAvLyBNYXAgZWFjaCBieXRlY29kZSBvZiBD
aGVja1RpZXJVcEFuZE9TUkVudGVyIHRvIGl0cyBzdHJlYW0gaW5kZXguCiAgICAgSGFzaE1hcDxC
eXRlY29kZUluZGV4LCB1bnNpZ25lZD4gYnl0ZWNvZGVJbmRleFRvU3RyZWFtSW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCmluZGV4IGJkMWQ4YTA3MjY2MmNjMzUzYTQ0N2MwNWJi
NmYxZTQwZTk5ZGJjYjIuLmFhZWE1ODRiMDYyMGM0YTNlMTg0NWVmMWJjYTk1ZmEyMzNmMDEzZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xh
c3MgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGFuPiB7CiAgICAgYm9vbCB3
aWxsVHJ5VG9UaWVyVXAoKSBjb25zdCB7IHJldHVybiBtX3dpbGxUcnlUb1RpZXJVcDsgfQogICAg
IHZvaWQgc2V0V2lsbFRyeVRvVGllclVwKGJvb2wgd2lsbFRyeVRvVGllclVwKSB7IG1fd2lsbFRy
eVRvVGllclVwID0gd2lsbFRyeVRvVGllclVwOyB9CiAKLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5k
ZXgsIFZlY3RvcjxCeXRlY29kZUluZGV4Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0
dXJuIG1fdGllclVwSW5Mb29wSGllcmFyY2h5OyB9CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4
LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHko
KSB7IHJldHVybiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsgfQogICAgIFZlY3RvcjxCeXRlY29k
ZUluZGV4PiYgdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSB7IHJldHVybiBtX3RpZXJVcEFu
ZE9TUkVudGVyQnl0ZWNvZGVzOyB9CiAKICAgICBlbnVtIFN0YWdlIHsgUHJlcGFyaW5nLCBDb21w
aWxpbmcsIFJlYWR5LCBDYW5jZWxsZWQgfTsKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBQbGFu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICBEZXNpcmVkR2xvYmFs
UHJvcGVydGllcyBtX2dsb2JhbFByb3BlcnRpZXM7CiAgICAgUmVjb3JkZWRTdGF0dXNlcyBtX3Jl
Y29yZGVkU3RhdHVzZXM7CiAKLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFZlY3RvcjxCeXRl
Y29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29k
ZUluZGV4LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IG1fdGllclVwSW5Mb29wSGll
cmFyY2h5OwogICAgIFZlY3RvcjxCeXRlY29kZUluZGV4PiBtX3RpZXJVcEFuZE9TUkVudGVyQnl0
ZWNvZGVzOwogCiAgICAgU3RhZ2UgbV9zdGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IGZh
MTNmOTVlNWNlZWQzNGQ2NjQ2ODZmY2Y2MzI1Yzg3NmI5YzE1NTguLmIzYTMwMzgxNGJhOTY1NTFj
YmFhZmY3ZjVhMjMwMjI4YzkxMjc0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcApAQCAtMTQ3LDcg
KzE0Nyw3IEBAIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRpZXJVcENhbmRpZGF0ZXMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJh
cmNoeSgpLmFkZChlbnRyeS5rZXksIFdURk1vdmUodGllclVwQ2FuZGlkYXRlcykpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpLmFkZChlbnRy
eS5rZXksIHRpZXJVcENhbmRpZGF0ZXMpOwogICAgICAgICB9CiAgICAgICAgIG1fZ3JhcGgubV9w
bGFuLnNldFdpbGxUcnlUb1RpZXJVcCh0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCmluZGV4IGEz
OWIxNDNmNzczMDE2YTNiNWRhZWM4MzVmMzMxOTM3ZWQ4M2UxOTMuLjE4MWI0OWI4MDY4Yjk2NWNi
ODM3OTU4ZGUwYzE2YTEwYmExMjc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCkBAIC0yMjIsNyArMjIyLDcgQEAgY2xhc3MgQmxvY2tE
aXJlY3RvcnlCaXRzIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFNlZ21lbnQ+IG1f
c2VnbWVudHM7CisgICAgVmVjdG9yPFNlZ21lbnQsIDAsIENyYXNoT25PdmVyZmxvdywgMj4gbV9z
ZWdtZW50czsKICAgICB1bnNpZ25lZCBtX251bUJpdHMgeyAwIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKaW5kZXggYTkxZTk4
OGIxODk1YjVmZTRmODFkYTc3NzkyYjEzYjViNDkzMjMzZS4uYjJhYmI4M2U1NTllMTYwNjZiZDE3
NmJkZTJlZjBhMjE5YzJlZDg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0pJVFN0dWJSb3V0aW5lU2V0LmNwcApAQCAtMTI2LDYgKzEyNiw3IEBAIHZvaWQgSklUU3R1YlJv
dXRpbmVTZXQ6OmRlbGV0ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpCiAgICAgICAg
IHJvdXRpbmUucm91dGluZS0+ZGVsZXRlRnJvbUdDKCk7CiAgICAgfQogICAgIG1fcm91dGluZXMu
c2hyaW5rKGRzdEluZGV4KTsKKyAgICBtX3JvdXRpbmVzLnNocmlua1RvRml0KCk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggNzIwMWVlMWNmMzFlNTI2YzdjNzQ1MDA1ZjNl
YWU1YjRlMmFjOTk5YS4uYTZkZTJhNGM3NjhiZTExODkwZDY3Mjk0ZDRkNzMxZWJjNzcyY2Y3NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aApAQCAtMzUsNiArMzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1
ZmZsZURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHZv
aWQgc2hyaW5rVG9GaXQoKQorICAgIHsKKyAgICAgICAgYXJncy5zaHJpbmtUb0ZpdCgpOworICAg
IH0KKwogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmdzOwogICAgIHVuc2lnbmVkIG51bUxv
Y2FscyB7IFVJTlRfTUFYIH07CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7IFVJTlRfTUFY
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFkMjExYzhjYzJlYS4uNjkyOTA2YTIwYWFj
MDQwNTIxMjYzM2QzZjU4ZGZiYjI1MjViMTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYWxsb2NQdHIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
UGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmg+CiAKQEAgLTY2
OSwxMCArNjcwLDEwIEBAIGNsYXNzIENhY2hlZFBhaXIgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PHN0
ZDo6cGFpcjxTb3VyY2VUeXBlPEZpcnN0PiwgU291cmNlVHlwZTxTCiAgICAgU2Vjb25kIG1fc2Vj
b25kOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEFyZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRy
YWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPFZhbHVlPj4+Ci1jbGFzcyBDYWNoZWRIYXNo
TWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEhhc2hNYXA8U291cmNlVHlwZTxLZXk+
LCBTb3VyY2VUeXBlPFZhbHVlPiwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNB
cmc+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+PiwgdHlwZW5hbWUgVGFibGVUcmFpdHMg
PSBXVEY6Okhhc2hUYWJsZVRyYWl0cz4KK2NsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFy
aWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFs
dWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgVGFibGVUcmFpdHM+
PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLSAgICB1c2luZyBNYXAg
PSBIYXNoTWFwPEssIFYsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjsK
KyAgICB1c2luZyBNYXAgPSBIYXNoTWFwPEssIFYsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFw
cGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz47CiAKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNYXA8U291cmNlVHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZh
bHVlPj4mIG1hcCkKQEAgLTY5Niw2ICs2OTcsOSBAQCBjbGFzcyBDYWNoZWRIYXNoTWFwIDogcHVi
bGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEhhc2hNYXA8U291cmNlVHlwZTxLZXk+LCBTb3VyYwog
ICAgIENhY2hlZFZlY3RvcjxDYWNoZWRQYWlyPEtleSwgVmFsdWU+PiBtX2VudHJpZXM7CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJn
ID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0g
SGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBI
YXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4KK3VzaW5nIENhY2hlZE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcCA9IENhY2hlZEhhc2hNYXA8S2V5LCBWYWx1ZSwgSGFz
aEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFdURjo6TWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoVGFibGVUcmFpdHM+OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogY2xhc3MgQ2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlIDogcHVibGljIFZhcmlhYmxlTGVu
Z3RoT2JqZWN0PFQ+IHsKIHB1YmxpYzoKQEAgLTkxMCw3ICs5MTQsNyBAQCBjbGFzcyBDYWNoZWRT
dHJpbmdKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlPiB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRy
PENhY2hlZFN0cmluZ0ltcGw+LCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6IE9mZnNldExvY2F0
aW9uPiBtX29mZnNldFRhYmxlOworICAgIENhY2hlZE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4sIFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbj4gbV9vZmZzZXRUYWJsZTsKIH07CiAKIGNsYXNz
IENhY2hlZEJpdFZlY3RvciA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxCaXRWZWN0b3I+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyYzE0OWZhNzI2MjBiYWNh
M2RhYTIyMjgyZDg3YmU3OWU1ZTg5MDU5Li45ZjMyMTkzNDU2ODA5NWQzOWQxOWQ3OWQ3MDUyMDZj
NGY5NTJjOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTI3LDYg
KzExMjcsNyBAQCB2b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50aWwoQ2Fs
bEZyYW1lKiB0YXJnZXQpCiAgICAgLy8gV2UgaGF2ZSB0byB3b3JyeSBhYm91dCBtaWdyYXRpbmcg
ZnJvbSBhbm90aGVyIHRocmVhZCBzaW5jZSB0aGVyZSBtYXkgYmUgbm8gY2hlY2twb2ludHMgaW4g
b3VyIHRocmVhZCBidXQgb25lIGluIHRoZSBvdGhlciB0aHJlYWRzLgogICAgIHdoaWxlIChtX2No
ZWNrcG9pbnRTaWRlU3RhdGUuc2l6ZSgpICYmIGJvdW5kcy5jb250YWlucyhtX2NoZWNrcG9pbnRT
aWRlU3RhdGUubGFzdCgpLT5hc3NvY2lhdGVkQ2FsbEZyYW1lKSkKICAgICAgICAgbV9jaGVja3Bv
aW50U2lkZVN0YXRlLnRha2VMYXN0KCk7CisgICAgbV9jaGVja3BvaW50U2lkZVN0YXRlLnNocmlu
a1RvRml0KCk7CiB9CiAKIHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZWRBcnJheS5oCmluZGV4IDU1Y2E5ODEzMTM4YjI2MjAxMDM0OTkwN2MyNTY5ZmVjMmRiMTRh
MWMuLmRjYTM4MzQ0M2Y4MWIwOTc0ZmM1OWQ2NDU5MDQwMjY2ZjgzMmRiN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWRBcnJheS5oCkBAIC01MCw2ICs1MCwxMSBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkg
ewogICAgIGVudW0gQ29tbW9uQ29weUNvbnN0cnVjdG9yVGFnIHsgQ29tbW9uQ29weUNvbnN0cnVj
dG9yIH07CiAKIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOworICAgIHVzaW5nIGNv
bnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9p
dGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CisKICAgICBS
ZWZDb3VudGVkQXJyYXkoKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgUmVmQ291bnRlZEFycmF5KGNv
bnN0IFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpCkBAIC0xNjksOCArMTc0LDggQEAgY2xhc3MgUmVm
Q291bnRlZEFycmF5IHsKICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXpl
KCkgKiBzaXplb2YoVCk7IH0KICAgICAKICAgICBUKiBkYXRhKCkgeyByZXR1cm4gUHRyVHJhaXRz
Ojp1bndyYXAobV9kYXRhKTsgfQotICAgIFQqIGJlZ2luKCkgeyByZXR1cm4gZGF0YSgpOyB9Ci0g
ICAgVCogZW5kKCkKKyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQorICAg
IGl0ZXJhdG9yIGVuZCgpCiAgICAgewogICAgICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtMTc5LDggKzE4NCwxMyBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewog
ICAgIH0KICAgICAKICAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZGF0YSgpOyB9Ci0gICAgY29uc3QgVCogYmVnaW4o
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdp
bigpOyB9Ci0gICAgY29uc3QgVCogZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZD
b3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmJlZ2lu
KCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRv
ciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisgICAgcmV2
ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0K
KyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQog
ICAgIAogICAgIFQmIGF0KHNpemVfdCBpKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425115</attachid>
            <date>2021-04-03 16:40:03 -0700</date>
            <delta_ts>2021-04-03 17:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403164002.patch</filename>
            <type>text/plain</type>
            <size>35482</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi5mYzc5ZDg0NzE3OWNhNTI0
MzVkMGUyNWZjNDNlMTYyMTMxZTA5N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgWFhYU3RhdHVz
OjpzaHJpbmtUb0ZpdCB0byBzaHJpbmsgdW5kZXJseWluZyBkeW5hbWljIFZlY3RvcnMuCisgICAg
ICAgIDIuIFJlcGxhY2UgdGllclVwSW5Mb29wSGllcmFyY2h5J3MgVmVjdG9yIHdpdGggUmVmQ291
bnRlZEFycmF5IHNpbmNlIGl0IGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9ubHkgZGF0YS4K
KyAgICAgICAgMy4gVXNlIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldCBm
b3IgU3RyaW5nVGFibGVzIHNpbmNlIHRoaXMgaXMgY29uc3RydWN0ZWQtb25jZS1sb29rdXAtb25s
eSBkYXRhLiBXZSBhbHNvIGFkZAorICAgICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQgc3VwcG9ydCBmb3IgQ2FjaGVkVHlwZXMuCisgICAgICAgIDQuIFVzZSBy
ZXNpemVUb0ZpdCBmb3IgU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBhbmQgU3dpdGNoSnVtcFRhYmxl
cy4KKyAgICAgICAgNS4gSklUU3R1YlJvdXRpbmVTZXQncyBWZWN0b3Igc2hvdWxkIGJlIHNocnVu
ay4KKyAgICAgICAgNi4gQmxvY2tEaXJlY3RvcnlCaXRzJ3MgVmVjdG9yJ3MgaW5pdGlhbCBzaXpl
IHNob3VsZCBiZSBzbWFsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2Up
OgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVj
b2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6
OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5
SWRTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6Oklu
QnlJZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJ
bnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNB
Y2Nlc3M6OnZpc2l0V2VhayBjb25zdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFu
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5r
VG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAg
IChKU0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0
b3J5Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJv
dXRpbmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAg
KEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpwb3BBbGxDaGVja3BvaW50T1NS
U2lkZVN0YXRlVW50aWwpOgorCiAyMDIxLTA0LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZWR1Y2UgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gY291
bnQgZW1pdHRlZCBmb3IgYGNsYXNzIGV4dGVuZHNgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxZGRmNTUyODhiN2Q3ZmQ5NzQz
NGNjYjI5ZDliMTA4MTg3OGJmMzAuLjYzYjJiMmE5ODUwMTNhYTNkOTY1NmYyYzhkMTgwODM4MTg3
MTZjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3Jz
IGluIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHJiZWdpbiBhbmQgcmVuZCB0byBtYWtlIFJlZkNvdW50ZWRBcnJheSB1c2FibGUgZm9yIFZl
Y3RvciBjbGllbnRzIHdobyB1c2UgdGhlc2UgZmVhdHVyZXMuCisKKyAgICAgICAgKiB3dGYvUmVm
Q291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6YmVnaW4pOgor
ICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmVuZCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6
OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6cmJlZ2luKToKKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyZW5kKToKKyAgICAgICAgKFdURjo6UmVmQ291
bnRlZEFycmF5OjpyYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6
OnJlbmQgY29uc3QpOgorCiAyMDIxLTA0LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05l
YXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCA2NGUyYTAyODZlODU3YTFjNjM0NDU3MGE1M2Rj
ZGE3OGZkZGJhMzIzLi4zNmMzNDA5ZGJiN2Y0N2ZjZGYyYTRkYzhlYjUzMjZkZjdiZGU4YjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApA
QCAtMjgxLDYgKzI4MSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQog
dm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1
ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewogICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IG1ha2VV
bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1lU2h1
ZmZsZURhdGEtPnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5jcHAKaW5kZXggYWU3YTRmN2M3NDI3OTM2NjRlNjk3YTVmNWRjYzQxZTRhMDM4MmNj
MS4uZDU0ZmEyM2JlYzNkMzUwYzZjOGVjMDIxZTg0NzZjYTU0OTg0MjlkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuY3BwCkBAIC00MSw2ICs0MSwxMSBAQCBib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaQogICAg
IHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
K3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3Zh
cmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGlu
ZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4
aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGlu
ZUJsb2NrLT5tX2xvY2spOwpAQCAtMTA5LDYgKzExNCw3IEBAIENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6
c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBy
ZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAg
LTE5MSw2ICsxOTcsNyBAQCB2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZShjb25z
dCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVu
ZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93
KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwog
CiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAppbmRleCBlNjdi
NjM4Mzg4NDlmNTIzZWZiNjk1ZWYxZWRiMDk4N2I2MmY1ODFmLi5hOTg4ZjJhZjhiMWJiNTJjNWE0
M2FjODUxZmZhMjI2OGZkZjM0MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODcsNiArODcsNyBA
QCBjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOwogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGEyMzQxOThhOWFlNTQwY2YzMjU2NGJkNTdhZjQwZTA4MjNlYzA0MGQu
LjI4Y2E5ZWM1ZmZkYjI1ZTIxZWQ2OGUxM2FhOTZjMjk5NTdlYzQ0OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00MzcsNyArNDM3LDcgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaXplX3Qg
Y291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVz
KCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5n
cm93KGNvdW50KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5yZXNpemVUb0ZpdChjb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIHB0ciA9IHVubGlua2VkQ29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuYmVnaW4oKTsKICAgICAgICAgICAg
ICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9y
IGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0
VGFibGUuZW5kKCk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5ncm93KGNvdW50KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5yZXNpemVUb0ZpdChjb3VudCk7CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGkpOwogICAgICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxl
ID0gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKaW5kZXggOTIzMTQ3ZDYzM2U3
ZjMzZmQwNTQ0YzY0NTRjNmNlMjE0ZGEwYzMxMS4uMDE5MDlhMWUxMzBiYWIwMjQ0OTA5NTZmMWRj
MzlkNWQ5NGY5MTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuY3BwCkBAIC00MCw2ICs0MCwxMSBAQCBib29sIERlbGV0ZUJ5U3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQogICAgIHJl
dHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3Zv
aWQgRGVsZXRlQnlTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlu
a1RvRml0KCk7Cit9CisKIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
QmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOwpAQCAtMTI5LDYgKzEz
NCw3IEBAIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMjE0LDYgKzIyMCw3IEBAIHZvaWQgRGVsZXRlQnlTdGF0dXM6Om1lcmdlKGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhl
clZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAg
fQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIExp
a2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCmluZGV4IGIwNzZiZjI2OWVjNzgwYmU4NmVkOTNlNGUxMzY3NjljZmFm
N2MzMWIuLjViYTgwM2FhOTc3ZmYzZGM1YmVlNTg3YjQ3NzFiMDA0MTZiYmQ2YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCkBAIC04Niw2
ICs4Niw3IEBAIGNsYXNzIERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXpl
KFZNJik7CiAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQm
KTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAKaW5kZXggZDk1NzIxZWViMDJmNDgzNTM0MTkzYmZiN2U3ZWRjNTBhMGE4MzM2Ny4uYmQ3
NGZiNjRmMzQxMTUxNzBhMDFjMTYxOGI4NWU0N2UwNDc2ZWI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC00NSw2ICs0NSwxMSBAQCBi
b29sIEdldEJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFu
dCk7CiB9CiAKK3ZvaWQgR2V0QnlTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3Zhcmlh
bnRzLnNocmlua1RvRml0KCk7Cit9CisKIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4KQogewogICAgIFZNJiB2bSA9IHByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0zMzksNiAr
MzQ0LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfSB9CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAgICAgCkBAIC00MzMsNiArNDM5LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBs
KgogICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOwog
ICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC00OTQsNiArNTAxLDcgQEAgdm9pZCBHZXRC
eVN0YXR1czo6bWVyZ2UoY29uc3QgR2V0QnlTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYg
KCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
cmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2U6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oCmluZGV4IGQzYjFjNjI2ZGNhZDM3OWE5
ZmQ4YmIwNDQ0Y2ExZmQ3Y2I4YmZmMjYuLjI0MzczMGZkZTMzYWU3NWVmMWY2MzZjNDE3Zjg4Yjhl
OTk2ZjUyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eVN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgY2xhc3MgR2V0QnlTdGF0dXMgZmluYWwgewogICAgIGJv
b2wgZmluYWxpemUoVk0mKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCiAK
ICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAppbmRl
eCA5NTc4MzAxODZjOWVlOWMyNDExOWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFiMmFl
YzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMxM2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJbkJ5
SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkKICAg
ICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQog
Cit2b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hy
aW5rVG9GaXQoKTsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBF
eGl0RmxhZyBkaWRFeGl0KQogewpAQCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJbkJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0
IENvbmN1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hyaW5r
VG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyMzks
NyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRh
a2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmgKaW5kZXggMGY0N2ZkZjdjYjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4uN2Yx
NWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBAIGNs
YXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAj
ZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOworICAg
IHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9u
IH07CiAgICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5kZXgg
Y2Y4NThmZDM5NDY4MGE1ZWVhOTAwOGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3NjY5
Mzc4MzEzMmQ5OThmZDhlNjQxZjVjZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAgdm9p
ZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJpYW50
JiB2YXJpYW50KQogICAgIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50
KTsKIH0KIAordm9pZCBJbnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92
YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFw
JiBpbmZvTWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsxMDEs
NyBAQCBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
byhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUoKSA9
PSBBY2Nlc3NDYXNlOjpJbnN0YW5jZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5z
aHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZT
dGF0dXMuaAppbmRleCA4NWM0NWNjOGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIyLi5i
YTk5YzY3OThhNjVmYzFhZTBkM2YyNjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2ICsx
MDYsNyBAQCBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5zdGFu
Y2VPZlZhcmlhbnQsIDI+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKaW5kZXggYzE1OWFjMzE3YTk3ODQ2YWE4ZGQ2NjFkNjg5N2MwNWE1NTU5
YWU5Yi4uNWZiODRhMWU1NGVkZWJmMGJhYjYxOGZmN2I4MjM5ZmJhOWIzMmZmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtMzAsNyArMzAsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgc3RydWN0IFN0cmluZ0p1
bXBUYWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9m
ZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICAgICAgdXNpbmcgU3RyaW5nT2Zm
c2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxl
IG9mZnNldFRhYmxlOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
PEpTU3dpdGNoUHRyVGFnPiBjdGlEZWZhdWx0OyAvLyBGSVhNRTogaXQgc2hvdWxkIG5vdCBiZSBu
ZWNlc3NhcnkgdG8gc3RvcmUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDI3ZGQxMzhlZmI2YTJmYTFjZjdk
Mjk3MzU1NTU2ZWYzNzZjYjcxNjcuLjU1ZjgzYzA1ODc0M2RiYmQxNzBlOTc1MzRjMzM0NzEyMmM4
Nzk0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcApAQCAtMzQ5LDExICszNDksOSBAQCBib29sIFBvbHltb3JwaGljQWNj
ZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vh
ayh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KiB3ZWFrUmVmZXJlbmNlcyA9IG1fd2Vha1JlZmVyZW5jZXMu
Z2V0KCkpIHsKLSAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5j
ZSA6ICp3ZWFrUmVmZXJlbmNlcykgewotICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2Vk
KHdlYWtSZWZlcmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQorICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVu
Y2UgOiBtX3dlYWtSZWZlcmVuY2VzKSB7CisgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3
ZWFrUmVmZXJlbmNlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NDksMTAgKzc0Nyw4IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9jCiAgICAgCiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUu
bV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2Fs
bFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RG
TW92ZShzdGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQoKTsK
LSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmll
cjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIH0KKyAgICBp
ZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV93ZWFrUmVmZXJl
bmNlcyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShzdGF0
ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4i
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmgKaW5kZXggMjA4ODQwZTcxZjc2YTRkNWQ5ZTU3NzQ1ZWU2NDg2OTBmZjdhZDQz
NS4uYmRmNWM3ZjJlN2M2ODkzZjFhOTU5ZjIyZmZmODk1NTg1MGRmMmE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNyArMTg4LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNB
Y2Nlc3MgewogICAgIExpc3RUeXBlIG1fbGlzdDsKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+
IG1fc3R1YlJvdXRpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1
cmVTdHViSW5mbz4gbV93YXRjaHBvaW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFdy
aXRlQmFycmllcjxKU0NlbGw+Pj4gbV93ZWFrUmVmZXJlbmNlczsKKyAgICBSZWZDb3VudGVkQXJy
YXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3Qg
QWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA2YjBiODc4Y2U3MTA4ZWIwNWE5MDI1YTE4Zjgx
NTgxOTQwMGRlNDUzLi5lNWQxMzJiNjI4NzIwMmQwZDI1NDYwZjY5YmQ1NjhjMGI0YWViMTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CkBAIC00Myw2ICs0MywxMSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFy
aWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBQdXRCeUlkU3RhdHVzOjpzaHJp
bmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTIyOSw2ICsyMzQs
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAg
ICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1h
cnkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTM3MSw2ICszNzcs
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtUb0Zp
dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQzNyw2ICs0NDQsNyBAQCB2
b2lkIFB1dEJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIG90aGVyKQogICAg
ICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA4MTFjYzdmNzBm
OTk1M2JhOGYyN2Q3YzQ2MzU1MWY2MzgwMzRiZTE4Li44NzhlMjUyZGI2OWFjNTcxM2RjOGU4Zjhi
NjQ0MDAwY2FlNjMwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBjbGFzcyBQdXRCeUlkU3RhdHVzIGZp
bmFsIHsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayosIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAogICAgIGJv
b2wgYXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFZlY3RvcjxQdXRCeUlkVmFy
aWFudCwgMT4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKaW5kZXggZGU0OGY3NzA0ZWQ4NjAz
N2M4NDMyNTA0MjJmYzlkZDYyYmVkNWQ5Ni4uODMwN2EzNDYxYzljZTk1NTQ2MDAxMmVmNWM1ZjMz
N2U2MmFjZjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZh
cmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3Zhcmlh
bnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlua1Rv
Rml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIFNldFByaXZhdGVC
cmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2Rl
QmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMTMsNiArMTE4LDcgQEAgU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmUKICAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAgIH0K
IAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTE5NSw2ICsyMDEsNyBAQCB2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6
bWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlm
ICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBt
ZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5kZXgg
OWE4MzRmODVjYzBlYzc2OTlmZjQzOTMxZmE5ZTZmNjE1YzhmMWVlNC4uNDhlYTY3ZTQ0MmZhNWQx
YTk5OWU2NzFhZmQ3NjI5YTY1NDgyZmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODgsNiArODgsNyBA
QCBjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJp
YW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVhOTg4ZjMzN2Q0MjQzMmJhZjY2YjMw
NmYzMTQ1NS4uMjQ4NjkzNzQ3MTE3OGFkZWNkNmZiNmU5NmE3Yjk1YjE5MjdiN2U4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
QEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0
Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+
CkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAg
ICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7Cisg
ICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgU3Ry
aW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRG
b3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBhMzc4OTg5MjM3Y2Q0YjFmNjNiYjdk
M2Q5NWMwNzY4NDcyZTI1YWJkLi41YWViYmZhZDRlNTkwMjdkZmRiODc4ZWIyMDJlM2JmOTkwOTI4
NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIGNsYXNzIEpJVENvZGUgZmluYWwgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiAgICAg
Ly8KICAgICAvLyBUaGUga2V5IG1heSBub3QgYWx3YXlzIGJlIGEgdGFyZ2V0IGZvciBPU1IgRW50
cnkgYnV0IHRoZSBsaXN0IGluIHRoZSB2YWx1ZSBpcyBndWFyYW50ZWVkCiAgICAgLy8gdG8gYmUg
dXNhYmxlIGZvciBPU1IgRW50cnkuCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8
Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4gdGllclVwSW5Mb29wSGll
cmFyY2h5OwogCiAgICAgLy8gTWFwIGVhY2ggYnl0ZWNvZGUgb2YgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlciB0byBpdHMgc3RyZWFtIGluZGV4LgogICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQ+IGJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uaAppbmRleCBiZDFkOGEwNzI2NjJjYzM1M2E0NDdjMDViYjZmMWU0MGU5OWRiY2IyLi5h
YWVhNTg0YjA2MjBjNGEzZTE4NDVlZjFiY2E5NWZhMjMzZjAxM2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgIGJvb2wgd2lsbFRyeVRvVGllclVwKCkg
Y29uc3QgeyByZXR1cm4gbV93aWxsVHJ5VG9UaWVyVXA7IH0KICAgICB2b2lkIHNldFdpbGxUcnlU
b1RpZXJVcChib29sIHdpbGxUcnlUb1RpZXJVcCkgeyBtX3dpbGxUcnlUb1RpZXJVcCA9IHdpbGxU
cnlUb1RpZXJVcDsgfQogCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8Qnl0ZWNv
ZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7IHJldHVybiBtX3RpZXJVcEluTG9v
cEhpZXJhcmNoeTsgfQorICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRlZEFycmF5
PEJ5dGVjb2RlSW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVy
VXBJbkxvb3BIaWVyYXJjaHk7IH0KICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4mIHRpZXJVcEFu
ZE9TUkVudGVyQnl0ZWNvZGVzKCkgeyByZXR1cm4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rl
czsgfQogCiAgICAgZW51bSBTdGFnZSB7IFByZXBhcmluZywgQ29tcGlsaW5nLCBSZWFkeSwgQ2Fu
Y2VsbGVkIH07CkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgUGxhbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxQbGFuPiB7CiAgICAgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMgbV9nbG9i
YWxQcm9wZXJ0aWVzOwogICAgIFJlY29yZGVkU3RhdHVzZXMgbV9yZWNvcmRlZFN0YXR1c2VzOwog
Ci0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4+IG1fdGll
clVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRl
ZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsKICAgICBWZWN0
b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsKIAogICAgIFN0
YWdlIG1fc3RhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAppbmRleCBmYTEzZjk1ZTVjZWVkMzRkNjY0
Njg2ZmNmNjMyNWM4NzZiOWMxNTU4Li5iM2EzMDM4MTRiYTk2NTUxY2JhYWZmN2Y1YTIzMDIyOGM5
MTI3NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCF0aWVyVXBDYW5kaWRhdGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQoZW50cnku
a2V5LCBXVEZNb3ZlKHRpZXJVcENhbmRpZGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQoZW50cnkua2V5LCB0aWVyVXBDYW5k
aWRhdGVzKTsKICAgICAgICAgfQogICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRXaWxsVHJ5VG9U
aWVyVXAodHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAppbmRleCBhMzliMTQzZjc3MzAxNmEzYjVk
YWVjODM1ZjMzMTkzN2VkODNlMTkzLi4xODFiNDliODA2OGI5NjVjYjgzNzk1OGRlMGMxNmExMGJh
MTI3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeUJpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9y
eUJpdHMuaApAQCAtMjIyLDcgKzIyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOworICAgIFZl
Y3RvcjxTZWdtZW50LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDI+IG1fc2VnbWVudHM7CiAgICAgdW5z
aWduZWQgbV9udW1CaXRzIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCmluZGV4IGE5MWU5ODhiMTg5NWI1ZmU0ZjgxZGE3
Nzc5MmIxM2I1YjQ5MzIzM2UuLmIyYWJiODNlNTU5ZTE2MDY2YmQxNzZiZGUyZWYwYTIxOWMyZWQ4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5l
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNl
dC5jcHAKQEAgLTEyNiw2ICsxMjYsNyBAQCB2b2lkIEpJVFN0dWJSb3V0aW5lU2V0OjpkZWxldGVV
bm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKQogICAgICAgICByb3V0aW5lLnJvdXRpbmUt
PmRlbGV0ZUZyb21HQygpOwogICAgIH0KICAgICBtX3JvdXRpbmVzLnNocmluayhkc3RJbmRleCk7
CisgICAgbV9yb3V0aW5lcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aXNpdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
RGF0YS5oCmluZGV4IDcyMDFlZTFjZjMxZTUyNmM3Yzc0NTAwNWYzZWFlNWI0ZTJhYzk5OWEuLmE2
ZGUyYTRjNzY4YmUxMTg5MGQ2NzI5NGQ0ZDczMWViYzc3MmNmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKQEAgLTM1LDYgKzM1LDEx
IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IENhbGxGcmFtZVNodWZmbGVEYXRhIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB2b2lkIHNocmlua1RvRml0KCkK
KyAgICB7CisgICAgICAgIGFyZ3Muc2hyaW5rVG9GaXQoKTsKKyAgICB9CisKICAgICBWZWN0b3I8
VmFsdWVSZWNvdmVyeT4gYXJnczsKICAgICB1bnNpZ25lZCBudW1Mb2NhbHMgeyBVSU5UX01BWCB9
OwogICAgIHVuc2lnbmVkIG51bVBhc3NlZEFyZ3MgeyBVSU5UX01BWCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXggNDZhYTAz
OWZjNzRmZTBhNmU2NGMzZWMxNGVmOTYxM2U3ZThiNTNiOS4uNThkODY0ZDc4OGI3MjBhYjIwNTNh
YmU5YjI4NzhhYTkxOGM5ZTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSklU
U3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTYsNyArOTcsNyBAQCBjbGFzcyBNYXJr
aW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7
CiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fY2VsbHM7
CisgICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX2NlbGxzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAppbmRl
eCBmYTdiN2ViNmVmYWUwZWNjMmI3MmQ1OWU1NWY0ZTFmMWQ2Y2JkMzljLi42YzEzZjEyNjMwYTFi
NTk2MjlkZDk5MmE0OWYzYzdhY2I4ZGRiMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCkBAIC0xMDksNyArMTA5
LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5h
bChBYnN0cmFjdFNsb3RWaXNpdG9yJikgZmluYWw7CiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmpl
Y3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKSBmaW5hbDsKIAotICAgIFZlY3RvcjxXcml0ZUJhcnJp
ZXI8SlNDZWxsPiwgMj4gbV92YXJpYW50czsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJy
aWVyPEpTQ2VsbD4+IG1fdmFyaWFudHM7CiAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFz
dENvdW50czsKICAgICBCYWc8UG9seW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDdi
YTI3MWQ4YzZiM2YxOTA2NjJhMDFiZWY4ZTMxZDIxMWM4Y2MyZWEuLjY5MjkwNmEyMGFhYzA0MDUy
MTI2MzNkM2Y1OGRmYmIyNTI1YjE0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFs
bG9jUHRyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1BhY2tl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oPgogCkBAIC02NjksMTAg
KzY3MCwxMCBAQCBjbGFzcyBDYWNoZWRQYWlyIDogcHVibGljIENhY2hlZE9iamVjdDxzdGQ6OnBh
aXI8U291cmNlVHlwZTxGaXJzdD4sIFNvdXJjZVR5cGU8UwogICAgIFNlY29uZCBtX3NlY29uZDsK
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0Fy
ZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+PgotY2xhc3MgQ2FjaGVkSGFzaE1hcCA6
IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5PiwgU291
cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPj4g
ewordGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFy
ZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9
IEhhc2hUcmFpdHM8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0g
SGFzaFRyYWl0czxTb3VyY2VUeXBlPFZhbHVlPj4sIHR5cGVuYW1lIFRhYmxlVHJhaXRzID0gV1RG
OjpIYXNoVGFibGVUcmFpdHM+CitjbGFzcyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxl
TGVuZ3RoT2JqZWN0PEhhc2hNYXA8U291cmNlVHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPiwg
SGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzPj4gewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci0gICAgdXNpbmcgTWFwID0gSGFz
aE1hcDxLLCBWLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz47CisgICAg
dXNpbmcgTWFwID0gSGFzaE1hcDxLLCBWLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRy
YWl0c0FyZywgVGFibGVUcmFpdHM+OwogCiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgTWFwPFNvdXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4+
JiBtYXApCkBAIC02OTYsNiArNjk3LDkgQEAgY2xhc3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBW
YXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5PiwgU291cmMKICAgICBD
YWNoZWRWZWN0b3I8Q2FjaGVkUGFpcjxLZXksIFZhbHVlPj4gbV9lbnRyaWVzOwogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFyZyA9IERl
ZmF1bHRIYXNoPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRy
YWl0czxTb3VyY2VUeXBlPFZhbHVlPj4+Cit1c2luZyBDYWNoZWRNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hNYXAgPSBDYWNoZWRIYXNoTWFwPEtleSwgVmFsdWUsIEhhc2hBcmcs
IEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBXVEY6Ok1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaFRhYmxlVHJhaXRzPjsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNs
YXNzIENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZSA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9i
amVjdDxUPiB7CiBwdWJsaWM6CkBAIC05MTAsNyArOTE0LDcgQEAgY2xhc3MgQ2FjaGVkU3RyaW5n
SnVtcFRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4g
ewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNo
ZWRTdHJpbmdJbXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OiBPZmZzZXRMb2NhdGlvbj4g
bV9vZmZzZXRUYWJsZTsKKyAgICBDYWNoZWRNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFN0cmluZ0ltcGw+LCBVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFibGU7CiB9OwogCiBjbGFzcyBDYWNo
ZWRCaXRWZWN0b3IgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8Qml0VmVjdG9yPiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMmMxNDlmYTcyNjIwYmFjYTNkYWEy
MjI4MmQ4N2JlNzllNWU4OTA1OS4uOWYzMjE5MzQ1NjgwOTVkMzlkMTlkNzlkNzA1MjA2YzRmOTUy
YzlhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTEyNyw2ICsxMTI3
LDcgQEAgdm9pZCBWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKENhbGxGcmFt
ZSogdGFyZ2V0KQogICAgIC8vIFdlIGhhdmUgdG8gd29ycnkgYWJvdXQgbWlncmF0aW5nIGZyb20g
YW5vdGhlciB0aHJlYWQgc2luY2UgdGhlcmUgbWF5IGJlIG5vIGNoZWNrcG9pbnRzIGluIG91ciB0
aHJlYWQgYnV0IG9uZSBpbiB0aGUgb3RoZXIgdGhyZWFkcy4KICAgICB3aGlsZSAobV9jaGVja3Bv
aW50U2lkZVN0YXRlLnNpemUoKSAmJiBib3VuZHMuY29udGFpbnMobV9jaGVja3BvaW50U2lkZVN0
YXRlLmxhc3QoKS0+YXNzb2NpYXRlZENhbGxGcmFtZSkpCiAgICAgICAgIG1fY2hlY2twb2ludFNp
ZGVTdGF0ZS50YWtlTGFzdCgpOworICAgIG1fY2hlY2twb2ludFNpZGVTdGF0ZS5zaHJpbmtUb0Zp
dCgpOwogfQogCiB2b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVk
QXJyYXkuaAppbmRleCA1NWNhOTgxMzEzOGIyNjIwMTAzNDk5MDdjMjU2OWZlYzJkYjE0YTFjLi5k
Y2EzODM0NDNmODFiMDk3NGZjNTlkNjQ1OTA0MDI2NmY4MzJkYjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3Vu
dGVkQXJyYXkuaApAQCAtNTAsNiArNTAsMTEgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAg
ICBlbnVtIENvbW1vbkNvcHlDb25zdHJ1Y3RvclRhZyB7IENvbW1vbkNvcHlDb25zdHJ1Y3RvciB9
OwogCiBwdWJsaWM6CisgICAgdXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9p
dGVyYXRvciA9IGNvbnN0IFQqOworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJl
dmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCiAgICAgUmVmQ291
bnRlZEFycmF5KCkgPSBkZWZhdWx0OwogICAgIAogICAgIFJlZkNvdW50ZWRBcnJheShjb25zdCBS
ZWZDb3VudGVkQXJyYXkmIG90aGVyKQpAQCAtMTY5LDggKzE3NCw4IEBAIGNsYXNzIFJlZkNvdW50
ZWRBcnJheSB7CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICog
c2l6ZW9mKFQpOyB9CiAgICAgCiAgICAgVCogZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53
cmFwKG1fZGF0YSk7IH0KLSAgICBUKiBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQq
IGVuZCgpCisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVy
YXRvciBlbmQoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTE3OSw4ICsxODQsMTMgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9
CiAgICAgCiAgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVm
Q291bnRlZEFycmF5Kj4odGhpcyktPmRhdGEoKTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsg
fQotICAgIGNvbnN0IFQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRl
ZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9
CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZD
b3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3IgcmJl
Z2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICAgIHJldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAg
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5k
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KICAgICAK
ICAgICBUJiBhdChzaXplX3QgaSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425117</attachid>
            <date>2021-04-03 17:32:34 -0700</date>
            <delta_ts>2021-04-03 18:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403173233.patch</filename>
            <type>text/plain</type>
            <size>35504</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi5mYzc5ZDg0NzE3OWNhNTI0
MzVkMGUyNWZjNDNlMTYyMTMxZTA5N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgWFhYU3RhdHVz
OjpzaHJpbmtUb0ZpdCB0byBzaHJpbmsgdW5kZXJseWluZyBkeW5hbWljIFZlY3RvcnMuCisgICAg
ICAgIDIuIFJlcGxhY2UgdGllclVwSW5Mb29wSGllcmFyY2h5J3MgVmVjdG9yIHdpdGggUmVmQ291
bnRlZEFycmF5IHNpbmNlIGl0IGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9ubHkgZGF0YS4K
KyAgICAgICAgMy4gVXNlIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldCBm
b3IgU3RyaW5nVGFibGVzIHNpbmNlIHRoaXMgaXMgY29uc3RydWN0ZWQtb25jZS1sb29rdXAtb25s
eSBkYXRhLiBXZSBhbHNvIGFkZAorICAgICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQgc3VwcG9ydCBmb3IgQ2FjaGVkVHlwZXMuCisgICAgICAgIDQuIFVzZSBy
ZXNpemVUb0ZpdCBmb3IgU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyBhbmQgU3dpdGNoSnVtcFRhYmxl
cy4KKyAgICAgICAgNS4gSklUU3R1YlJvdXRpbmVTZXQncyBWZWN0b3Igc2hvdWxkIGJlIHNocnVu
ay4KKyAgICAgICAgNi4gQmxvY2tEaXJlY3RvcnlCaXRzJ3MgVmVjdG9yJ3MgaW5pdGlhbCBzaXpl
IHNob3VsZCBiZSBzbWFsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2Up
OgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVj
b2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sp
OgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6
OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5
SWRTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6Oklu
QnlJZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJ
bnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0p1bXBUYWJsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNB
Y2Nlc3M6OnZpc2l0V2VhayBjb25zdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFu
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5r
VG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAg
IChKU0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0
b3J5Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJv
dXRpbmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAg
KEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpwb3BBbGxDaGVja3BvaW50T1NS
U2lkZVN0YXRlVW50aWwpOgorCiAyMDIxLTA0LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZWR1Y2UgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gY291
bnQgZW1pdHRlZCBmb3IgYGNsYXNzIGV4dGVuZHNgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxZGRmNTUyODhiN2Q3ZmQ5NzQz
NGNjYjI5ZDliMTA4MTg3OGJmMzAuLjYzYjJiMmE5ODUwMTNhYTNkOTY1NmYyYzhkMTgwODM4MTg3
MTZjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3Jz
IGluIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHJiZWdpbiBhbmQgcmVuZCB0byBtYWtlIFJlZkNvdW50ZWRBcnJheSB1c2FibGUgZm9yIFZl
Y3RvciBjbGllbnRzIHdobyB1c2UgdGhlc2UgZmVhdHVyZXMuCisKKyAgICAgICAgKiB3dGYvUmVm
Q291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6YmVnaW4pOgor
ICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmVuZCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6
OmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6cmJlZ2luKToKKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyZW5kKToKKyAgICAgICAgKFdURjo6UmVmQ291
bnRlZEFycmF5OjpyYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6
OnJlbmQgY29uc3QpOgorCiAyMDIxLTA0LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05l
YXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCA2NGUyYTAyODZlODU3YTFjNjM0NDU3MGE1M2Rj
ZGE3OGZkZGJhMzIzLi4zNmMzNDA5ZGJiN2Y0N2ZjZGYyYTRkYzhlYjUzMjZkZjdiZGU4YjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApA
QCAtMjgxLDYgKzI4MSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQog
dm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1
ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewogICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IG1ha2VV
bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1lU2h1
ZmZsZURhdGEtPnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5jcHAKaW5kZXggYWU3YTRmN2M3NDI3OTM2NjRlNjk3YTVmNWRjYzQxZTRhMDM4MmNj
MS4uZDU0ZmEyM2JlYzNkMzUwYzZjOGVjMDIxZTg0NzZjYTU0OTg0MjlkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuY3BwCkBAIC00MSw2ICs0MSwxMSBAQCBib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaQogICAg
IHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
K3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3Zh
cmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGlu
ZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4
aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGlu
ZUJsb2NrLT5tX2xvY2spOwpAQCAtMTA5LDYgKzExNCw3IEBAIENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6
c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBy
ZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAg
LTE5MSw2ICsxOTcsNyBAQCB2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZShjb25z
dCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVu
ZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93
KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwog
CiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAppbmRleCBlNjdi
NjM4Mzg4NDlmNTIzZWZiNjk1ZWYxZWRiMDk4N2I2MmY1ODFmLi5hOTg4ZjJhZjhiMWJiNTJjNWE0
M2FjODUxZmZhMjI2OGZkZjM0MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODcsNiArODcsNyBA
QCBjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOwogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGEyMzQxOThhOWFlNTQwY2YzMjU2NGJkNTdhZjQwZTA4MjNlYzA0MGQu
LjI4Y2E5ZWM1ZmZkYjI1ZTIxZWQ2OGUxM2FhOTZjMjk5NTdlYzQ0OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00MzcsNyArNDM3LDcgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaXplX3Qg
Y291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVz
KCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5n
cm93KGNvdW50KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5yZXNpemVUb0ZpdChjb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIHB0ciA9IHVubGlua2VkQ29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuYmVnaW4oKTsKICAgICAgICAgICAg
ICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9y
IGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0
VGFibGUuZW5kKCk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5ncm93KGNvdW50KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5yZXNpemVUb0ZpdChjb3VudCk7CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGkpOwogICAgICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxl
ID0gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKaW5kZXggOTIzMTQ3ZDYzM2U3
ZjMzZmQwNTQ0YzY0NTRjNmNlMjE0ZGEwYzMxMS4uMDE5MDlhMWUxMzBiYWIwMjQ0OTA5NTZmMWRj
MzlkNWQ5NGY5MTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuY3BwCkBAIC00MCw2ICs0MCwxMSBAQCBib29sIERlbGV0ZUJ5U3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQogICAgIHJl
dHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3Zv
aWQgRGVsZXRlQnlTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlu
a1RvRml0KCk7Cit9CisKIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
QmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOwpAQCAtMTI5LDYgKzEz
NCw3IEBAIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMjE0LDYgKzIyMCw3IEBAIHZvaWQgRGVsZXRlQnlTdGF0dXM6Om1lcmdlKGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhl
clZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAg
fQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIExp
a2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCmluZGV4IGIwNzZiZjI2OWVjNzgwYmU4NmVkOTNlNGUxMzY3NjljZmFm
N2MzMWIuLjViYTgwM2FhOTc3ZmYzZGM1YmVlNTg3YjQ3NzFiMDA0MTZiYmQ2YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCkBAIC04Niw2
ICs4Niw3IEBAIGNsYXNzIERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXpl
KFZNJik7CiAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQm
KTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5jcHAKaW5kZXggZDk1NzIxZWViMDJmNDgzNTM0MTkzYmZiN2U3ZWRjNTBhMGE4MzM2Ny4uYmQ3
NGZiNjRmMzQxMTUxNzBhMDFjMTYxOGI4NWU0N2UwNDc2ZWI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC00NSw2ICs0NSwxMSBAQCBi
b29sIEdldEJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFu
dCk7CiB9CiAKK3ZvaWQgR2V0QnlTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3Zhcmlh
bnRzLnNocmlua1RvRml0KCk7Cit9CisKIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4KQogewogICAgIFZNJiB2bSA9IHByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0zMzksNiAr
MzQ0LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfSB9CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAgICAgCkBAIC00MzMsNiArNDM5LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBs
KgogICAgICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOwog
ICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC00OTQsNiArNTAxLDcgQEAgdm9pZCBHZXRC
eVN0YXR1czo6bWVyZ2UoY29uc3QgR2V0QnlTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYg
KCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
cmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2U6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oCmluZGV4IGQzYjFjNjI2ZGNhZDM3OWE5
ZmQ4YmIwNDQ0Y2ExZmQ3Y2I4YmZmMjYuLjI0MzczMGZkZTMzYWU3NWVmMWY2MzZjNDE3Zjg4Yjhl
OTk2ZjUyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eVN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1
cy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgY2xhc3MgR2V0QnlTdGF0dXMgZmluYWwgewogICAgIGJv
b2wgZmluYWxpemUoVk0mKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCiAK
ICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAppbmRl
eCA5NTc4MzAxODZjOWVlOWMyNDExOWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFiMmFl
YzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMxM2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJbkJ5
SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkKICAg
ICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQog
Cit2b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hy
aW5rVG9GaXQoKTsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBF
eGl0RmxhZyBkaWRFeGl0KQogewpAQCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJbkJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0
IENvbmN1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hyaW5r
VG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyMzks
NyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRh
a2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmgKaW5kZXggMGY0N2ZkZjdjYjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4uN2Yx
NWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBAIGNs
YXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAj
ZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOworICAg
IHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9u
IH07CiAgICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5kZXgg
Y2Y4NThmZDM5NDY4MGE1ZWVhOTAwOGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3NjY5
Mzc4MzEzMmQ5OThmZDhlNjQxZjVjZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAgdm9p
ZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJpYW50
JiB2YXJpYW50KQogICAgIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50
KTsKIH0KIAordm9pZCBJbnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92
YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFw
JiBpbmZvTWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsxMDEs
NyBAQCBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
byhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUoKSA9
PSBBY2Nlc3NDYXNlOjpJbnN0YW5jZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5z
aHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZT
dGF0dXMuaAppbmRleCA4NWM0NWNjOGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIyLi5i
YTk5YzY3OThhNjVmYzFhZTBkM2YyNjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2ICsx
MDYsNyBAQCBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5zdGFu
Y2VPZlZhcmlhbnQsIDI+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKaW5kZXggYzE1OWFjMzE3YTk3ODQ2YWE4ZGQ2NjFkNjg5N2MwNWE1NTU5
YWU5Yi4uNWZiODRhMWU1NGVkZWJmMGJhYjYxOGZmN2I4MjM5ZmJhOWIzMmZmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtMzAsNyArMzAsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgc3RydWN0IFN0cmluZ0p1
bXBUYWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9m
ZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICAgICAgdXNpbmcgU3RyaW5nT2Zm
c2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxl
IG9mZnNldFRhYmxlOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
PEpTU3dpdGNoUHRyVGFnPiBjdGlEZWZhdWx0OyAvLyBGSVhNRTogaXQgc2hvdWxkIG5vdCBiZSBu
ZWNlc3NhcnkgdG8gc3RvcmUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDI3ZGQxMzhlZmI2YTJmYTFjZjdk
Mjk3MzU1NTU2ZWYzNzZjYjcxNjcuLjU1ZjgzYzA1ODc0M2RiYmQxNzBlOTc1MzRjMzM0NzEyMmM4
Nzk0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcApAQCAtMzQ5LDExICszNDksOSBAQCBib29sIFBvbHltb3JwaGljQWNj
ZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vh
ayh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KiB3ZWFrUmVmZXJlbmNlcyA9IG1fd2Vha1JlZmVyZW5jZXMu
Z2V0KCkpIHsKLSAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5j
ZSA6ICp3ZWFrUmVmZXJlbmNlcykgewotICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2Vk
KHdlYWtSZWZlcmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQorICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVu
Y2UgOiBtX3dlYWtSZWZlcmVuY2VzKSB7CisgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3
ZWFrUmVmZXJlbmNlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NDksMTAgKzc0Nyw4IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9jCiAgICAgCiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUu
bV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2Fs
bFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RG
TW92ZShzdGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQoKTsK
LSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmll
cjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIH0KKyAgICBp
ZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV93ZWFrUmVmZXJl
bmNlcyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShzdGF0
ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4i
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmgKaW5kZXggMjA4ODQwZTcxZjc2YTRkNWQ5ZTU3NzQ1ZWU2NDg2OTBmZjdhZDQz
NS4uYmRmNWM3ZjJlN2M2ODkzZjFhOTU5ZjIyZmZmODk1NTg1MGRmMmE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNyArMTg4LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNB
Y2Nlc3MgewogICAgIExpc3RUeXBlIG1fbGlzdDsKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+
IG1fc3R1YlJvdXRpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1
cmVTdHViSW5mbz4gbV93YXRjaHBvaW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFdy
aXRlQmFycmllcjxKU0NlbGw+Pj4gbV93ZWFrUmVmZXJlbmNlczsKKyAgICBSZWZDb3VudGVkQXJy
YXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3Qg
QWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA2YjBiODc4Y2U3MTA4ZWIwNWE5MDI1YTE4Zjgx
NTgxOTQwMGRlNDUzLi5lNWQxMzJiNjI4NzIwMmQwZDI1NDYwZjY5YmQ1NjhjMGI0YWViMTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CkBAIC00Myw2ICs0MywxMSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFy
aWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBQdXRCeUlkU3RhdHVzOjpzaHJp
bmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTIyOSw2ICsyMzQs
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAg
ICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1h
cnkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTM3MSw2ICszNzcs
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtUb0Zp
dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQzNyw2ICs0NDQsNyBAQCB2
b2lkIFB1dEJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIG90aGVyKQogICAg
ICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA4MTFjYzdmNzBm
OTk1M2JhOGYyN2Q3YzQ2MzU1MWY2MzgwMzRiZTE4Li44NzhlMjUyZGI2OWFjNTcxM2RjOGU4Zjhi
NjQ0MDAwY2FlNjMwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBjbGFzcyBQdXRCeUlkU3RhdHVzIGZp
bmFsIHsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayosIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAogICAgIGJv
b2wgYXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFZlY3RvcjxQdXRCeUlkVmFy
aWFudCwgMT4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKaW5kZXggZGU0OGY3NzA0ZWQ4NjAz
N2M4NDMyNTA0MjJmYzlkZDYyYmVkNWQ5Ni4uODMwN2EzNDYxYzljZTk1NTQ2MDAxMmVmNWM1ZjMz
N2U2MmFjZjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZh
cmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3Zhcmlh
bnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlua1Rv
Rml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIFNldFByaXZhdGVC
cmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2Rl
QmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMTMsNiArMTE4LDcgQEAgU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmUKICAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAgIH0K
IAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTE5NSw2ICsyMDEsNyBAQCB2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6
bWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlm
ICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBt
ZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5kZXgg
OWE4MzRmODVjYzBlYzc2OTlmZjQzOTMxZmE5ZTZmNjE1YzhmMWVlNC4uNDhlYTY3ZTQ0MmZhNWQx
YTk5OWU2NzFhZmQ3NjI5YTY1NDgyZmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODgsNiArODgsNyBA
QCBjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJp
YW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVhOTg4ZjMzN2Q0MjQzMmJhZjY2YjMw
NmYzMTQ1NS4uMjQ4NjkzNzQ3MTE3OGFkZWNkNmZiNmU5NmE3Yjk1YjE5MjdiN2U4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
QEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0
Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+
CkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAg
ICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7Cisg
ICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgU3Ry
aW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRG
b3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBhMzc4OTg5MjM3Y2Q0YjFmNjNiYjdk
M2Q5NWMwNzY4NDcyZTI1YWJkLi41YWViYmZhZDRlNTkwMjdkZmRiODc4ZWIyMDJlM2JmOTkwOTI4
NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIGNsYXNzIEpJVENvZGUgZmluYWwgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiAgICAg
Ly8KICAgICAvLyBUaGUga2V5IG1heSBub3QgYWx3YXlzIGJlIGEgdGFyZ2V0IGZvciBPU1IgRW50
cnkgYnV0IHRoZSBsaXN0IGluIHRoZSB2YWx1ZSBpcyBndWFyYW50ZWVkCiAgICAgLy8gdG8gYmUg
dXNhYmxlIGZvciBPU1IgRW50cnkuCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8
Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVj
b2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4gdGllclVwSW5Mb29wSGll
cmFyY2h5OwogCiAgICAgLy8gTWFwIGVhY2ggYnl0ZWNvZGUgb2YgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlciB0byBpdHMgc3RyZWFtIGluZGV4LgogICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQ+IGJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uaAppbmRleCBiZDFkOGEwNzI2NjJjYzM1M2E0NDdjMDViYjZmMWU0MGU5OWRiY2IyLi5h
YWVhNTg0YjA2MjBjNGEzZTE4NDVlZjFiY2E5NWZhMjMzZjAxM2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgIGJvb2wgd2lsbFRyeVRvVGllclVwKCkg
Y29uc3QgeyByZXR1cm4gbV93aWxsVHJ5VG9UaWVyVXA7IH0KICAgICB2b2lkIHNldFdpbGxUcnlU
b1RpZXJVcChib29sIHdpbGxUcnlUb1RpZXJVcCkgeyBtX3dpbGxUcnlUb1RpZXJVcCA9IHdpbGxU
cnlUb1RpZXJVcDsgfQogCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8Qnl0ZWNv
ZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7IHJldHVybiBtX3RpZXJVcEluTG9v
cEhpZXJhcmNoeTsgfQorICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRlZEFycmF5
PEJ5dGVjb2RlSW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVy
VXBJbkxvb3BIaWVyYXJjaHk7IH0KICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4mIHRpZXJVcEFu
ZE9TUkVudGVyQnl0ZWNvZGVzKCkgeyByZXR1cm4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rl
czsgfQogCiAgICAgZW51bSBTdGFnZSB7IFByZXBhcmluZywgQ29tcGlsaW5nLCBSZWFkeSwgQ2Fu
Y2VsbGVkIH07CkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgUGxhbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxQbGFuPiB7CiAgICAgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMgbV9nbG9i
YWxQcm9wZXJ0aWVzOwogICAgIFJlY29yZGVkU3RhdHVzZXMgbV9yZWNvcmRlZFN0YXR1c2VzOwog
Ci0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4+IG1fdGll
clVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRl
ZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsKICAgICBWZWN0
b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsKIAogICAgIFN0
YWdlIG1fc3RhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAppbmRleCBmYTEzZjk1ZTVjZWVkMzRkNjY0
Njg2ZmNmNjMyNWM4NzZiOWMxNTU4Li5iM2EzMDM4MTRiYTk2NTUxY2JhYWZmN2Y1YTIzMDIyOGM5
MTI3NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCF0aWVyVXBDYW5kaWRhdGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQoZW50cnku
a2V5LCBXVEZNb3ZlKHRpZXJVcENhbmRpZGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQoZW50cnkua2V5LCB0aWVyVXBDYW5k
aWRhdGVzKTsKICAgICAgICAgfQogICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRXaWxsVHJ5VG9U
aWVyVXAodHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAppbmRleCBhMzliMTQzZjc3MzAxNmEzYjVk
YWVjODM1ZjMzMTkzN2VkODNlMTkzLi4xODFiNDliODA2OGI5NjVjYjgzNzk1OGRlMGMxNmExMGJh
MTI3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeUJpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9y
eUJpdHMuaApAQCAtMjIyLDcgKzIyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOworICAgIFZl
Y3RvcjxTZWdtZW50LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDI+IG1fc2VnbWVudHM7CiAgICAgdW5z
aWduZWQgbV9udW1CaXRzIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCmluZGV4IGE5MWU5ODhiMTg5NWI1ZmU0ZjgxZGE3
Nzc5MmIxM2I1YjQ5MzIzM2UuLjI3YzRlNmI4ZTBhYjA0ZGRlNmYyZmVhMWNlMDdlYjNjNTNiMzhm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5l
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNl
dC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEpJVFN0dWJSb3V0aW5lU2V0OjpkZWxldGVV
bm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKQogICAgICAgICB9CiAgICAgICAgIHJvdXRp
bmUucm91dGluZS0+ZGVsZXRlRnJvbUdDKCk7CiAgICAgfQotICAgIG1fcm91dGluZXMuc2hyaW5r
KGRzdEluZGV4KTsKKyAgICBtX3JvdXRpbmVzLnNocmlua0NhcGFjaXR5KGRzdEluZGV4KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAppbmRleCA3MjAxZWUxY2YzMWU1MjZjN2M3NDUw
MDVmM2VhZTViNGUyYWM5OTlhLi5hNmRlMmE0Yzc2OGJlMTE4OTBkNjcyOTRkNGQ3MzFlYmM3NzJj
Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZm
bGVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
RGF0YS5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBDYWxsRnJh
bWVTaHVmZmxlRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Cisg
ICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgeworICAgICAgICBhcmdzLnNocmlua1RvRml0KCk7
CisgICAgfQorCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAgICAgdW5zaWduZWQg
bnVtTG9jYWxzIHsgVUlOVF9NQVggfTsKICAgICB1bnNpZ25lZCBudW1QYXNzZWRBcmdzIHsgVUlO
VF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHVi
Um91dGluZS5oCmluZGV4IDQ2YWEwMzlmYzc0ZmUwYTZlNjRjM2VjMTRlZjk2MTNlN2U4YjUzYjku
LjU4ZDg2NGQ3ODhiNzIwYWIyMDUzYWJlOWIyODc4YWE5MThjOWUzMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk2
LDcgKzk3LDcgQEAgY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVy
bmFsKFNsb3RWaXNpdG9yJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+PiBtX2NlbGxzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4gbV9jZWxsczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZmE3YjdlYjZlZmFlMGVjYzJiNzJkNTllNTVmNGUxZjFk
NmNiZDM5Yy4uNmMxM2YxMjYzMGExYjU5NjI5ZGQ5OTJhNDlmM2M3YWNiOGRkYjM3NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lIGZpbmFsIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAgICAgdm9pZCBtYXJr
UmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoQWJzdHJhY3RTbG90VmlzaXRvciYpIGZpbmFsOwogICAg
IHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgZmluYWw7CiAK
LSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7CisgICAgUmVm
Q291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX3ZhcmlhbnRzOwogICAgIFVuaXF1
ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RDb3VudHM7CiAgICAgQmFnPFBvbHltb3JwaGljQ2FsbE5v
ZGU+IG1fY2FsbE5vZGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAppbmRleCA3YmEyNzFkOGM2YjNmMTkwNjYyYTAxYmVmOGUzMWQyMTFjOGNj
MmVhLi42OTI5MDZhMjBhYWMwNDA1MjEyNjMzZDNmNThkZmJiMjUyNWIxNDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Z0ltcGwuaD4KIApAQCAtNjY5LDEwICs2NzAsMTAgQEAgY2xhc3MgQ2FjaGVkUGFpciA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8c3RkOjpwYWlyPFNvdXJjZVR5cGU8Rmlyc3Q+LCBTb3VyY2VUeXBlPFMK
ICAgICBTZWNvbmQgbV9zZWNvbmQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+
PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0
eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4K
LWNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1h
cDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+LCB0eXBl
bmFtZSBUYWJsZVRyYWl0cyA9IFdURjo6SGFzaFRhYmxlVHJhaXRzPgorY2xhc3MgQ2FjaGVkSGFz
aE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5
PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRz
QXJnLCBUYWJsZVRyYWl0cz4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBW
PgotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OworICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywg
S2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzPjsKIAogcHVibGljOgog
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1hcDxTb3VyY2VUeXBlPEtl
eT4sIFNvdXJjZVR5cGU8VmFsdWU+PiYgbWFwKQpAQCAtNjk2LDYgKzY5Nyw5IEBAIGNsYXNzIENh
Y2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VU
eXBlPEtleT4sIFNvdXJjCiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFBhaXI8S2V5LCBWYWx1ZT4+
IG1fZW50cmllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIE1h
cHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+PgordXNpbmcgQ2Fj
aGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwID0gQ2FjaGVkSGFzaE1h
cDxLZXksIFZhbHVlLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgV1RG
OjpNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hUYWJsZVRyYWl0cz47CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2UgOiBw
dWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VD4gewogcHVibGljOgpAQCAtOTEwLDcgKzkxNCw3
IEBAIGNsYXNzIENhY2hlZFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU+IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFz
aE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4sIFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlOjogT2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFibGU7CisgICAgQ2FjaGVkTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRTdHJpbmdJ
bXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uPiBtX29mZnNldFRh
YmxlOwogfTsKIAogY2xhc3MgQ2FjaGVkQml0VmVjdG9yIDogcHVibGljIFZhcmlhYmxlTGVuZ3Ro
T2JqZWN0PEJpdFZlY3Rvcj4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDJjMTQ5ZmE3MjYyMGJhY2EzZGFhMjIyODJkODdiZTc5ZTVlODkwNTkuLjlmMzIxOTM0NTY4MDk1
ZDM5ZDE5ZDc5ZDcwNTIwNmM0Zjk1MmM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTExMjcsNiArMTEyNyw3IEBAIHZvaWQgVk06OnBvcEFsbENoZWNrcG9pbnRPU1JT
aWRlU3RhdGVVbnRpbChDYWxsRnJhbWUqIHRhcmdldCkKICAgICAvLyBXZSBoYXZlIHRvIHdvcnJ5
IGFib3V0IG1pZ3JhdGluZyBmcm9tIGFub3RoZXIgdGhyZWFkIHNpbmNlIHRoZXJlIG1heSBiZSBu
byBjaGVja3BvaW50cyBpbiBvdXIgdGhyZWFkIGJ1dCBvbmUgaW4gdGhlIG90aGVyIHRocmVhZHMu
CiAgICAgd2hpbGUgKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5zaXplKCkgJiYgYm91bmRzLmNvbnRh
aW5zKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5sYXN0KCktPmFzc29jaWF0ZWRDYWxsRnJhbWUpKQog
ICAgICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUudGFrZUxhc3QoKTsKKyAgICBtX2NoZWNrcG9p
bnRTaWRlU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0KIAogdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZN
JiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291
cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMxMzhiMjYyMDEwMzQ5
OTA3YzI1NjlmZWMyZGIxNGExYy4uZGNhMzgzNDQzZjgxYjA5NzRmYzU5ZDY0NTkwNDAyNjZmODMy
ZGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIv
U291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUwLDExIEBAIGNsYXNz
IFJlZkNvdW50ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3RydWN0b3JUYWcgeyBD
b21tb25Db3B5Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yID0g
VCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAgICB1c2luZyByZXZl
cnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgICB1c2lu
ZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0
ZXJhdG9yPjsKKwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsKICAgICAKICAgICBS
ZWZDb3VudGVkQXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikKQEAgLTE2OSw4ICsx
NzQsOCBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQogICAgIAogICAgIFQqIGRhdGEoKSB7
IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX2RhdGEpOyB9Ci0gICAgVCogYmVnaW4oKSB7IHJl
dHVybiBkYXRhKCk7IH0KLSAgICBUKiBlbmQoKQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1
cm4gZGF0YSgpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkKICAgICB7CiAgICAgICAgIGlmICghbV9k
YXRhKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzksOCArMTg0LDEzIEBAIGNsYXNzIFJl
ZkNvdW50ZWRBcnJheSB7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5kYXRhKCk7IH0KLSAg
ICBjb25zdCBUKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFy
cmF5Kj4odGhpcyktPmJlZ2luKCk7IH0KLSAgICBjb25zdCBUKiBlbmQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsgfQorICAgIGNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJy
YXkqPih0aGlzKS0+YmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9CisKKyAg
ICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVn
aW4oKSk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0
ZXJhdG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICAgIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IoZW5kKCkpOyB9CiAgICAgCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425119</attachid>
            <date>2021-04-03 18:21:46 -0700</date>
            <delta_ts>2021-04-03 18:44:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403182145.patch</filename>
            <type>text/plain</type>
            <size>64586</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi43NzMxZjlmNTJhYTFhNTkz
MmNkYzYzMDRjZWYwYThlZmJhYTRmMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3JzIGluIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkIFhYWFN0YXR1
czo6c2hyaW5rVG9GaXQgdG8gc2hyaW5rIHVuZGVybHlpbmcgZHluYW1pYyBWZWN0b3JzLgorICAg
ICAgICAyLiBSZXBsYWNlIHRpZXJVcEluTG9vcEhpZXJhcmNoeSdzIFZlY3RvciB3aXRoIFJlZkNv
dW50ZWRBcnJheSBzaW5jZSBpdCBpcyBjb25zdHJ1Y3RlZC1vbmNlLWxvb2t1cC1vbmx5IGRhdGEu
CisgICAgICAgIDMuIFVzZSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQg
Zm9yIFN0cmluZ1RhYmxlcyBzaW5jZSB0aGlzIGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9u
bHkgZGF0YS4gV2UgYWxzbyBhZGQKKyAgICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0IHN1cHBvcnQgZm9yIENhY2hlZFR5cGVzLgorICAgICAgICA0LiBVc2Ug
cmVzaXplVG9GaXQgZm9yIFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgYW5kIFN3aXRjaEp1bXBUYWJs
ZXMuCisgICAgICAgIDUuIEpJVFN0dWJSb3V0aW5lU2V0J3MgVmVjdG9yIHNob3VsZCBiZSBzaHJ1
bmsuCisgICAgICAgIDYuIEJsb2NrRGlyZWN0b3J5Qml0cydzIFZlY3RvcidzIGluaXRpYWwgc2l6
ZSBzaG91bGQgYmUgc21hbGwuCisgICAgICAgIDcuIE1ha2UgUG9seVByb3RvQWNjZXNzQ2hhaW4g
UmVmQ291bnRlZCwgYW5kIHVzZSBSZWZDb3VudGVkQXJyYXkgZm9yIGl0cyBWZWN0b3I8U3RydWN0
dXJlSUQ+LiBBbmQgcmVtb3ZlIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjbG9uZS4KKyAgICAgICAg
ICAgSnVzdCBoYXZpbmcgUmVmIGlzIGVub3VnaCBzaW5jZSB0aGlzIGlzIGltbXV0YWJsZSBkYXRh
LgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAg
KiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vz
c0Nhc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6Okdl
dEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSk6CisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQpOgor
ICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmg6CisgICAgICAgICogYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UpOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9K
dW1wVGFibGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHA6
CisgICAgICAgIChKU0M6OlBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9B
Y2Nlc3NDaGFpbjo6Y2hhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlBvbHlQcm90b0FjY2Vzc0NoYWluOjpmb3JFYWNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6UG9seVByb3RvQWNjZXNzQ2hhaW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNz
Q2FzZSk6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6
CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAo
SlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJn
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29k
ZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6
dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOgorICAgICAg
ICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91
dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAgICAgICAg
KiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1
ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmg6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0
ZVVudGlsKToKKwogMjAyMS0wNC0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CiAKICAgICAgICAgUmVkdWNlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGNvdW50IGVtaXR0
ZWQgZm9yIGBjbGFzcyBleHRlbmRzYApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMWRkZjU1Mjg4YjdkN2ZkOTc0MzRjY2IyOWQ5
YjEwODE4NzhiZjMwLi42M2IyYjJhOTg1MDEzYWEzZDk2NTZmMmM4ZDE4MDgzODE4NzE2YzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA0LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gU2hyaW5rIHNvbWUgb2YgVmVjdG9ycyBpbiBKU0MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByYmVn
aW4gYW5kIHJlbmQgdG8gbWFrZSBSZWZDb3VudGVkQXJyYXkgdXNhYmxlIGZvciBWZWN0b3IgY2xp
ZW50cyB3aG8gdXNlIHRoZXNlIGZlYXR1cmVzLgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWRB
cnJheS5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmJlZ2luKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjplbmQpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJy
YXk6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjplbmQgY29u
c3QpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbik6CisgICAgICAgIChX
VEY6OlJlZkNvdW50ZWRBcnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJh
eTo6cmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyZW5kIGNv
bnN0KToKKwogMjAyMS0wNC0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNF
bmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAppbmRleCAyMDJhMmQ1ZjMyYzljMjIwZDBlOTBiZWQ3ZTk4MmYxYjQ5MzZhYzMy
Li5hNDgxMzIwNjQ0MTAwODc0ZjY3MDRkNjY0Y2I2ZGY4MDAxMmVkMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIERFRklORV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiAKLUFjY2Vzc0Nhc2U6OkFjY2Vz
c0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKK0FjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5
cGVBY2Nlc3NDaGFpbikKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0
KQogICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmkKICAgICBSRUxF
QVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1ZhbGlkKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0
eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNj
ZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEx
MCw3ICsxMTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsCi0gICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKKyAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4
IDYwMjU3YjFiNWJjYTk1Y2QzY2M2M2IzZjNhMDk4NWM3MzdiYTdkZTYuLmYyODdmYmZiZGJiODY3
OTkzMjk0Zjc5YWNkZWNlZmE1NWViMGMyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgY2xhc3MgQWNjZXNzQ2Fz
ZSB7CiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCi0gICAgICAgIFN0cnVjdHVyZSogPSBudWxs
cHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVs
bHB0cik7CisgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
Ci0gICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKIAogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CkBAIC0yNTUsMjAgKzI1NSw5
IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogI2VuZGlmCiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgQWNj
ZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEFj
Y2Vzc0Nhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKICAgICBBY2Nlc3NDYXNl
KEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2Fz
ZSYgb3RoZXIpCi0gICAgICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKLSAgICAgICAgLCBtX3N0
YXRlKG90aGVyLm1fc3RhdGUpCi0gICAgICAgICwgbV92aWFQcm94eShvdGhlci5tX3ZpYVByb3h5
KQotICAgICAgICAsIG1fb2Zmc2V0KG90aGVyLm1fb2Zmc2V0KQotICAgICAgICAsIG1fc3RydWN0
dXJlKG90aGVyLm1fc3RydWN0dXJlKQotICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90aGVyLm1f
Y29uZGl0aW9uU2V0KQotICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICBpZiAob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKLSAgICAg
ICAgICAgIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4gPSBvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0No
YWluLT5jbG9uZSgpOwotICAgIH0KKyAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90
aGVyKSA9IGRlZmF1bHQ7CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNz
Q2FzZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1v
cmRpYWw7IH0KQEAgLTMyMSw3ICszMTAsNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29uZGl0aW9uU2V0OwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBtX3BvbHlQcm90b0FjY2Vzc0NoYWluOworICAg
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbjsKIAog
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggNjRlMmEwMjg2ZTg1
N2ExYzYzNDQ1NzBhNTNkY2RhNzhmZGRiYTMyMy4uMzZjMzQwOWRiYjdmNDdmY2RmMmE0ZGM4ZWI1
MzI2ZGY3YmRlOGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKQEAgLTI4MSw2ICsyODEsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlz
aXRXZWFrKFZNJiB2bSkKIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNv
bnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxlRGF0YSkKIHsKICAgICBtX2ZyYW1lU2h1
ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7
CisgICAgbV9mcmFtZVNodWZmbGVEYXRhLT5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCmluZGV4IGFlN2E0ZjdjNzQyNzkzNjY0ZTY5N2E1
ZjVkY2M0MWU0YTAzODJjYzEuLmQ1NGZhMjNiZWMzZDM1MGM2YzhlYzAyMWU4NDc2Y2E1NDk4NDI5
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZh
dGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0No
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBDaGVja1By
aXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQmIHZhcmkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMs
IHZhcmlhbnQpOwogfQogCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpzaHJpbmtUb0Zp
dCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENv
ZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTEwOSw2ICsxMTQsNyBAQCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaQogICAgICAgICAgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAg
ICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xOTEsNiArMTk3LDcgQEAgdm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czo6bWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQogICAgICAg
ICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzLmgKaW5kZXggZTY3YjYzODM4ODQ5ZjUyM2VmYjY5NWVmMWVkYjA5ODdiNjJmNTgxZi4uYTk4
OGYyYWY4YjFiYjUyYzVhNDNhYzg1MWZmYTIyNjhmZGYzNDBlZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgK
QEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewog
ICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBD
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMjM0MTk4YTlhZTU0MGNmMzI1NjRiZDU3
YWY0MGUwODIzZWMwNDBkLi4yOGNhOWVjNWZmZGIyNWUyMWVkNjhlMTNhYTk2YzI5OTU3ZWM0NDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NDM3LDcgKzQzNyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3RyaW5n
U3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXMucmVzaXplVG9GaXQoY291bnQpOwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgVW5saW5r
ZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBwdHIgPSB1bmxp
bmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmJlZ2lu
KCk7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNl
dFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0g
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuZ3Jvdyhjb3VudCk7CisgICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMucmVzaXplVG9GaXQoY291bnQpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHNvdXJjZVRhYmxlID0gdW5saW5rZWRD
b2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShpKTsKICAgICAgICAgICAgICAgICBTaW1wbGVKdW1w
VGFibGUmIGRlc3RUYWJsZSA9IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1tpXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCmlu
ZGV4IDkyMzE0N2Q2MzNlN2YzM2ZkMDU0NGM2NDU0YzZjZTIxNGRhMGMzMTEuLjAxOTA5YTFlMTMw
YmFiMDI0NDkwOTU2ZjFkYzM5ZDVkOTRmOTExZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApAQCAtNDAsNiArNDAsMTEgQEAgYm9v
bCBEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYg
dmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZh
cmlhbnQpOwogfQogCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAg
bV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0
YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0
dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0
KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2Nr
KTsKQEAgLTEyOSw2ICsxMzQsNyBAQCBEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKQEAgLTIxNCw2ICsyMjAsNyBAQCB2b2lkIERlbGV0ZUJ5U3RhdHVz
OjptZXJnZShjb25zdCBEZWxldGVCeVN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFw
cGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VT
bG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAppbmRleCBiMDc2YmYyNjllYzc4MGJlODZl
ZDkzZTRlMTM2NzY5Y2ZhZjdjMzFiLi41YmE4MDNhYTk3N2ZmM2RjNWJlZTU4N2I0NzcxYjAwNDE2
YmJkNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRl
QnlTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBEZWxldGVCeVN0YXR1cyBmaW5hbCB7CiAg
ICAgYm9vbCBmaW5hbGl6ZShWTSYpOwogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IGQ5NTcyMWVlYjAyZjQ4MzUzNDE5M2JmYjdlN2Vk
YzUwYTBhODMzNjcuLmJkNzRmYjY0ZjM0MTE1MTcwYTAxYzE2MThiODVlNDdlMDQ3NmViNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAt
NDUsNiArNDUsMTEgQEAgYm9vbCBHZXRCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1f
dmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIEdldEJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgp
Cit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBHZXRCeVN0YXR1cyBHZXRC
eVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52
bSgpOwpAQCAtMzM5LDYgKzM0NCw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIH0gfQogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgICAgIApAQCAtNDMzLDYgKzQzOSw3IEBAIEdldEJ5
U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBV
bmlxdWVkU3RyaW5nSW1wbCoKICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhMaWtlbHlU
YWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCisgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNDk0LDYgKzUw
MSw3IEBAIHZvaWQgR2V0QnlTdGF0dXM6Om1lcmdlKGNvbnN0IEdldEJ5U3RhdHVzJiBvdGhlcikK
ICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0Zp
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAppbmRleCBk
M2IxYzYyNmRjYWQzNzlhOWZkOGJiMDQ0NGNhMWZkN2NiOGJmZjI2Li4yNDM3MzBmZGUzM2FlNzVl
ZjFmNjM2YzQxN2Y4OGI4ZTk5NmY1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlTdGF0dXMuaApAQCAtMTIzLDYgKzEyMyw3IEBAIGNsYXNzIEdldEJ5U3RhdHVz
IGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7IC8vIFJldHVybiB0cnVlIGlmIHRoaXMg
Z2V0cyB0byBsaXZlLgogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJp
YW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCBlOGI0Y2E1ZTRiYmU1ZjcxMDM4
Mjc1MDE2YjlhZWMyYzUxOWQwYjg4Li5hNTY0MGY2MWY2ZjE4ZWFmNDBiOTBkMzBkNWRjY2ViZjYx
MTI3MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0ZXhwciBib29sIHZl
cmJvc2UgPSBmYWxzZTsKIH0KIAotR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBK
U09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NU
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94
eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCiB7CiAgICAg
bV9jdXN0b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7
CkBAIC01MCw3ICs1MCw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2
aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9t
QWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAot
ICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAg
ICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBHZXR0ZXI6CkBAIC02OCw3ICs2OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwKLSAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWlu
LCBib29sIHZpYVByb3h5LCAKKyAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vz
c0NoYWluLCBib29sIHZpYVByb3h5LCAKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gY3VzdG9tU2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNT
RVJUKHR5cGUgPT0gU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9
PSBDdXN0b21BY2Nlc3NvclNldHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2MDNmYmY2MjQ1NDYw
NzA3NzQxZTI1ODBmNDRmNzU0N2JkODJmODU5Li43MmM4ZGExNDRhYzc3ODBmZmVhMjhkZWQ0ZDlj
Njk4MTc4MDgwMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2Ug
ewogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAg
ICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQs
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCi0gICAgICAg
IEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgICAgICBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3Ry
dWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCi0gICAgICAgIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiwgYm9vbCB2aWFQcm94eSA9IGZhbHNlLAorICAgICAgICBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4sIGJv
b2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQ
dHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSA9
IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRl
ciYpIGNvbnN0IGZpbmFsOwpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogICAgIEZ1bmN0aW9u
UHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tQWNjZXNzb3I7IH0KIAogcHJpdmF0ZToKLSAgICBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwg
Ym9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1
c3RvbVNsb3RCYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAg
ICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRp
b25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+KTsKIAogICAgIEdldHRlclNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
SWRTdGF0dXMuY3BwCmluZGV4IDk1NzgzMDE4NmM5ZWU5YzI0MTE5YmY0N2RiZGU5Yzc0Y2VjZmFm
YzguLjQ5MzhhNjNjMWIyYWVjOTBiZmQwNDZjZjU3NDk2Yzg1MzEzYTI2NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCkBAIC00MSw2ICs0
MSwxMSBAQCBib29sIEluQnlJZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJp
YW50JiB2YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50
cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgSW5CeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7Cisg
ICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiAjaWYgRU5BQkxFKEpJVCkKIEluQnlJ
ZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CkBAIC0yMDAsNiArMjA1LDcgQEAg
SW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMjMzLDYgKzIzOSw3IEBAIHZvaWQgSW5CeUlkU3RhdHVzOjptZXJnZShjb25zdCBJbkJ5
SWRTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRTdGF0dXMuaAppbmRleCAwZjQ3ZmRmN2NiNmJkODdkYTJlYjczNTM0MDBj
YmFjYzQ5NTI0Y2U2Li43ZjE1ZmM1ZTQ2MWE5YTAyZTRmN2JkYjYxZjg3OTZjZmI3NjY5NWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCkBAIC0x
MTYsNiArMTE2LDcgQEAgY2xhc3MgSW5CeUlkU3RhdHVzIGZpbmFsIHsKICAgICBzdGF0aWMgSW5C
eUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8qLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKTsKICNlbmRpZgogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5
SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgU3RhdGUgbV9zdGF0
ZSB7IE5vSW5mb3JtYXRpb24gfTsKICAgICBWZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4gbV92YXJp
YW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9m
U3RhdHVzLmNwcAppbmRleCBjZjg1OGZkMzk0NjgwYTVlZWE5MDA4YmE3MGU3MzdiMTg0MmZkYjZj
Li43M2M3ODE5YjUxNjc2NjkzNzgzMTMyZDk5OGZkOGU2NDFmNWNmMTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCkBAIC0z
OSw2ICszOSwxMSBAQCB2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
SW5zdGFuY2VPZlZhcmlhbnQmIHZhcmlhbnQpCiAgICAgYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1f
dmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1Rv
Rml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkK
IHsKQEAgLTk2LDYgKzEwMSw3IEBAIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsCiAgICAgICAgICAg
ICBhY2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6Okluc3RhbmNlT2ZIaXQpKTsKICAgICB9CiAg
ICAgCisgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCmluZGV4IDg1YzQ1Y2M4YTE5YzJmOWQzNDFjZjViMmUw
Y2UwYmJhMWViNTFhMjIuLmJhOTljNjc5OGE2NWZjMWFlMGQzZjI2Mjk2MmI0NWU2NGFlMGY0NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3Rh
dHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0
dXMuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIEluc3RhbmNlT2ZTdGF0dXMgZmluYWwgewog
CiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kVmFyaWFudChjb25zdCBJbnN0YW5jZU9mVmFyaWFu
dCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwog
ICAgIFZlY3RvcjxJbnN0YW5jZU9mVmFyaWFudCwgMj4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmNwcAppbmRleCBmOGRjZTc1NzEzN2JjNzk3ZmQ4NTBjYzI2MTcyNzQ1NzZkZTg4NjA4
Li45NTQ0MDNmY2Q3MzdmYTk2NTNkNjlhZTU4ZGE2ODY5ZGMxNTVhNTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluKQorSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2lj
RnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hh
aW4pCiAgICAgOiBCYXNlKHZtLCBvd25lciwgSW50cmluc2ljR2V0dGVyLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkKIHsKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNp
Y0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
SlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
KHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
aW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuaAppbmRleCBkN2FlZDdhNTMyYzEzMDhjZWQ2NTVlMGRmZWUyNWYzNzNk
NjhhNjA1Li44NTFlYTU0MmQ0MGExZTZmOWZhODQ1MDUxYmU4OWEzN2U1MmNiMTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDE0ICs0MiwxNCBAQCBjbGFzcyBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIHN0YXRpYyBib29sIGNh
bkVtaXRJbnRyaW5zaWNHZXR0ZXIoSlNGdW5jdGlvbiosIFN0cnVjdHVyZSopOwogICAgIHZvaWQg
ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmKTsKIAotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4pOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwog
CiBwcml2YXRlOgotICAgIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpT
RnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2ludHJpbnNpY0Z1bmN0aW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRleCBjMTU5
YWMzMTdhOTc4NDZhYThkZDY2MWQ2ODk3YzA1YTU1NTlhZTliLi41ZmI4NGExZTU0ZWRlYmYwYmFi
NjE4ZmY3YjgyMzlmYmE5YjMyZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSnVtcFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0p1bXBUYWJsZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlIHsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNl
dFRhYmxlOworICAgICAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0
aW9uPjsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aURlZmF1
bHQ7IC8vIEZJWE1FOiBpdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vz
c0NoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5jcHAKaW5kZXggYTJlMDE3Y2U1MzhjZDk5NGRiNTNjMDczYjNjYmZlMzE3ZDY2YjM0
Mi4uZTJiN2I2NjI4YWMwZmY1ZTQwNWU4OGIwNDY0M2E5M2FkNjFmZDZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4u
Y3BwCkBAIC0zMCwyMSArMzAsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKK1JlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNz
Q2hhaW46OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJh
c2UsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGFyZ2V0ID0g
c2xvdC5pc1Vuc2V0KCkgPyBudWxscHRyIDogc2xvdC5zbG90QmFzZSgpOwotICAgIHJldHVybiBj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCB0YXJnZXQpOworICAgIHJldHVybiB0cnlDcmVhdGUo
Z2xvYmFsT2JqZWN0LCBiYXNlLCB0YXJnZXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KQorUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdl
dCkKIHsKICAgICBKU0NlbGwqIGN1cnJlbnQgPSBiYXNlOwogICAgIFZNJiB2bSA9IGJhc2UtPnZt
KCk7CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IHJlc3VsdChuZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSk7Ci0K
KyAgICBWZWN0b3I8U3RydWN0dXJlSUQ+IGNoYWluOwogICAgIGZvciAodW5zaWduZWQgaXRlcmF0
aW9uTnVtYmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1iZXIpIHsKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pOwogCkBAIC02MCw3ICs1OSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjCiAgICAgICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3
ZSBkb24ndCBpbmNsdWRlIHRoZSBiYXNlIGluIHRoZSBjaGFpbi4gV2UgbGV0CiAgICAgICAgIC8v
IEFjY2Vzc0Nhc2UgcHJvdmlkZSB0aGUgYmFzZSB0byB1cyBhcyBuZWVkZWQuCiAgICAgICAgIGlm
IChpdGVyYXRpb25OdW1iZXIpCi0gICAgICAgICAgICByZXN1bHQtPm1fY2hhaW4uYXBwZW5kKHN0
cnVjdHVyZS0+aWQoKSk7CisgICAgICAgICAgICBjaGFpbi5hcHBlbmQoc3RydWN0dXJlLT5pZCgp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSBi
YXNlKTsKIApAQCAtNzgsOCArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplYwogICAgIGlm
ICghZm91bmQgJiYgISF0YXJnZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVz
dWx0LT5tX2NoYWluLnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKGNoYWluKSkpOwog
fQogCiBib29sIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFZNJiB2bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggMGFiMGUxM2YxZjIyZDA1NTk1MWZiNzk5
OTdkNDhjZjAxNzY3ODdhZi4uMDliZmMwYjg2YzU4NzkxYWI3ODlmNjY0NTM0OGIzMWEwYzA3Mzhm
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0Fj
Y2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90
b0FjY2Vzc0NoYWluLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlN0cnVjdHVyZUlE
VGFibGUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsMjIg
KzM4LDEzIEBAIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwogY2xhc3MgU3Ry
dWN0dXJlOwogCi1jbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0KK2NsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIGZpbmFsIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB7CiBwdWJsaWM6Ci0g
ICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hhaW4mKSA9IGRlZmF1bHQ7
Ci0KICAgICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiB0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRh
cmdldCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25l
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PigqdGhpcyk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZUlEPiYgY2hhaW4o
KSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CisgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PFN0
cnVjdHVyZUlEPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CiAKICAgICB2b2lk
IGR1bXAoU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsK
IApAQCAtODMsMTEgKzc1LDE0IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSA9IGRlZmF1bHQ7CisgICAg
ZXhwbGljaXQgUG9seVByb3RvQWNjZXNzQ2hhaW4oVmVjdG9yPFN0cnVjdHVyZUlEPiYmIGNoYWlu
KQorICAgICAgICA6IG1fY2hhaW4oV1RGTW92ZShjaGFpbikpCisgICAgeworICAgIH0KIAogICAg
IC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYmFzZS4gV2UgcmVseSBvbiBBY2Nlc3NDYXNl
IHByb3ZpZGluZyBpdCBmb3IgdXMuIFRoYXQgc2FpZCwgdGhpcyBkYXRhCiAgICAgLy8gc3RydWN0
dXJlIGlzIHRpZWQgdG8gdGhlIGJhc2UgdGhhdCBpdCB3YXMgY3JlYXRlZCB3aXRoLgotICAgIFZl
Y3RvcjxTdHJ1Y3R1cmVJRD4gbV9jaGFpbjsgCisgICAgUmVmQ291bnRlZEFycmF5PFN0cnVjdHVy
ZUlEPiBtX2NoYWluOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjdkZDEzOGVmYjZhMmZhMWNmN2Qy
OTczNTU1NTZlZjM3NmNiNzE2Ny4uNTVmODNjMDU4NzQzZGJiZDE3MGU5NzUzNGMzMzQ3MTIyYzg3
OTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCkBAIC0zNDksMTEgKzM0OSw5IEBAIGJvb2wgUG9seW1vcnBoaWNBY2Nl
c3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlmICghYXQoaSkudmlzaXRXZWFr
KHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4qIHdlYWtSZWZlcmVuY2VzID0gbV93ZWFrUmVmZXJlbmNlcy5n
ZXQoKSkgewotICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxKU0NlbGw+JiB3ZWFrUmVmZXJlbmNl
IDogKndlYWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQo
d2Vha1JlZmVyZW5jZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9CisgICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5j
ZSA6IG1fd2Vha1JlZmVyZW5jZXMpIHsKKyAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdl
YWtSZWZlcmVuY2UuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc0OSwxMCArNzQ3LDggQEAgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2MKICAgICAKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5t
X2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZN
b3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlz
RW1wdHkoKSkgewotICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5zaHJpbmtUb0ZpdCgpOwot
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVy
PEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgfQorICAgIGlm
ICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3dlYWtSZWZlcmVu
Y2VzID0gUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRl
LndlYWtSZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaAppbmRleCAyMDg4NDBlNzFmNzZhNGQ1ZDllNTc3NDVlZTY0ODY5MGZmN2FkNDM1
Li5iZGY1YzdmMmU3YzY4OTNmMWE5NTlmMjJmZmY4OTU1ODUwZGYyYTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0Fj
Y2VzcyB7CiAgICAgTGlzdFR5cGUgbV9saXN0OwogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4g
bV9zdHViUm91dGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbmZvPiBtX3dhdGNocG9pbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8V3Jp
dGVCYXJyaWVyPEpTQ2VsbD4+PiBtX3dlYWtSZWZlcmVuY2VzOworICAgIFJlZkNvdW50ZWRBcnJh
eTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKIH07CiAKIHN0cnVjdCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IGFiNDJkMjRjMTI2MGFhNDhi
ZTFlMGMzMWUwM2Y2ZTA5ZTZhNGI0M2IuLmVmYzY5ZmJlY2JiNGRmYzcyYzcwNDYwYmQxNjNjNGVj
MTE5ZGZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwK
LSAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29s
IHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdh
dGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgOiBCYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpCiAgICAgLCBtX2FkZGl0aW9uYWxTZXQoYWRkaXRpb25hbFNldCkK
IHsKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNl
dCogYWRkaXRpb25hbFNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBw
cm90b3R5cGVBY2Nlc3NDaGFpbikKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5
cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
IGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsK
ICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBlID09IEdldEdl
dHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlm
aWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25h
bFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IDNjYmJl
NzFiOWFhMzUzMzcwNTQ4OGU4YmJiYzg2Yzg0YmExYTViZDUuLjUwOGJmOTBiOTFlYjcyMzNhMjdh
NTVhMWI1N2VkYzg0YmU5ZGVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQ
cm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIFdhdGNocG9pbnRT
ZXQqIGFkZGl0aW9uYWxTZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxT
ZXQuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCi0gICAgICAgIGJvb2wgdmlhUHJveHkgPSBm
YWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxscHRyKTsKKyAgICAgICAgYm9vbCB2aWFQ
cm94eSA9IGZhbHNlLCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1w
bChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2Ugewog
ICAgIH5Qcm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBQ
cm94eWFibGVBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgUHJveHlhYmxl
QWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXYXRjaHBv
aW50U2V0PiBtX2FkZGl0aW9uYWxTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggNmIwYjg3OGNlNzEwOGViMDVhOTAyNWExOGY4
MTU4MTk0MDBkZTQ1My4uZTVkMTMyYjYyODcyMDJkMGQyNTQ2MGY2OWJkNTY4YzBiNGFlYjE5YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cApAQCAtNDMsNiArNDMsMTEgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNv
bnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zh
cmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgUHV0QnlJZFN0YXR1czo6c2hy
aW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNJiB2bSA9IHByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0yMjksNiArMjM0
LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1t
YXJ5KSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAgICAgCkBAIC0zNzEsNiArMzc3
LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIH0KICAgICAKKyAgICByZXN1bHQuc2hyaW5rVG9G
aXQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC00MzcsNiArNDQ0LDcgQEAg
dm9pZCBQdXRCeUlkU3RhdHVzOjptZXJnZShjb25zdCBQdXRCeUlkU3RhdHVzJiBvdGhlcikKICAg
ICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlcikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKaW5kZXggODExY2M3Zjcw
Zjk5NTNiYThmMjdkN2M0NjM1NTFmNjM4MDM0YmUxOC4uODc4ZTI1MmRiNjlhYzU3MTNkYzhlOGY4
YjY0NDAwMGNhZTYzMGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgY2xhc3MgUHV0QnlJZFN0YXR1cyBm
aW5hbCB7CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxv
Y2sqLCBCeXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKICAgICBi
b29sIGFwcGVuZFZhcmlhbnQoY29uc3QgUHV0QnlJZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlu
a1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8UHV0QnlJZFZh
cmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwCmluZGV4IGRlNDhmNzcwNGVkODYw
MzdjODQzMjUwNDIyZmM5ZGQ2MmJlZDVkOTYuLjgzMDdhMzQ2MWM5Y2U5NTU0NjAwMTJlZjVjNWYz
MzdlNjJhY2Y0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC00MSw2ICs0MSwxMSBAQCBib29sIFNl
dFByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRW
YXJpYW50JiB2YXJpYW50KQogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJp
YW50cywgdmFyaWFudCk7CiB9CiAKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzaHJpbmtU
b0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBTZXRQcml2YXRl
QnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29k
ZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOwpAQCAtMTEzLDYgKzExOCw3IEBAIFNldFBy
aXZhdGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFu
ZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICB9
CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCkBAIC0xOTUsNiArMjAxLDcgQEAgdm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6
Om1lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBp
ZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4
IDlhODM0Zjg1Y2MwZWM3Njk5ZmY0MzkzMWZhOWU2ZjYxNWM4ZjFlZTQuLjQ4ZWE2N2U0NDJmYTVk
MWE5OTllNjcxYWZkNzYyOWE2NTQ4MmZlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTg4LDYgKzg4LDcg
QEAgY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXpl
KFZNJik7CiAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFy
aWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGIzZjRlZjNlZDQ1YTk4OGYzMzdkNDI0MzJiYWY2NmIz
MDZmMzE0NTUuLjI0ODY5Mzc0NzExNzhhZGVjZDZmYjZlOTZhN2I5NWIxOTI3YjdlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3
dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5o
PgpAQCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAg
ICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsKICAgICB9OwogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwor
ICAgIHVzaW5nIFN0cmluZ09mZnNldFRhYmxlID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+OwogICAgIFN0
cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0
Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggYTM3ODk4OTIzN2NkNGIxZjYzYmI3
ZDNkOTVjMDc2ODQ3MmUyNWFiZC4uNWFlYmJmYWQ0ZTU5MDI3ZGZkYjg3OGViMjAyZTNiZjk5MDky
ODY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3ICsx
NTEsNyBAQCBjbGFzcyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogICAg
IC8vCiAgICAgLy8gVGhlIGtleSBtYXkgbm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NSIEVu
dHJ5IGJ1dCB0aGUgbGlzdCBpbiB0aGUgdmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRvIGJl
IHVzYWJsZSBmb3IgT1NSIEVudHJ5LgotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9y
PEJ5dGVjb2RlSW5kZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRl
Y29kZUluZGV4LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhp
ZXJhcmNoeTsKIAogICAgIC8vIE1hcCBlYWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NS
RW50ZXIgdG8gaXRzIHN0cmVhbSBpbmRleC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVu
c2lnbmVkPiBieXRlY29kZUluZGV4VG9TdHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmgKaW5kZXggYmQxZDhhMDcyNjYyY2MzNTNhNDQ3YzA1YmI2ZjFlNDBlOTlkYmNiMi4u
YWFlYTU4NGIwNjIwYzRhM2UxODQ1ZWYxYmNhOTVmYTIzM2YwMTNlOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lsbFRyeVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5
VG9UaWVyVXAoYm9vbCB3aWxsVHJ5VG9UaWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxs
VHJ5VG9UaWVyVXA7IH0KIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVj
b2RlSW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxv
b3BIaWVyYXJjaHk7IH0KKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJh
eTxCeXRlY29kZUluZGV4Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGll
clVwSW5Mb29wSGllcmFyY2h5OyB9CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+JiB0aWVyVXBB
bmRPU1JFbnRlckJ5dGVjb2RlcygpIHsgcmV0dXJuIG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29k
ZXM7IH0KIAogICAgIGVudW0gU3RhZ2UgeyBQcmVwYXJpbmcsIENvbXBpbGluZywgUmVhZHksIENh
bmNlbGxlZCB9OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIG1fZ2xv
YmFsUHJvcGVydGllczsKICAgICBSZWNvcmRlZFN0YXR1c2VzIG1fcmVjb3JkZWRTdGF0dXNlczsK
IAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiBtX3Rp
ZXJVcEluTG9vcEhpZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50
ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAgICAgVmVj
dG9yPEJ5dGVjb2RlSW5kZXg+IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBT
dGFnZSBtX3N0YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggZmExM2Y5NWU1Y2VlZDM0ZDY2
NDY4NmZjZjYzMjVjODc2YjljMTU1OC4uYjNhMzAzODE0YmE5NjU1MWNiYWFmZjdmNWEyMzAyMjhj
OTEyNzRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3Mg
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmICghdGllclVwQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5
LmtleSwgV1RGTW92ZSh0aWVyVXBDYW5kaWRhdGVzKSk7CisgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgdGllclVwQ2Fu
ZGlkYXRlcyk7CiAgICAgICAgIH0KICAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0V2lsbFRyeVRv
VGllclVwKHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKaW5kZXggYTM5YjE0M2Y3NzMwMTZhM2I1
ZGFlYzgzNWYzMzE5MzdlZDgzZTE5My4uMTgxYjQ5YjgwNjhiOTY1Y2I4Mzc5NThkZTBjMTZhMTBi
YTEyNzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnlCaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnlCaXRzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgewog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBW
ZWN0b3I8U2VnbWVudCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAyPiBtX3NlZ21lbnRzOwogICAgIHVu
c2lnbmVkIG1fbnVtQml0cyB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcAppbmRleCBhOTFlOTg4YjE4OTViNWZlNGY4MWRh
Nzc3OTJiMTNiNWI0OTMyMzNlLi4yN2M0ZTZiOGUwYWIwNGRkZTZmMmZlYTFjZTA3ZWIzYzUzYjM4
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGlu
ZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVT
ZXQuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCkKICAgICAgICAgfQogICAgICAgICByb3V0
aW5lLnJvdXRpbmUtPmRlbGV0ZUZyb21HQygpOwogICAgIH0KLSAgICBtX3JvdXRpbmVzLnNocmlu
ayhkc3RJbmRleCk7CisgICAgbV9yb3V0aW5lcy5zaHJpbmtDYXBhY2l0eShkc3RJbmRleCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggNzIwMWVlMWNmMzFlNTI2YzdjNzQ1
MDA1ZjNlYWU1YjRlMmFjOTk5YS4uYTZkZTJhNGM3NjhiZTExODkwZDY3Mjk0ZDRkNzMxZWJjNzcy
Y2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
ZmxlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuaApAQCAtMzUsNiArMzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgor
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKQorICAgIHsKKyAgICAgICAgYXJncy5zaHJpbmtUb0ZpdCgp
OworICAgIH0KKwogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmdzOwogICAgIHVuc2lnbmVk
IG51bUxvY2FscyB7IFVJTlRfTUFYIH07CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7IFVJ
TlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaAppbmRleCA0NmFhMDM5ZmM3NGZlMGE2ZTY0YzNlYzE0ZWY5NjEzZTdlOGI1M2I5
Li41OGQ4NjRkNzg4YjcyMGFiMjA1M2FiZTliMjg3OGFhOTE4YzllMzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05
Niw3ICs5Nyw3IEBAIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRl
cm5hbChTbG90VmlzaXRvciYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4gbV9jZWxsczsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVy
PEpTQ2VsbD4+IG1fY2VsbHM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9z
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5oCmluZGV4IGZhN2I3ZWI2ZWZhZTBlY2MyYjcyZDU5ZTU1ZjRlMWYx
ZDZjYmQzOWMuLjZjMTNmMTI2MzBhMWI1OTYyOWRkOTkyYTQ5ZjNjN2FjYjhkZGIzNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSBmaW5hbCA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIHZvaWQgbWFy
a1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKEFic3RyYWN0U2xvdFZpc2l0b3ImKSBmaW5hbDsKICAg
ICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIGZpbmFsOwog
Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+LCAyPiBtX3ZhcmlhbnRzOworICAgIFJl
ZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV92YXJpYW50czsKICAgICBVbmlx
dWVBcnJheTx1aW50MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxO
b2RlPiBtX2NhbGxOb2RlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApp
bmRleCBmZjU5YTBmYjVmOGNjYmFhZjVkMmQzYTA5YTRlMTIwMDIxMjBiMjE2Li44YTk2YWJlODVl
ZGVmYmExNTUxMDkyNzQ2N2Q2YTM5OTllMTM1NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAg
ICAgICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsK
IAogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5pc1Vuc2V0KCkgPyBp
bnZhbGlkT2Zmc2V0IDogc2xvdC5jYWNoZWRPZmZzZXQoKTsKIApAQCAtMzMzLDcgKzMzMyw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFp
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5
Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFp
bi0+c2xvdEJhc2VTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlOYW1l
LnVpZCgpKSA9PSBvZmZzZXQpOwpAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAg
ICAgICAgICAgIGlmIChwdXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9i
YWxPYmplY3QsIGJhc2VDZWxsLCBudWxscHRyKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVBy
b3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBv
bHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQ
cm90b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0
cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzI2LDcgKzcyNiw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrCiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8
IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSkgewogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0IGNvbmRpdGlvblNldDsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAg
ICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRvIHRoaXMgZXZlbiBpZiB3ZSdyZSBhIHNlbGYgY3Vz
dG9tLCBzaW5jZSB3ZSBtdXN0IGRpc2FsbG93IGRpY3Rpb25hcmllcwogICAgICAgICAgICAgICAg
IC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBiZSBpbmZvcm1lZCBpZiB0aGUgY3VzdG9tIGdvZXMgYXdh
eSBzaW5jZSB3ZSBjYWNoZSB0aGUgY29uc3RhbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jawogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9IGJh
c2VWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5
UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0g
UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90
LmJhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9
IFBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwg
c2xvdC5iYXNlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKTsKICAgICAgICAgICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0gICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFj
Y2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFz
ZVZhbHVlKSB7CkBAIC03NjYsNyArNzY2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWlu
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFp
bjo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtOTIwLDcgKzkyMCw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgCiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hh
aW47CisgICAgICAgIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNz
Q2hhaW47CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsK
ICAgICAgICAgaWYgKHdhc0ZvdW5kKSB7CiAgICAgICAgICAgICBJbmxpbmVDYWNoZUFjdGlvbiBh
Y3Rpb24gPSBhY3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0
dXMtPnVzZXNQb2x5UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNz
Q2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwg
c2xvdCk7CisgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVBy
b3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3ND
aGFpbi0+c2xvdEJhc2VTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlO
YW1lLnVpZCgpKSA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNl
c1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOworICAg
ICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46
OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOwogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA3YmEyNzFkOGM2YjNmMTkwNjYyYTAxYmVm
OGUzMWQyMTFjOGNjMmVhLi42OTI5MDZhMjBhYWMwNDA1MjEyNjMzZDNmNThkZmJiMjUyNWIxNDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKyNpbmNsdWRlIDx3dGYvUm9i
aW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZ0ltcGwuaD4KIApAQCAtNjY5LDEwICs2NzAsMTAgQEAgY2xhc3MgQ2FjaGVk
UGFpciA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8c3RkOjpwYWlyPFNvdXJjZVR5cGU8Rmlyc3Q+LCBT
b3VyY2VUeXBlPFMKICAgICBTZWNvbmQgbV9zZWNvbmQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291
cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VU
eXBlPEtleT4+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5
cGU8VmFsdWU+Pj4KLWNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhP
YmplY3Q8SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNoQXJn
LCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VU
eXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8
S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxW
YWx1ZT4+LCB0eXBlbmFtZSBUYWJsZVRyYWl0cyA9IFdURjo6SGFzaFRhYmxlVHJhaXRzPgorY2xh
c3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNoTWFwPFNv
dXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtleVRyYWl0c0FyZywg
TWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
LCB0eXBlbmFtZSBWPgotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OworICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8Sywg
ViwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzPjsK
IAogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1hcDxT
b3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+PiYgbWFwKQpAQCAtNjk2LDYgKzY5Nyw5
IEBAIGNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFz
aE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjCiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZFBhaXI8
S2V5LCBWYWx1ZT4+IG1fZW50cmllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3VyY2VUeXBlPEtl
eT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8S2V5Pj4s
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxWYWx1ZT4+
PgordXNpbmcgQ2FjaGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwID0g
Q2FjaGVkSGFzaE1hcDxLZXksIFZhbHVlLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRy
YWl0c0FyZywgV1RGOjpNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hUYWJsZVRy
YWl0cz47CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWNoZWRVbmlxdWVkU3RyaW5n
SW1wbEJhc2UgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VD4gewogcHVibGljOgpAQCAt
OTEwLDcgKzkxNCw3IEBAIGNsYXNzIENhY2hlZFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IHsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1wbD4sIFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlOjogT2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFibGU7CisgICAgQ2Fj
aGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPENhY2hlZFJlZlB0cjxD
YWNoZWRTdHJpbmdJbXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9u
PiBtX29mZnNldFRhYmxlOwogfTsKIAogY2xhc3MgQ2FjaGVkQml0VmVjdG9yIDogcHVibGljIFZh
cmlhYmxlTGVuZ3RoT2JqZWN0PEJpdFZlY3Rvcj4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDJjMTQ5ZmE3MjYyMGJhY2EzZGFhMjIyODJkODdiZTc5ZTVlODkwNTkuLjlm
MzIxOTM0NTY4MDk1ZDM5ZDE5ZDc5ZDcwNTIwNmM0Zjk1MmM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTExMjcsNiArMTEyNyw3IEBAIHZvaWQgVk06OnBvcEFsbENo
ZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnRpbChDYWxsRnJhbWUqIHRhcmdldCkKICAgICAvLyBXZSBo
YXZlIHRvIHdvcnJ5IGFib3V0IG1pZ3JhdGluZyBmcm9tIGFub3RoZXIgdGhyZWFkIHNpbmNlIHRo
ZXJlIG1heSBiZSBubyBjaGVja3BvaW50cyBpbiBvdXIgdGhyZWFkIGJ1dCBvbmUgaW4gdGhlIG90
aGVyIHRocmVhZHMuCiAgICAgd2hpbGUgKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5zaXplKCkgJiYg
Ym91bmRzLmNvbnRhaW5zKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5sYXN0KCktPmFzc29jaWF0ZWRD
YWxsRnJhbWUpKQogICAgICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUudGFrZUxhc3QoKTsKKyAg
ICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0KIAogdm9pZCBsb2dTYW5p
dGl6ZVN0YWNrKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRB
cnJheS5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMx
MzhiMjYyMDEwMzQ5OTA3YzI1NjlmZWMyZGIxNGExYy4uZGNhMzgzNDQzZjgxYjA5NzRmYzU5ZDY0
NTkwNDAyNjZmODMyZGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFy
cmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUw
LDExIEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3Ry
dWN0b3JUYWcgeyBDb21tb25Db3B5Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5n
IGl0ZXJhdG9yID0gVCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAg
ICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9y
PjsKKyAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJh
dG9yPGNvbnN0X2l0ZXJhdG9yPjsKKwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsK
ICAgICAKICAgICBSZWZDb3VudGVkQXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikK
QEAgLTE2OSw4ICsxNzQsOCBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIHNpemVfdCBi
eXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQogICAgIAogICAg
IFQqIGRhdGEoKSB7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX2RhdGEpOyB9Ci0gICAgVCog
YmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KLSAgICBUKiBlbmQoKQorICAgIGl0ZXJhdG9yIGJl
Z2luKCkgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkKICAgICB7CiAgICAg
ICAgIGlmICghbV9kYXRhKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzksOCArMTg0LDEz
IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFQqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5k
YXRhKCk7IH0KLSAgICBjb25zdCBUKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmJlZ2luKCk7IH0KLSAgICBjb25zdCBUKiBlbmQoKSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsg
fQorICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxS
ZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVu
ZCgpOyB9CisKKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2Vf
aXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVy
biByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICAgCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAg
ICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425120</attachid>
            <date>2021-04-03 18:44:43 -0700</date>
            <delta_ts>2021-04-03 18:51:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403184442.patch</filename>
            <type>text/plain</type>
            <size>77622</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi4zODIzOWJlN2Y0OTc2ZjBl
YmE1MjM3MzhlOWY5ZmY2OGI2ZjM3ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3JzIGluIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkIFhYWFN0YXR1
czo6c2hyaW5rVG9GaXQgdG8gc2hyaW5rIHVuZGVybHlpbmcgZHluYW1pYyBWZWN0b3JzLgorICAg
ICAgICAyLiBSZXBsYWNlIHRpZXJVcEluTG9vcEhpZXJhcmNoeSdzIFZlY3RvciB3aXRoIFJlZkNv
dW50ZWRBcnJheSBzaW5jZSBpdCBpcyBjb25zdHJ1Y3RlZC1vbmNlLWxvb2t1cC1vbmx5IGRhdGEu
CisgICAgICAgIDMuIFVzZSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQg
Zm9yIFN0cmluZ1RhYmxlcyBzaW5jZSB0aGlzIGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9u
bHkgZGF0YS4gV2UgYWxzbyBhZGQKKyAgICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0IHN1cHBvcnQgZm9yIENhY2hlZFR5cGVzLgorICAgICAgICA0LiBVc2Ug
cmVzaXplVG9GaXQgZm9yIFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgYW5kIFN3aXRjaEp1bXBUYWJs
ZXMuCisgICAgICAgIDUuIEpJVFN0dWJSb3V0aW5lU2V0J3MgVmVjdG9yIHNob3VsZCBiZSBzaHJ1
bmsuCisgICAgICAgIDYuIEJsb2NrRGlyZWN0b3J5Qml0cydzIFZlY3RvcidzIGluaXRpYWwgc2l6
ZSBzaG91bGQgYmUgc21hbGwuCisgICAgICAgIDcuIE1ha2UgUG9seVByb3RvQWNjZXNzQ2hhaW4g
UmVmQ291bnRlZCwgYW5kIHVzZSBSZWZDb3VudGVkQXJyYXkgZm9yIGl0cyBWZWN0b3I8U3RydWN0
dXJlSUQ+LiBBbmQgcmVtb3ZlIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjbG9uZS4KKyAgICAgICAg
ICAgSnVzdCBoYXZpbmcgUmVmIGlzIGVub3VnaCBzaW5jZSB0aGlzIGlzIGltbXV0YWJsZSBkYXRh
LgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAg
KiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vz
c0Nhc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6Okdl
dEJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSk6CisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQpOgor
ICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmg6CisgICAgICAgICogYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UpOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9K
dW1wVGFibGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHA6
CisgICAgICAgIChKU0M6OlBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9B
Y2Nlc3NDaGFpbjo6Y2hhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlBvbHlQcm90b0FjY2Vzc0NoYWluOjpmb3JFYWNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6UG9seVByb3RvQWNjZXNzQ2hhaW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNz
Q2FzZSk6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6
CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAo
SlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJn
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRm
Zy9ERkdQbGFuLmg6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFy
Y2h5KToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAg
ICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJv
dXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5t
YXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1
ZmZsZURhdGEuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICog
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2Fj
aGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJ
bml0aWFsaXplclNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBh
cnNlKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9T
UlNpZGVTdGF0ZVVudGlsKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisKIDIw
MjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAg
ICAgIFJlZHVjZSBieXRlY29kZSBpbnN0cnVjdGlvbiBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3Mg
ZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4OGI3ZDdmZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4u
NjNiMmIyYTk4NTAxM2FhM2Q5NjU2ZjJjOGQxODA4MzgxODcxNmM0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcmJlZ2luIGFuZCByZW5kIHRv
IG1ha2UgUmVmQ291bnRlZEFycmF5IHVzYWJsZSBmb3IgVmVjdG9yIGNsaWVudHMgd2hvIHVzZSB0
aGVzZSBmZWF0dXJlcy4KKworICAgICAgICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6ZW5kKToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjpyYmVnaW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVk
QXJyYXk6OnJlbmQpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25z
dCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6cmVuZCBjb25zdCk6CisKIDIwMjEt
MDQtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIFByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZh
dWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMjAyYTJkNWYzMmM5YzIyMGQwZTkwYmVkN2U5ODJmMWI0OTM2YWMzMi4uYTQ4MTMyMDY0NDEw
MDg3NGY2NzA0ZDY2NGNiNmRmODAwMTJlZDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogCi1BY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitBY2Nlc3NDYXNl
OjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4p
CiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fcG9s
eVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCkBAIC02OCw3
ICs2OCw3IEBAIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9j
b25kaXRpb25TZXQuaXNWYWxpZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CkBAIC0xMTAsNyArMTEwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKIAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAotICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA2MDI1N2IxYjViY2E5
NWNkM2NjNjNiM2YzYTA5ODVjNzM3YmE3ZGU2Li5mMjg3ZmJmYmRiYjg2Nzk5MzI5NGY3OWFjZGVj
ZWZhNTVlYjBjMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmgKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIH0KIAog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0LAotICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOworICAgICAg
ICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
ID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAotICAgICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwpAQCAtMjU1LDIwICsyNTUsOSBAQCBjbGFzcyBBY2Nl
c3NDYXNlIHsKICNlbmRpZgogICAgIAogcHJvdGVjdGVkOgotICAgIEFjY2Vzc0Nhc2UoVk0mLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICBBY2Nlc3NDYXNlKFZNJiwg
SlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYp
ID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQotICAg
ICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCi0gICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0
YXRlKQotICAgICAgICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKLSAgICAgICAgLCBt
X29mZnNldChvdGhlci5tX29mZnNldCkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0
cnVjdHVyZSkKLSAgICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkK
LSAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQotICAgIHsKLSAgICAg
ICAgaWYgKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCi0gICAgICAgICAgICBtX3BvbHlQ
cm90b0FjY2Vzc0NoYWluID0gb3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2xvbmUoKTsK
LSAgICB9CisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0
OwogCiAgICAgQWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0
ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0z
MjEsNyArMzEwLDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBtX2NvbmRpdGlvblNldDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbjsKKyAgICBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IG1fcG9seVByb3RvQWNjZXNzQ2hhaW47CiAKICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDY0ZTJhMDI4NmU4NTdhMWM2MzQ0NTcwYTUz
ZGNkYTc4ZmRkYmEzMjMuLjM2YzM0MDlkYmI3ZjQ3ZmNkZjJhNGRjOGViNTMyNmRmN2JkZThiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
CkBAIC0yODEsNiArMjgxLDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0p
CiB2b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVT
aHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7CiAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFr
ZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVT
aHVmZmxlRGF0YS0+c2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzLmNwcAppbmRleCBhZTdhNGY3Yzc0Mjc5MzY2NGU2OTdhNWY1ZGNjNDFlNGEwMzgy
Y2MxLi5kNTRmYTIzYmVjM2QzNTBjNmM4ZWMwMjFlODQ3NmNhNTQ5ODQyOWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpCiAg
ICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0K
IAordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1f
dmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
RXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2Vs
aW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMDksNiArMTE0LDcgQEAgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2kKICAgICAgICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoSlND
OjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAg
IHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtMTkxLDYgKzE5Nyw3IEBAIHZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNv
bnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBw
ZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNs
b3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47
CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IGU2
N2I2MzgzODg0OWY1MjNlZmI2OTVlZjFlZGIwOTg3YjYyZjU4MWYuLmE5ODhmMmFmOGIxYmI1MmM1
YTQzYWM4NTFmZmEyMjY4ZmRmMzQwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCkBAIC04Nyw2ICs4Nyw3
IEBAIGNsYXNzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFs
aXplKFZNJik7CiAKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggYTIzNDE5OGE5YWU1NDBjZjMyNTY0YmQ1N2FmNDBlMDgyM2VjMDQw
ZC4uMjhjYTllYzVmZmRiMjVlMjFlZDY4ZTEzYWE5NmMyOTk1N2VjNDQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzNyw3ICs0MzcsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVf
dCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
Lmdyb3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgcHRyID0gdW5saW5rZWRDb2RlQmxvY2st
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5iZWdpbigpOwogICAgICAgICAg
ICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0
b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZz
ZXRUYWJsZS5lbmQoKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUoaSk7CiAgICAgICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFi
bGUgPSBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAppbmRleCA5MjMxNDdkNjMz
ZTdmMzNmZDA1NDRjNjQ1NGM2Y2UyMTRkYTBjMzExLi4wMTkwOWExZTEzMGJhYjAyNDQ5MDk1NmYx
ZGMzOWQ1ZDk0ZjkxMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIGJvb2wgRGVsZXRlQnlTdGF0
dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAg
cmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAor
dm9pZCBEZWxldGVCeVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hy
aW5rVG9GaXQoKTsKK30KKwogRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVG
b3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMjksNiAr
MTM0LDcgQEAgRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAg
ICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCkBAIC0yMTQsNiArMjIwLDcgQEAgdm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3Qg
RGVsZXRlQnlTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90
aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAg
ICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2Ug
TGlrZWx5VGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5U3RhdHVzLmgKaW5kZXggYjA3NmJmMjY5ZWM3ODBiZTg2ZWQ5M2U0ZTEzNjc2OWNm
YWY3YzMxYi4uNWJhODAzYWE5NzdmZjNkYzViZWU1ODdiNDc3MWIwMDQxNmJiZDZiNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTg2
LDYgKzg2LDcgQEAgY2xhc3MgRGVsZXRlQnlTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3Rh
dHVzLmNwcAppbmRleCBkOTU3MjFlZWIwMmY0ODM1MzQxOTNiZmI3ZTdlZGM1MGEwYTgzMzY3Li5i
ZDc0ZmI2NGYzNDExNTE3MGEwMWMxNjE4Yjg1ZTQ3ZTA0NzZlYjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBA
IGJvb2wgR2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJp
YW50KTsKIH0KIAordm9pZCBHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFy
aWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXgpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTMzOSw2
ICszNDQsNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0
aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICB9IH0KICAgICAgICAgfQogICAgICAg
ICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgICAgICAKQEAgLTQzMyw2ICs0MzksNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0
YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0lt
cGwqCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7
CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTQ5NCw2ICs1MDEsNyBAQCB2b2lkIEdl
dEJ5U3RhdHVzOjptZXJnZShjb25zdCBHZXRCeVN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBp
ZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKaW5kZXggZDNiMWM2MjZkY2FkMzc5
YTlmZDhiYjA0NDRjYTFmZDdjYjhiZmYyNi4uMjQzNzMwZmRlMzNhZTc1ZWYxZjYzNmM0MTdmODhi
OGU5OTZmNTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3Rh
dHVzLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBjbGFzcyBHZXRCeVN0YXR1cyBmaW5hbCB7CiAgICAg
Ym9vbCBmaW5hbGl6ZShWTSYpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4K
IAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFudCYpOworICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggZThiNGNhNWU0YmJlNWY3MTAzODI3NTAxNmI5YWVjMmM1
MTlkMGI4OC4uYTU2NDBmNjFmNmYxOGVhZjQwYjkwZDMwZDVkY2NlYmY2MTEyNzA2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZUludGVybmFsIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiB9CiAKLUdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9v
bCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3Rv
bVNsb3RCYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlw
ZUFjY2Vzc0NoYWluKQorR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9u
U2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVj
dCogY3VzdG9tU2xvdEJhc2UsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCiAgICAgOiBCYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxT
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKQogewogICAgIG1fY3VzdG9tU2xvdEJh
c2Uuc2V0TWF5QmVOdWxsKHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwpAQCAtNTAsNyArNTAs
NyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlhUHJveHksIFdhdGNo
cG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFn
PiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKLSAgICBPcHRpb25hbDxE
T01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgR2V0dGVyOgpAQCAtNjgsNyArNjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCi0gICAgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94
eSwgCisgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2
aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNl
dHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNz
b3JTZXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjAzZmJmNjI0NTQ2MDcwNzc0MWUyNTgwZjQ0
Zjc1NDdiZDgyZjg1OS4uNzJjOGRhMTQ0YWM3NzgwZmZlYTI4ZGVkNGQ5YzY5ODE3ODA4MDIxMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZS5oCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxD
dXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLAotICAgICAgICBKU09iamVjdCogY3Vz
dG9tU2xvdEJhc2UsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNs
b3RCYXNlLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hl
YWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAotICAgICAgICBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4s
IGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKKyAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+LCBib29sIHZpYVByb3h5ID0g
ZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21T
ZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKIAog
ICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5h
bDsKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nl
c3NvclB0clRhZz4gY3VzdG9tQWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUFjY2Vz
c29yOyB9CiAKIHByaXZhdGU6Ci0gICAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYsIEpTQ2Vs
bCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHks
IFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2Jq
ZWN0KiBjdXN0b21TbG90QmFzZSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAg
ICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2UmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApp
bmRleCA5NTc4MzAxODZjOWVlOWMyNDExOWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFi
MmFlYzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMxM2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJ
bkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkK
ICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwog
fQogCit2b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMu
c2hyaW5rVG9GaXQoKTsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAm
IG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCBFeGl0RmxhZyBkaWRFeGl0KQogewpAQCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNv
bnN0IENvbmN1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsy
MzksNyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhl
cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IFRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
U3RhdHVzLmgKaW5kZXggMGY0N2ZkZjdjYjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4u
N2YxNWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBA
IGNsYXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwor
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0
aW9uIH07CiAgICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5k
ZXggY2Y4NThmZDM5NDY4MGE1ZWVhOTAwOGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3
NjY5Mzc4MzEzMmQ5OThmZDhlNjQxZjVjZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAg
dm9pZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJp
YW50JiB2YXJpYW50KQogICAgIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJp
YW50KTsKIH0KIAordm9pZCBJbnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAg
bV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNl
T2ZTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVz
TWFwJiBpbmZvTWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsx
MDEsNyBAQCBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUo
KSA9PSBBY2Nlc3NDYXNlOjpJbnN0YW5jZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3Vs
dC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dGFuY2VPZlN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNl
T2ZTdGF0dXMuaAppbmRleCA4NWM0NWNjOGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIy
Li5iYTk5YzY3OThhNjVmYzFhZTBkM2YyNjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2
ICsxMDYsNyBAQCBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5z
dGFuY2VPZlZhcmlhbnQsIDI+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggZjhkY2U3NTcxMzdiYzc5N2ZkODUwY2MyNjE3Mjc0NTc2ZGU4ODYwOC4uOTU0NDAzZmNkNzM3
ZmE5NjUzZDY5YWU1OGRhNjg2OWRjMTU1YTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApA
QCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgIDogQmFz
ZSh2bSwgb3duZXIsIEludHJpbnNpY0dldHRlciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCiB7CiAgICAg
bV9pbnRyaW5zaWNGdW5jdGlvbi5zZXQodm0sIG93bmVyLCBpbnRyaW5zaWNGdW5jdGlvbik7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGlu
dHJpbnNpY0Z1bmN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHBy
b3RvdHlwZUFjY2Vzc0NoYWluKQorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNl
dCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlk
ZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0
aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmgKaW5kZXggZDdhZWQ3YTUzMmMxMzA4Y2VkNjU1ZTBkZmVlMjVmMzczZDY4YTYwNS4uODUxZWE1
NDJkNDBhMWU2ZjlmYTg0NTA1MWJlODlhMzdlNTJjYjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5o
CkBAIC00MiwxNCArNDIsMTQgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5h
bCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2lj
R2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNH
ZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVu
Y3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgfkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAg
ICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uo
Vk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRy
aW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbnRyaW5zaWNGdW5jdGlvbjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKaW5kZXggYzE1OWFjMzE3YTk3ODQ2YWE4
ZGQ2NjFkNjg5N2MwNWE1NTU5YWU5Yi4uNWZiODRhMWU1NGVkZWJmMGJhYjYxOGZmN2I4MjM5ZmJh
OWIzMmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApA
QCAtMzAsNyArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24u
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KIApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAg
ICAgc3RydWN0IFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICAg
ICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgICAg
IFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFnPiBjdGlEZWZhdWx0OyAvLyBGSVhNRTog
aXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gc3RvcmUgdGhpcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCmlu
ZGV4IGEyZTAxN2NlNTM4Y2Q5OTRkYjUzYzA3M2IzY2JmZTMxN2Q2NmIzNDIuLmUyYjdiNjYyOGFj
MGZmNWU0MDVlODhiMDQ2NDNhOTNhZDYxZmQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcApAQCAtMzAsMjEg
KzMwLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNldCgp
ID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKLSAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9i
amVjdCwgYmFzZSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gdHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwg
YmFzZSwgdGFyZ2V0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK1JlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAgICAgSlND
ZWxsKiBjdXJyZW50ID0gYmFzZTsKICAgICBWTSYgdm0gPSBiYXNlLT52bSgpOwogCiAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiByZXN1bHQobmV3IFBvbHlQcm90b0FjY2Vzc0NoYWluKCkpOwotCisgICAgVmVjdG9yPFN0
cnVjdHVyZUlEPiBjaGFpbjsKICAgICBmb3IgKHVuc2lnbmVkIGl0ZXJhdGlvbk51bWJlciA9IDA7
IHRydWU7ICsraXRlcmF0aW9uTnVtYmVyKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY3VycmVudC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNjAsNyArNTksNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUo
SlNHbG9iYWxPYmplYwogICAgICAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgZG9uJ3QgaW5jbHVk
ZSB0aGUgYmFzZSBpbiB0aGUgY2hhaW4uIFdlIGxldAogICAgICAgICAvLyBBY2Nlc3NDYXNlIHBy
b3ZpZGUgdGhlIGJhc2UgdG8gdXMgYXMgbmVlZGVkLgogICAgICAgICBpZiAoaXRlcmF0aW9uTnVt
YmVyKQotICAgICAgICAgICAgcmVzdWx0LT5tX2NoYWluLmFwcGVuZChzdHJ1Y3R1cmUtPmlkKCkp
OworICAgICAgICAgICAgY2hhaW4uYXBwZW5kKHN0cnVjdHVyZS0+aWQoKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnQgPT0gYmFzZSk7CiAKQEAgLTc4
LDggKzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWMKICAgICBpZiAoIWZvdW5kICYmICEh
dGFyZ2V0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC0+bV9jaGFpbi5z
aHJpbmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShjaGFpbikpKTsKIH0KIAogYm9vbCBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYgdm0pIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9B
Y2Nlc3NDaGFpbi5oCmluZGV4IDBhYjBlMTNmMWYyMmQwNTU5NTFmYjc5OTk3ZDQ4Y2YwMTc2Nzg3
YWYuLjA5YmZjMGI4NmM1ODc5MWFiNzg5ZjY2NDUzNDhiMzFhMGMwNzM4ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5j
bHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM3LDIyICszOCwxMyBAQCBjbGFz
cyBKU09iamVjdDsKIGNsYXNzIFByb3BlcnR5U2xvdDsKIGNsYXNzIFN0cnVjdHVyZTsKIAotY2xh
c3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
CitjbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gewogcHVibGljOgotICAgIFBvbHlQcm90b0Fj
Y2Vzc0NoYWluKFBvbHlQcm90b0FjY2Vzc0NoYWluJikgPSBkZWZhdWx0OwotCiAgICAgLy8gUmV0
dXJucyBudWxscHRyIHdoZW4gaW52YWxpZC4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2Us
IGNvbnN0IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNP
YmplY3QqIHRhcmdldCk7CisgICAgc3RhdGljIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
dHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB0cnlDcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwotICAg
IH0KLQotICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIGNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9jaGFpbjsgfQorICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxTdHJ1Y3R1cmVJRD4mIGNo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsgfQogCiAgICAgdm9pZCBkdW1wKFN0cnVjdHVy
ZSogYmFzZVN0cnVjdHVyZSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAKQEAgLTgzLDExICs3
NSwxNCBAQCBjbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiB7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFBvbHlQ
cm90b0FjY2Vzc0NoYWluKFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiBjaGFpbikKKyAgICAgICAgOiBt
X2NoYWluKFdURk1vdmUoY2hhaW4pKQorICAgIHsKKyAgICB9CiAKICAgICAvLyBUaGlzIGRvZXMg
bm90IGluY2x1ZGUgdGhlIGJhc2UuIFdlIHJlbHkgb24gQWNjZXNzQ2FzZSBwcm92aWRpbmcgaXQg
Zm9yIHVzLiBUaGF0IHNhaWQsIHRoaXMgZGF0YQogICAgIC8vIHN0cnVjdHVyZSBpcyB0aWVkIHRv
IHRoZSBiYXNlIHRoYXQgaXQgd2FzIGNyZWF0ZWQgd2l0aC4KLSAgICBWZWN0b3I8U3RydWN0dXJl
SUQ+IG1fY2hhaW47IAorICAgIFJlZkNvdW50ZWRBcnJheTxTdHJ1Y3R1cmVJRD4gbV9jaGFpbjsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCmluZGV4IDI3ZGQxMzhlZmI2YTJmYTFjZjdkMjk3MzU1NTU2ZWYzNzZj
YjcxNjcuLjU1ZjgzYzA1ODc0M2RiYmQxNzBlOTc1MzRjMzM0NzEyMmM4Nzk0ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cApAQCAtMzQ5LDExICszNDksOSBAQCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWso
Vk0mIHZtKSBjb25zdAogICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChWZWN0b3I8V3JpdGVCYXJyaWVyPEpT
Q2VsbD4+KiB3ZWFrUmVmZXJlbmNlcyA9IG1fd2Vha1JlZmVyZW5jZXMuZ2V0KCkpIHsKLSAgICAg
ICAgZm9yIChXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6ICp3ZWFrUmVmZXJl
bmNlcykgewotICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZlcmVuY2Uu
Z2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgIGZv
ciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVuY2UgOiBtX3dlYWtSZWZl
cmVuY2VzKSB7CisgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3ZWFrUmVmZXJlbmNlLmdl
dCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC03NDksMTAgKzc0Nyw4IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgCiAg
ICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxv
Y2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9z
KSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4
Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRj
aHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV93ZWFr
UmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIH0KKyAgICBpZiAoIXN0YXRlLndlYWtS
ZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IFJlZkNvdW50
ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNl
cykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5k
ZXggMjA4ODQwZTcxZjc2YTRkNWQ5ZTU3NzQ1ZWU2NDg2OTBmZjdhZDQzNS4uYmRmNWM3ZjJlN2M2
ODkzZjFhOTU5ZjIyZmZmODk1NTg1MGRmMmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0xODcsNyArMTg4LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIExp
c3RUeXBlIG1fbGlzdDsKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG1fc3R1YlJvdXRpbmU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gbV93
YXRjaHBvaW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+Pj4gbV93ZWFrUmVmZXJlbmNlczsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVy
PEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlv
blN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBhYjQyZDI0YzEyNjBhYTQ4YmUxZTBjMzFlMDNmNmUw
OWU2YTRiNDNiLi5lZmM2OWZiZWNiYjRkZmM3MmM3MDQ2MGJkMTYzYzRlYzExOWRmZGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0
Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vz
c0NoYWluKQogICAgIDogQmFzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIGlkZW50aWZpZXIsIG9m
ZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKQogICAgICwgbV9hZGRpdGlvbmFsU2V0KGFkZGl0aW9uYWxTZXQpCiB7CiAgICAgbV92aWFQ
cm94eSA9IHZpYVByb3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlh
YmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0
eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxT
ZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAppbmRleCAzY2JiZTcxYjlhYTM1MzM3MDU0
ODhlOGJiYmM4NmM4NGJhMWE1YmQ1Li41MDhiZjkwYjkxZWI3MjMzYTI3YTU1YTFiNTdlZGM4NGJl
OWRlZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNz
Q2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCgpLAotICAgICAgICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBudWxscHRyLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CisgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0m
LCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
UHJveHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICB+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUHJveHlhYmxlQWNjZXNz
Q2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIFByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0m
LCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+KTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9hZGRp
dGlvbmFsU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCmluZGV4IDZiMGI4NzhjZTcxMDhlYjA1YTkwMjVhMThmODE1ODE5NDAwZGU0NTMu
LmU1ZDEzMmI2Mjg3MjAyZDBkMjU0NjBmNjliZDU2OGMwYjRhZWIxOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTQzLDYgKzQz
LDExIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFu
dHMsIHZhcmlhbnQpOwogfQogCit2b2lkIFB1dEJ5SWRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sK
KyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBW
TSYgdm0gPSBwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMjI5LDYgKzIzNCw3IEBAIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSkpOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAgICAgICAgIApAQCAtMzcxLDYgKzM3Nyw3IEBAIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsKICAgICB9CiAgICAgCisgICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDM3LDYgKzQ0NCw3IEBAIHZvaWQgUHV0QnlJZFN0
YXR1czo6bWVyZ2UoY29uc3QgUHV0QnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAo
IWFwcGVuZFZhcmlhbnQob3RoZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3co
KTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCmluZGV4IDgxMWNjN2Y3MGY5OTUzYmE4ZjI3ZDdj
NDYzNTUxZjYzODAzNGJlMTguLjg3OGUyNTJkYjY5YWM1NzEzZGM4ZThmOGI2NDQwMDBjYWU2MzBi
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aApAQCAtMTM1LDYgKzEzNSw3IEBAIGNsYXNzIFB1dEJ5SWRTdGF0dXMgZmluYWwgewogICAgIHN0
YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgCiAgICAgYm9vbCBhcHBlbmRWYXJp
YW50KGNvbnN0IFB1dEJ5SWRWYXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAg
IAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgVmVjdG9yPFB1dEJ5SWRWYXJpYW50LCAxPiBtX3Zh
cmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAppbmRleCBkZTQ4Zjc3MDRlZDg2MDM3Yzg0MzI1MDQyMmZj
OWRkNjJiZWQ1ZDk2Li44MzA3YTM0NjFjOWNlOTU1NDYwMDEyZWY1YzVmMzM3ZTYyYWNmNDFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBTZXRQcml2YXRlQnJhbmRT
dGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFu
dCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQp
OwogfQogCit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAg
IG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNl
dFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxp
bmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBF
eGl0RmxhZyBkaWRFeGl0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxp
bmVCbG9jay0+bV9sb2NrKTsKQEAgLTExMyw2ICsxMTgsNyBAQCBTZXRQcml2YXRlQnJhbmRTdGF0
dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZQogICAgICAgICAgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpz
bG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJl
c3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAt
MTk1LDYgKzIwMSw3IEBAIHZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZShjb25zdCBT
ZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJp
YW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwog
ICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaAppbmRleCA5YTgzNGY4NWNjMGVj
NzY5OWZmNDM5MzFmYTllNmY2MTVjOGYxZWU0Li40OGVhNjdlNDQyZmE1ZDFhOTk5ZTY3MWFmZDc2
MjlhNjU0ODJmZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCkBAIC04OCw2ICs4OCw3IEBAIGNsYXNzIFNldFBy
aXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwogCiAgICAg
Ym9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKyAgICB2
b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCBiM2Y0ZWYzZWQ0NWE5ODhmMzM3ZDQyNDMyYmFmNjZiMzA2ZjMxNDU1Li4yNDg2
OTM3NDcxMTc4YWRlY2Q2ZmI2ZTk2YTdiOTViMTkyN2I3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDIsOCArNDIs
OCBAQAogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTgwLDcgKzgw
LDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgaW50MzJfdCBi
cmFuY2hPZmZzZXQ7CiAgICAgfTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICB1c2luZyBTdHJp
bmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPjsKICAgICBTdHJpbmdPZmZzZXRUYWJs
ZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmlu
Z0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAppbmRleCA4MTQ4NTE2MDM1ZGZkYzRjOWZiOWU4M2NhODQ1ZTBlZDNlNzk2MDE0Li5kNWEy
MzVlNTM1MzM1MDNiOThkY2VkNmE2OTQwZGRkOWRmYzA1ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1Bh
cnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0Owog
ICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlID0gZXhlY3V0YWJsZS0+c2NyaXB0TW9k
ZSgpOwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9k
ZSgpKSk7Ci0gICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9
IGV4ZWN1dGFibGUtPmNsYXNzRmllbGRMb2NhdGlvbnMoKTsKKyAgICBhdXRvKiBjbGFzc0ZpZWxk
TG9jYXRpb25zID0gZXhlY3V0YWJsZS0+Y2xhc3NGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigK
ICAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUt
PnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwg
bnVsbHB0ciwgY2xhc3NGaWVsZExvY2F0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5k
ZXggMzQzYjMzOTc4OTRiYWY3ZDI2YWZiNTRkZTMwYzYzNWFkN2E1NzkxYy4uNWY0NTI2YTQyNWI4
MjViM2NkN2RlMTBkNTQwY2QyZDg4NGNjNzMyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVmFyaWFi
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIxOCwxMyArMjE5
LDEzIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAgICAgU3Ry
aW5nIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKICAgICAgICAgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKLSAgICAgICAgVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiBtX2NsYXNzRmllbGRMb2NhdGlvbnM7CisgICAgICAgIFJlZkNvdW50ZWRB
cnJheTxKU1RleHRQb3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25zOwogICAgICAgICBQcml2
YXRlTmFtZUVudmlyb25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKICAgICB9
OwogCiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KIAotICAgIFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMoKSBjb25zdAorICAgIFJlZkNvdW50ZWRB
cnJheTxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEt
Pm1fY2xhc3NGaWVsZExvY2F0aW9uczsKQEAgLTIzNSw3ICsyMzYsNyBAQCBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAg
ICAgaWYgKGNsYXNzRmllbGRMb2NhdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fY2xhc3NGaWVsZExvY2F0aW9ucyA9IFdURk1v
dmUoY2xhc3NGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jbGFz
c0ZpZWxkTG9jYXRpb25zID0gUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPihXVEZNb3Zl
KGNsYXNzRmllbGRMb2NhdGlvbnMpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IGEzNzg5ODkyMzdjZDRiMWY2M2JiN2QzZDk1YzA3
Njg0NzJlMjVhYmQuLjVhZWJiZmFkNGU1OTAyN2RmZGI4NzhlYjIwMmUzYmY5OTA5Mjg2NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAg
Y2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBEaXJlY3RKSVRDb2RlIHsKICAgICAvLwogICAg
IC8vIFRoZSBrZXkgbWF5IG5vdCBhbHdheXMgYmUgYSB0YXJnZXQgZm9yIE9TUiBFbnRyeSBidXQg
dGhlIGxpc3QgaW4gdGhlIHZhbHVlIGlzIGd1YXJhbnRlZWQKICAgICAvLyB0byBiZSB1c2FibGUg
Zm9yIE9TUiBFbnRyeS4KLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFZlY3RvcjxCeXRlY29k
ZUluZGV4Pj4gdGllclVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgUmVmQ291bnRlZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7
CiAKICAgICAvLyBNYXAgZWFjaCBieXRlY29kZSBvZiBDaGVja1RpZXJVcEFuZE9TUkVudGVyIHRv
IGl0cyBzdHJlYW0gaW5kZXguCiAgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCB1bnNpZ25lZD4g
Ynl0ZWNvZGVJbmRleFRvU3RyZWFtSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5o
CmluZGV4IGJkMWQ4YTA3MjY2MmNjMzUzYTQ0N2MwNWJiNmYxZTQwZTk5ZGJjYjIuLmFhZWE1ODRi
MDYyMGM0YTNlMTg0NWVmMWJjYTk1ZmEyMzNmMDEzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5oCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgUGxhbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxQbGFuPiB7CiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAoKSBjb25zdCB7
IHJldHVybiBtX3dpbGxUcnlUb1RpZXJVcDsgfQogICAgIHZvaWQgc2V0V2lsbFRyeVRvVGllclVw
KGJvb2wgd2lsbFRyeVRvVGllclVwKSB7IG1fd2lsbFRyeVRvVGllclVwID0gd2lsbFRyeVRvVGll
clVwOyB9CiAKLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFZlY3RvcjxCeXRlY29kZUluZGV4
Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGllclVwSW5Mb29wSGllcmFy
Y2h5OyB9CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNv
ZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7IHJldHVybiBtX3RpZXJVcEluTG9v
cEhpZXJhcmNoeTsgfQogICAgIFZlY3RvcjxCeXRlY29kZUluZGV4PiYgdGllclVwQW5kT1NSRW50
ZXJCeXRlY29kZXMoKSB7IHJldHVybiBtX3RpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzOyB9CiAK
ICAgICBlbnVtIFN0YWdlIHsgUHJlcGFyaW5nLCBDb21waWxpbmcsIFJlYWR5LCBDYW5jZWxsZWQg
fTsKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFBsYW4+IHsKICAgICBEZXNpcmVkR2xvYmFsUHJvcGVydGllcyBtX2dsb2JhbFByb3Bl
cnRpZXM7CiAgICAgUmVjb3JkZWRTdGF0dXNlcyBtX3JlY29yZGVkU3RhdHVzZXM7CiAKLSAgICBI
YXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFZlY3RvcjxCeXRlY29kZUluZGV4Pj4gbV90aWVyVXBJbkxv
b3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBSZWZDb3VudGVkQXJyYXk8
Qnl0ZWNvZGVJbmRleD4+IG1fdGllclVwSW5Mb29wSGllcmFyY2h5OwogICAgIFZlY3RvcjxCeXRl
Y29kZUluZGV4PiBtX3RpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzOwogCiAgICAgU3RhZ2UgbV9z
dGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IGZhMTNmOTVlNWNlZWQzNGQ2NjQ2ODZmY2Y2
MzI1Yzg3NmI5YzE1NTguLmIzYTMwMzgxNGJhOTY1NTFjYmFhZmY3ZjVhMjMwMjI4YzkxMjc0YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFRpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoIXRpZXJVcENhbmRpZGF0ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpLmFkZChlbnRyeS5rZXksIFdU
Rk1vdmUodGllclVwQ2FuZGlkYXRlcykpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFu
LnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpLmFkZChlbnRyeS5rZXksIHRpZXJVcENhbmRpZGF0ZXMp
OwogICAgICAgICB9CiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldFdpbGxUcnlUb1RpZXJVcCh0
cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCmluZGV4IGEzOWIxNDNmNzczMDE2YTNiNWRhZWM4MzVm
MzMxOTM3ZWQ4M2UxOTMuLjE4MWI0OWI4MDY4Yjk2NWNiODM3OTU4ZGUwYzE2YTEwYmExMjc5YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5o
CkBAIC0yMjIsNyArMjIyLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRzIHsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgVmVjdG9yPFNlZ21lbnQ+IG1fc2VnbWVudHM7CisgICAgVmVjdG9yPFNl
Z21lbnQsIDAsIENyYXNoT25PdmVyZmxvdywgMj4gbV9zZWdtZW50czsKICAgICB1bnNpZ25lZCBt
X251bUJpdHMgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9K
SVRTdHViUm91dGluZVNldC5jcHAKaW5kZXggYTkxZTk4OGIxODk1YjVmZTRmODFkYTc3NzkyYjEz
YjViNDkzMjMzZS4uMjdjNGU2YjhlMGFiMDRkZGU2ZjJmZWExY2UwN2ViM2M1M2IzOGY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgSklUU3R1YlJvdXRpbmVTZXQ6OmRlbGV0ZVVubWFya2Vk
SmV0dGlzb25lZFN0dWJSb3V0aW5lcygpCiAgICAgICAgIH0KICAgICAgICAgcm91dGluZS5yb3V0
aW5lLT5kZWxldGVGcm9tR0MoKTsKICAgICB9Ci0gICAgbV9yb3V0aW5lcy5zaHJpbmsoZHN0SW5k
ZXgpOworICAgIG1fcm91dGluZXMuc2hyaW5rQ2FwYWNpdHkoZHN0SW5kZXgpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlRGF0YS5oCmluZGV4IDcyMDFlZTFjZjMxZTUyNmM3Yzc0NTAwNWYzZWFl
NWI0ZTJhYzk5OWEuLmE2ZGUyYTRjNzY4YmUxMTg5MGQ2NzI5NGQ0ZDczMWViYzc3MmNmNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgK
QEAgLTM1LDYgKzM1LDExIEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IENhbGxGcmFtZVNodWZm
bGVEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB2b2lk
IHNocmlua1RvRml0KCkKKyAgICB7CisgICAgICAgIGFyZ3Muc2hyaW5rVG9GaXQoKTsKKyAgICB9
CisKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJnczsKICAgICB1bnNpZ25lZCBudW1Mb2Nh
bHMgeyBVSU5UX01BWCB9OwogICAgIHVuc2lnbmVkIG51bVBhc3NlZEFyZ3MgeyBVSU5UX01BWCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgKaW5kZXggNDZhYTAzOWZjNzRmZTBhNmU2NGMzZWMxNGVmOTYxM2U3ZThiNTNiOS4uNThkODY0
ZDc4OGI3MjBhYjIwNTNhYmU5YjI4NzhhYTkxOGM5ZTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTYsNyArOTcs
NyBAQCBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVK
SVRTdHViUm91dGluZSB7CiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xv
dFZpc2l0b3ImKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpT
Q2VsbD4+IG1fY2VsbHM7CisgICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+
PiBtX2NlbGxzOwogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuaAppbmRleCBmYTdiN2ViNmVmYWUwZWNjMmI3MmQ1OWU1NWY0ZTFmMWQ2Y2JkMzlj
Li42YzEzZjEyNjMwYTFiNTk2MjlkZDk5MmE0OWYzYzdhY2I4ZGRiMzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5o
CkBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgZmlu
YWwgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtSZXF1aXJl
ZE9iamVjdHNJbnRlcm5hbChBYnN0cmFjdFNsb3RWaXNpdG9yJikgZmluYWw7CiAgICAgdm9pZCBt
YXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKSBmaW5hbDsKIAotICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiwgMj4gbV92YXJpYW50czsKKyAgICBSZWZDb3VudGVk
QXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fdmFyaWFudHM7CiAgICAgVW5pcXVlQXJyYXk8
dWludDMyX3Q+IG1fZmFzdENvdW50czsKICAgICBCYWc8UG9seW1vcnBoaWNDYWxsTm9kZT4gbV9j
YWxsTm9kZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZmY1
OWEwZmI1ZjhjY2JhYWY1ZDJkM2EwOWE0ZTEyMDAyMTIwYjIxNi4uOGE5NmFiZTg1ZWRlZmJhMTU1
MTA5Mjc0NjdkNmEzOTk5ZTEzNTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
R2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKKyAgICAgICAgICAgIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9m
ZnNldCA6IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0
ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShn
bG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNsb3RC
YXNlU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpLT5nZXQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkg
PT0gb2Zmc2V0KTsKQEAgLTY5NCw3ICs2OTQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAg
ICBpZiAocHV0S2luZCA9PSBQdXRLaW5kOjpOb3REaXJlY3QpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0
LCBiYXNlQ2VsbCwgbnVsbHB0cik7CkBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9B
Y2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nl
c3NDaGFpbjo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTcyNiw3ICs3MjYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
awogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90Lmlz
Q2FjaGVhYmxlU2V0dGVyKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkpIHsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25k
aXRpb25TZXQ7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogCiAgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byBkbyB0aGlzIGV2ZW4gaWYgd2UncmUgYSBzZWxmIGN1c3RvbSwgc2lu
Y2Ugd2UgbXVzdCBkaXNhbGxvdyBkaWN0aW9uYXJpZXMKICAgICAgICAgICAgICAgICAvLyBiZWNh
dXNlIHdlIG5lZWQgdG8gYmUgaW5mb3JtZWQgaWYgdGhlIGN1c3RvbSBnb2VzIGF3YXkgc2luY2Ug
d2UgY2FjaGUgdGhlIGNvbnN0YW50CkBAIC03MzcsNyArNzM3LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sKIAogICAgICAgICAgICAgICAgIGlmIChzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90
b0FjY2Vzc0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QuYmFz
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4p
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSk7CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CisgICAgICAg
ICAgICAgICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFp
bjsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9IGJhc2VWYWx1ZSkg
ewpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNy
ZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTkyMCw3ICs5MjAsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAg
ICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAg
IGlmICh3YXNGb3VuZCkgewogICAgICAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0g
YWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CkBAIC05NTEsNyArOTUxLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmV0cnlDYWNoZUxhdGVyOwogCiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2Vz
UG9seVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0g
UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwor
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vz
c0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCBzbG90KTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNs
b3RCYXNlU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpLT5nZXQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CkBAIC05NzAsNyArOTcwLDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogCiAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJv
dG8pIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAg
ICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVh
dGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCBzbG90KTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3Rv
dHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggMzQwMzlhNWY4YjBiY2IyNmZiNjA1NTMzZjdmODI1ZDhlOWRiNTliOS4uZTk5
Mzk0ZGNmOGQ4NDQwYzU1ZmJiNmYzNjY3MmZjNmUyYjA3ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSlNUb2tlbjo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJS
ZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRp
ZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCitFeHBlY3RlZDx0eXBlbmFt
ZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5n
Q29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRp
b24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcykKIHsKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29uc3Rf
Y2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUqPiht
X3NvdXJjZSkpOwogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBzb3VyY2VQYXJzZU1v
ZGUoKTsKQEAgLTMxODAsNyArMzE4MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiYgY2xhc3NGaWVsZExvY2F0aW9ucykKK3RlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+JiBjbGFzc0ZpZWxkTG9jYXRp
b25zKQogewogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQu
Y3JlYXRlU291cmNlRWxlbWVudHMoKTsKICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXNDbGFzc1Nj
b3BlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAzOTUxYTAxZTg4
ZjhlNmE1ZWI5MTc5ZTIzOThjZjJjOTRhNTExZTMyLi43NjhkNzNkYjdiYjMwMTMyMTIzZGI2ODYx
ZTQ0N2E5MzBlZjcwNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTk5MSw3ICs5OTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH5QYXJz
ZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQ
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3Qg
SWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVO
YW1lRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBv
c2l0aW9uPiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4o
KSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xNTEx
LDcgKzE1MTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXM7CiAgICAgICAgIGludCBudW1Db25zdGFudHM7CiAgICAgfTsKLSAgICBFeHBlY3RlZDxQYXJz
ZUlubmVyUmVzdWx0LCBTdHJpbmc+IHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIFBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgRXhwZWN0ZWQ8UGFy
c2VJbm5lclJlc3VsdCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJz
aW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiwgY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwogCiAgICAg
Ly8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBp
c0Z1bmN0aW9uTWV0YWRhdGFOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
NzQyLDcgKzE3NDMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1l
bnRzKFRyZWVCdWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291
cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJjZUVs
ZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgcGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVpbGRlciYsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXJTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0IFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPiYpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJ
dGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQq
IGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50
aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gbnVs
bHB0cik7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVk
IH07CkBAIC0yMTI3LDcgKzIxMjgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRl
TmFtZXMsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMp
CitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBh
cnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0Nv
bnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVQcml2YXRlTmFtZXMsIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVy
ck1zZzsKQEAgLTIyMjgsNyArMjIyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRU
eXBlOjpOb25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBkZWJ1Z2dlclBhcnNlRGF0YSA9IG51
bGxwdHIsCiAgICAgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2
YXRlTmFtZXMgPSBudWxscHRyLAotICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNs
YXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAorICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxK
U1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CiAgICAgQVNTRVJUKCFzb3VyY2Uu
cHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDdiYTI3MWQ4YzZiM2YxOTA2NjJhMDFiZWY4
ZTMxZDIxMWM4Y2MyZWEuLjU2ZDFhYWQ2N2U4YTYwNDc3MzcxN2Y4NjliMjUyNjRjYmZmZmYyYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAg
LTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jp
bkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nSW1wbC5oPgogCkBAIC02NjksMTAgKzY3MCwxMCBAQCBjbGFzcyBDYWNoZWRQ
YWlyIDogcHVibGljIENhY2hlZE9iamVjdDxzdGQ6OnBhaXI8U291cmNlVHlwZTxGaXJzdD4sIFNv
dXJjZVR5cGU8UwogICAgIFNlY29uZCBtX3NlY29uZDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxTb3Vy
Y2VUeXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5
cGU8S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlw
ZTxWYWx1ZT4+PgotY2xhc3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9i
amVjdDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcs
IEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPj4gewordGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFyZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5
cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxL
ZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPFZh
bHVlPj4sIHR5cGVuYW1lIFRhYmxlVHJhaXRzID0gV1RGOjpIYXNoVGFibGVUcmFpdHM+CitjbGFz
cyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEhhc2hNYXA8U291
cmNlVHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPiwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEss
IHR5cGVuYW1lIFY+Ci0gICAgdXNpbmcgTWFwID0gSGFzaE1hcDxLLCBWLCBIYXNoQXJnLCBLZXlU
cmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz47CisgICAgdXNpbmcgTWFwID0gSGFzaE1hcDxLLCBW
LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgVGFibGVUcmFpdHM+Owog
CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWFwPFNv
dXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4+JiBtYXApCkBAIC02OTYsNiArNjk3LDkg
QEAgY2xhc3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxIYXNo
TWFwPFNvdXJjZVR5cGU8S2V5PiwgU291cmMKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkUGFpcjxL
ZXksIFZhbHVlPj4gbV9lbnRyaWVzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFyZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5cGU8S2V5
Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxLZXk+Piwg
dHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPFZhbHVlPj4+
Cit1c2luZyBDYWNoZWRNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXAgPSBD
YWNoZWRIYXNoTWFwPEtleSwgVmFsdWUsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnLCBXVEY6Ok1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFRhYmxlVHJh
aXRzPjsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIENhY2hlZFVuaXF1ZWRTdHJpbmdJ
bXBsQmFzZSA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxUPiB7CiBwdWJsaWM6CkBAIC05
MTAsNyArOTE0LDcgQEAgY2xhc3MgQ2FjaGVkU3RyaW5nSnVtcFRhYmxlIDogcHVibGljIENhY2hl
ZE9iamVjdDxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gewogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRTdHJpbmdJbXBsPiwgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGU6OiBPZmZzZXRMb2NhdGlvbj4gbV9vZmZzZXRUYWJsZTsKKyAgICBDYWNo
ZWRNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENh
Y2hlZFN0cmluZ0ltcGw+LCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24+
IG1fb2Zmc2V0VGFibGU7CiB9OwogCiBjbGFzcyBDYWNoZWRCaXRWZWN0b3IgOiBwdWJsaWMgVmFy
aWFibGVMZW5ndGhPYmplY3Q8Qml0VmVjdG9yPiB7CkBAIC0xNzc2LDYgKzE3ODAsNyBAQCBjbGFz
cyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
VW5saW5rZWRGdW5jdGlvbkV4ZQogICAgIHsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5lbmNvZGUo
ZW5jb2RlciwgcmFyZURhdGEubV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpOworICAgICAgICBtX2NsYXNzRmllbGRMb2NhdGlvbnMuZW5jb2RlKGVuY29kZXIsIHJh
cmVEYXRhLm1fY2xhc3NGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIG1fcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50KTsKICAgICB9CiAKQEAgLTE3ODQsNiArMTc4OSw3IEBAIGNsYXNzIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0
YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhIHsg
fTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xh
c3NTb3VyY2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fY2xh
c3NGaWVsZExvY2F0aW9ucy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xhc3NGaWVsZExv
Y2F0aW9ucyk7CiAgICAgICAgIG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5kZWNvZGUo
ZGVjb2RlciwgcmFyZURhdGEtPm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAg
ICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CkBAIC0xNzkxLDYgKzE3OTcsNyBAQCBjbGFzcyBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5s
aW5rZWRGdW5jdGlvbkV4ZQogcHJpdmF0ZToKICAgICBDYWNoZWRTb3VyY2VDb2RlV2l0aG91dFBy
b3ZpZGVyIG1fY2xhc3NTb3VyY2U7CiAgICAgQ2FjaGVkUmVmUHRyPENhY2hlZFREWkVudmlyb25t
ZW50TGluaz4gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICBDYWNoZWRWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKICAgICBDYWNoZWRQcml2YXRlTmFt
ZUVudmlyb25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyYzE0OWZhNzI2MjBiYWNhM2RhYTIyMjgy
ZDg3YmU3OWU1ZTg5MDU5Li45ZjMyMTkzNDU2ODA5NWQzOWQxOWQ3OWQ3MDUyMDZjNGY5NTJjOWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTI3LDYgKzExMjcsNyBA
QCB2b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50aWwoQ2FsbEZyYW1lKiB0
YXJnZXQpCiAgICAgLy8gV2UgaGF2ZSB0byB3b3JyeSBhYm91dCBtaWdyYXRpbmcgZnJvbSBhbm90
aGVyIHRocmVhZCBzaW5jZSB0aGVyZSBtYXkgYmUgbm8gY2hlY2twb2ludHMgaW4gb3VyIHRocmVh
ZCBidXQgb25lIGluIHRoZSBvdGhlciB0aHJlYWRzLgogICAgIHdoaWxlIChtX2NoZWNrcG9pbnRT
aWRlU3RhdGUuc2l6ZSgpICYmIGJvdW5kcy5jb250YWlucyhtX2NoZWNrcG9pbnRTaWRlU3RhdGUu
bGFzdCgpLT5hc3NvY2lhdGVkQ2FsbEZyYW1lKSkKICAgICAgICAgbV9jaGVja3BvaW50U2lkZVN0
YXRlLnRha2VMYXN0KCk7CisgICAgbV9jaGVja3BvaW50U2lkZVN0YXRlLnNocmlua1RvRml0KCk7
CiB9CiAKIHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCA2
ODA4N2U1NTBlYjYwNzg1ZjE0MjI4MGNkZDQyMmE1YjNlZmQwNzM2Li44NzAzNWEyMmIxZjUwZTQ5
YzVhNTQ2OGExYzVhOTMzOTEzODZjNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTg0LDggKzg0LDgg
QEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCog
Y2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2NvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVSZWNv
cmQpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWVtb3J5KTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW5zdGFuY2UoKS5tb2R1bGUoKS5tb2R1
bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX3RhYmxlc1tpXSk7CisgICAgZm9yIChhdXRvJiB0YWJsZSA6IHRoaXNP
YmplY3QtPm1fdGFibGVzKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCh0YWJsZSk7CiAgICAgdmlz
aXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9pbnN0YW5jZS0+ZXh0
cmFNZW1vcnlBbGxvY2F0ZWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKICAgICAgICAgdmlz
aXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVC
YXJyaWVyPEpTT2JqZWN0Pj4oaSkpOyAvLyBUaGlzIGFsc28ga2VlcHMgdGhlIGZ1bmN0aW9ucycg
SlNXZWJBc3NlbWJseUluc3RhbmNlIGFsaXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBjYmNlYjUwMDE3MzNj
YTMzMGRkODJmOGFjNWI3Yzk1N2U1NmMzNWU2Li5kNDYyZTdkOTlhNWVhMzc2ZGFiMGQzMTZlZDhm
ZGNlZWZkY2JjM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldh
c21DcmVhdGlvbk1vZGUuaCIKICNpbmNsdWRlICJXYXNtSW5zdGFuY2UuaCIKICNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMTE1LDcgKzExNiw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJB
c3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJB
c3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU1dlYkFz
c2VtYmx5VGFibGU+PiBtX3RhYmxlczsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVy
PEpTV2ViQXNzZW1ibHlUYWJsZT4+IG1fdGFibGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCmluZGV4IDU1Y2E5ODEzMTM4YjI2MjAxMDM0OTkwN2My
NTY5ZmVjMmRiMTRhMWMuLmRjYTM4MzQ0M2Y4MWIwOTc0ZmM1OWQ2NDU5MDQwMjY2ZjgzMmRiN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCkBAIC01MCw2ICs1MCwxMSBAQCBjbGFzcyBSZWZD
b3VudGVkQXJyYXkgewogICAgIGVudW0gQ29tbW9uQ29weUNvbnN0cnVjdG9yVGFnIHsgQ29tbW9u
Q29weUNvbnN0cnVjdG9yIH07CiAKIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOwor
ICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9p
dGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRv
cj47CisKICAgICBSZWZDb3VudGVkQXJyYXkoKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgUmVmQ291
bnRlZEFycmF5KGNvbnN0IFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpCkBAIC0xNjksOCArMTc0LDgg
QEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplKCkgKiBzaXplb2YoVCk7IH0KICAgICAKICAgICBUKiBkYXRhKCkgeyByZXR1
cm4gUHRyVHJhaXRzOjp1bndyYXAobV9kYXRhKTsgfQotICAgIFQqIGJlZ2luKCkgeyByZXR1cm4g
ZGF0YSgpOyB9Ci0gICAgVCogZW5kKCkKKyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGRh
dGEoKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpCiAgICAgewogICAgICAgICBpZiAoIW1fZGF0YSkK
ICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTc5LDggKzE4NCwxMyBAQCBjbGFzcyBSZWZDb3Vu
dGVkQXJyYXkgewogICAgIH0KICAgICAKICAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZGF0YSgpOyB9Ci0gICAgY29u
c3QgVCogYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+
KHRoaXMpLT5iZWdpbigpOyB9Ci0gICAgY29uc3QgVCogZW5kKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKyAgICBjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4o
dGhpcyktPmJlZ2luKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsgfQorCisgICAgcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkp
OyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihlbmQoKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
KGVuZCgpKTsgfQogICAgIAogICAgIFQmIGF0KHNpemVfdCBpKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425121</attachid>
            <date>2021-04-03 18:51:55 -0700</date>
            <delta_ts>2021-04-05 20:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403185154.patch</filename>
            <type>text/plain</type>
            <size>79687</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi45NmU0MGJhMGNiZDU3ZmRm
Y2U1OTRlNTVjYWFjZjUxZTMxN2I4MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3JzIGluIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkIFhYWFN0YXR1
czo6c2hyaW5rVG9GaXQgdG8gc2hyaW5rIHVuZGVybHlpbmcgZHluYW1pYyBWZWN0b3JzLgorICAg
ICAgICAyLiBSZXBsYWNlIHRpZXJVcEluTG9vcEhpZXJhcmNoeSdzIFZlY3RvciB3aXRoIFJlZkNv
dW50ZWRBcnJheSBzaW5jZSBpdCBpcyBjb25zdHJ1Y3RlZC1vbmNlLWxvb2t1cC1vbmx5IGRhdGEu
CisgICAgICAgIDMuIFVzZSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQg
Zm9yIFN0cmluZ1RhYmxlcyBzaW5jZSB0aGlzIGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9u
bHkgZGF0YS4gV2UgYWxzbyBhZGQKKyAgICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0IHN1cHBvcnQgZm9yIENhY2hlZFR5cGVzLgorICAgICAgICA0LiBVc2Ug
cmVzaXplVG9GaXQgZm9yIFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgYW5kIFN3aXRjaEp1bXBUYWJs
ZXMuCisgICAgICAgIDUuIEpJVFN0dWJSb3V0aW5lU2V0J3MgVmVjdG9yIHNob3VsZCBiZSBzaHJ1
bmsuCisgICAgICAgIDYuIEJsb2NrRGlyZWN0b3J5Qml0cydzIFZlY3RvcidzIGluaXRpYWwgc2l6
ZSBzaG91bGQgYmUgc21hbGwuCisgICAgICAgIDcuIE1ha2UgUG9seVByb3RvQWNjZXNzQ2hhaW4g
UmVmQ291bnRlZCwgYW5kIHVzZSBSZWZDb3VudGVkQXJyYXkgZm9yIGl0cyBWZWN0b3I8U3RydWN0
dXJlSUQ+LiBBbmQgcmVtb3ZlIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjbG9uZS4KKyAgICAgICAg
ICAgSnVzdCBoYXZpbmcgUmVmIGlzIGVub3VnaCBzaW5jZSB0aGlzIGlzIGltbXV0YWJsZSBkYXRh
LgorICAgICAgICA4LiBVc2UgUmVmQ291bnRlZEFycmF5IGZvciBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSdzIG1fY2xhc3NGaWVsZExvY2F0aW9ucy4KKyAgICAgICAgOS4gVXNlIFJlZkNvdW50
ZWRBcnJheSBmb3IgSlNXZWJBc3NlbWJseUluc3RhbmNlLgorCisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6SW5CeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5z
dGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0YW5jZU9mU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlBvbHlQcm90
b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2hhaW4gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6b3BlcmF0b3Ih
PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBvbHlQcm90b0FjY2Vzc0NoYWluOjpm
b3JFYWNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hh
aW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
Ojp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
eHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlBy
b3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChK
U0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRp
bmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0
cnVjdGlvbiBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4
OGI3ZDdmZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNjNiMmIyYTk4NTAxM2FhM2Q5NjU2ZjJj
OGQxODA4MzgxODcxNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNC0wMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21l
IG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgcmJlZ2luIGFuZCByZW5kIHRvIG1ha2UgUmVmQ291bnRlZEFycmF5IHVz
YWJsZSBmb3IgVmVjdG9yIGNsaWVudHMgd2hvIHVzZSB0aGVzZSBmZWF0dXJlcy4KKworICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5
OjpiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpy
YmVnaW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6cmVuZCBjb25zdCk6CisKIDIwMjEtMDQtMDIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFByZWZlclBhZ2VSZW5kZXJp
bmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjAyYTJkNWYzMmM5YzIyMGQwZTkw
YmVkN2U5ODJmMWI0OTM2YWMzMi4uYTQ4MTMyMDY0NDEwMDg3NGY2NzA0ZDY2NGNiNmRmODAwMTJl
ZDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwog
Ci1BY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCitBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgOiBtX3R5cGUodHlwZSkKICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCkBAIC02OCw3ICs2OCw3IEBAIEFjY2Vzc0Nhc2U6OkFj
Y2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJs
ZUlkZW50aWZpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25kaXRpb25TZXQuaXNWYWxpZCgpKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgSW5IaXQ6CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUK
IAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRp
b24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlLAotICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVB
Y2Nlc3NDaGFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAppbmRleCA2MDI1N2IxYjViY2E5NWNkM2NjNjNiM2YzYTA5ODVjNzM3YmE3
ZGU2Li5mMjg3ZmJmYmRiYjg2Nzk5MzI5NGY3OWFjZGVjZWZhNTVlYjBjMmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTE0OCwxMCArMTQ4LDEw
IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAotICAgICAg
ICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
ID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOworICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAotICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+KTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7
CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShW
TSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUp
OwpAQCAtMjU1LDIwICsyNTUsOSBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICNlbmRpZgogICAgIAog
cHJvdGVjdGVkOgotICAgIEFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+KTsKKyAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
Pik7CiAgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAgICBBY2Nlc3ND
YXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQotICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5
cGUpCi0gICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQotICAgICAgICAsIG1fdmlhUHJv
eHkob3RoZXIubV92aWFQcm94eSkKLSAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkK
LSAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKLSAgICAgICAgLCBtX2Nv
bmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkKLSAgICAgICAgLCBtX2lkZW50aWZpZXIo
b3RoZXIubV9pZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pCi0gICAgICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0NoYWluID0gb3RoZXIu
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2xvbmUoKTsKLSAgICB9CisgICAgQWNjZXNzQ2FzZShj
b25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0OwogCiAgICAgQWNjZXNzQ2FzZSYgb3Bl
cmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUo
KSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0zMjEsNyArMzEwLDcgQEAgY2xhc3MgQWNj
ZXNzQ2FzZSB7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNl
dDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbjsKKyAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IG1fcG9seVBy
b3RvQWNjZXNzQ2hhaW47CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
CmluZGV4IDY0ZTJhMDI4NmU4NTdhMWM2MzQ0NTcwYTUzZGNkYTc4ZmRkYmEzMjMuLjM2YzM0MDlk
YmI3ZjQ3ZmNkZjJhNGRjOGViNTMyNmRmN2JkZThiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yODEsNiArMjgxLDcgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiB2b2lkIENhbGxMaW5rSW5mbzo6c2V0
RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEp
CiB7CiAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxl
RGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+c2hyaW5rVG9GaXQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAppbmRleCBhZTdh
NGY3Yzc0Mjc5MzY2NGU2OTdhNWY1ZGNjNDFlNGEwMzgyY2MxLi5kNTRmYTIzYmVjM2QzNTBjNmM4
ZWMwMjFlODQ3NmNhNTQ5ODQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQx
LDExIEBAIGJvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVz
VmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsK
K30KKwogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNv
bXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBt
YXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0x
MDksNiArMTE0LDcgQEAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2kKICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwg
KnN0dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTkxLDYgKzE5Nyw3IEBAIHZvaWQg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAg
ICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2Vz
U2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IGU2N2I2MzgzODg0OWY1MjNlZmI2OTVlZjFl
ZGIwOTg3YjYyZjU4MWYuLmE5ODhmMmFmOGIxYmI1MmM1YTQzYWM4NTFmZmEyMjY4ZmRmMzQwZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1By
aXZhdGVCcmFuZFN0YXR1cy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7CiAKICAgICBib29sIGFw
cGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisgICAgdm9pZCBz
aHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTIzNDE5
OGE5YWU1NDBjZjMyNTY0YmQ1N2FmNDBlMDgyM2VjMDQwZC4uMjhjYTllYzVmZmRiMjVlMjFlZDY4
ZTEzYWE5NmMyOTk1N2VjNDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50
KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAg
ICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6
aXRlcmF0b3IgcHRyID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShp
KS5vZmZzZXRUYWJsZS5iZWdpbigpOwogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVt
cFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxv
Y2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKQEAgLTQ1MCw3
ICs0NTAsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmdy
b3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnJl
c2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBzb3Vy
Y2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSk7CiAgICAgICAg
ICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rl
bGV0ZUJ5U3RhdHVzLmNwcAppbmRleCA5MjMxNDdkNjMzZTdmMzNmZDA1NDRjNjQ1NGM2Y2UyMTRk
YTBjMzExLi4wMTkwOWExZTEzMGJhYjAyNDQ5MDk1NmYxZGMzOWQ1ZDk0ZjkxMWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAg
LTQwLDYgKzQwLDExIEBAIGJvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
RGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFy
aWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBEZWxldGVCeVN0YXR1czo6c2hy
aW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogRGVsZXRl
QnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJh
c2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMjksNiArMTM0LDcgQEAgRGVsZXRlQnlTdGF0dXMg
RGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yMTQsNiArMjIwLDcgQEAg
dm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVyKQog
ICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlua1RvRml0
KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKaW5kZXgg
YjA3NmJmMjY5ZWM3ODBiZTg2ZWQ5M2U0ZTEzNjc2OWNmYWY3YzMxYi4uNWJhODAzYWE5NzdmZjNk
YzViZWU1ODdiNDc3MWIwMDQxNmJiZDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgRGVsZXRl
QnlTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAogICAgIGJvb2wgYXBw
ZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCBkOTU3MjFlZWIw
MmY0ODM1MzQxOTNiZmI3ZTdlZGM1MGEwYTgzMzY3Li5iZDc0ZmI2NGYzNDExNTE3MGEwMWMxNjE4
Yjg1ZTQ3ZTA0NzZlYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeVN0YXR1cy5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIGJvb2wgR2V0QnlTdGF0dXM6OmFwcGVu
ZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVu
ZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBHZXRCeVN0
YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30K
KwogR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVk0mIHZt
ID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTMzOSw2ICszNDQsNyBAQCBHZXRCeVN0YXR1cyBH
ZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAg
ICAgICAgICAgICB9IH0KICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlu
a1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTQz
Myw2ICs0MzksNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBT
dHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAgICAgICByZXR1cm4g
R2V0QnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3Vs
dC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKQEAgLTQ5NCw2ICs1MDEsNyBAQCB2b2lkIEdldEJ5U3RhdHVzOjptZXJnZShjb25zdCBH
ZXRCeVN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJW
YXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0K
KyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBj
YXNlIE1vZHVsZU5hbWVzcGFjZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5U3RhdHVzLmgKaW5kZXggZDNiMWM2MjZkY2FkMzc5YTlmZDhiYjA0NDRjYTFmZDdjYjhiZmYy
Ni4uMjQzNzMwZmRlMzNhZTc1ZWYxZjYzNmM0MTdmODhiOGU5OTZmNTJlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKQEAgLTEyMyw2ICsxMjMsNyBA
QCBjbGFzcyBHZXRCeVN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOyAvLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KIAogICAgIGJvb2wgYXBwZW5kVmFyaWFu
dChjb25zdCBHZXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
ZThiNGNhNWU0YmJlNWY3MTAzODI3NTAxNmI5YWVjMmM1MTlkMGI4OC4uYTU2NDBmNjFmNmYxOGVh
ZjQwYjkwZDMwZDVkY2NlYmY2MTEyNzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZUludGVybmFsIHsKIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKLUdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNl
dCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRj
aHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgOiBCYXNl
KHZtLCBvd25lciwgYWNjZXNzVHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKQogewogICAgIG1fY3VzdG9tU2xvdEJhc2Uuc2V0TWF5QmVOdWxsKHZtLCBvd25l
ciwgY3VzdG9tU2xvdEJhc2UpOwpAQCAtNTAsNyArNTAsNyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZQogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0LAogICAgIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQs
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0
KiBjdXN0b21TbG90QmFzZSwKLSAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBk
b21BdHRyaWJ1dGUsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCisgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9t
QXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgR2V0dGVyOgpAQCAtNjgsNyAr
NjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsCi0gICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBw
cm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCisgICAgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25Q
dHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNs
b3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZh
bHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgK
aW5kZXggNjAzZmJmNjI0NTQ2MDcwNzc0MWUyNTgwZjQ0Zjc1NDdiZDgyZjg1OS4uNzJjOGRhMTQ0
YWM3NzgwZmZlYTI4ZGVkNGQ5YzY5ODE3ODA4MDIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01Niwx
MCArNTYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQ
cm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3Vz
dG9tR2V0dGVyLAotICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIE9wdGlvbmFsPERP
TUF0dHJpYnV0ZUFubm90YXRpb24+LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+KTsKKyAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBPcHRpb25hbDxET01BdHRy
aWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LAotICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4sIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwK
KyAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+LCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9u
UHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVj
dCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRT
dHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKQEAgLTcwLDcgKzcwLDcgQEAgY2xh
c3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3ND
YXNlIHsKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tQWNjZXNz
b3IoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUFjY2Vzc29yOyB9CiAKIHByaXZhdGU6Ci0gICAg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPik7CisgICAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCos
IEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1
cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdh
dGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
KGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAppbmRleCA5NTc4MzAxODZjOWVlOWMyNDEx
OWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFiMmFlYzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMx
M2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJbkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlh
bnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0
dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIEluQnlJZFN0YXR1czo6
c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsKK30KKwogI2lm
IEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0KQogewpA
QCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsyMzksNyBAQCB2b2lkIEluQnlJZFN0YXR1
czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRha2VzU2xvd1BhdGg6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgKaW5kZXggMGY0N2ZkZjdj
YjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4uN2YxNWZjNWU0NjFhOWEwMmU0ZjdiZGI2
MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBAIGNsYXNzIEluQnlJZFN0YXR1cyBmaW5h
bCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0
dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAjZW5kaWYKICAgICBib29sIGFwcGVu
ZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsK
IAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9uIH07CiAgICAgVmVjdG9yPEluQnlJ
ZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5kZXggY2Y4NThmZDM5NDY4MGE1ZWVhOTAw
OGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3NjY5Mzc4MzEzMmQ5OThmZDhlNjQxZjVj
ZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNl
T2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAgdm9pZCBJbnN0YW5jZU9mU3RhdHVzOjph
cHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJpYW50JiB2YXJpYW50KQogICAgIGFwcGVu
ZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBJbnN0YW5j
ZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgp
OworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFwJiBpbmZvTWFwLCBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsxMDEsNyBAQCBJbnN0YW5jZU9mU3RhdHVz
IEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpJbnN0YW5j
ZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaAppbmRleCA4NWM0NWNj
OGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIyLi5iYTk5YzY3OThhNjVmYzFhZTBkM2Yy
NjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBjbGFzcyBJbnN0YW5j
ZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFZhcmlhbnQoY29u
c3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAgICAgCiAg
ICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5zdGFuY2VPZlZhcmlhbnQsIDI+IG1fdmFy
aWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggZjhkY2U3NTcxMzdiYzc5N2ZkODUw
Y2MyNjE3Mjc0NTc2ZGU4ODYwOC4uOTU0NDAzZmNkNzM3ZmE5NjUzZDY5YWU1OGRhNjg2OWRjMTU1
YTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9u
KiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpT
RnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgIDogQmFzZSh2bSwgb3duZXIsIEludHJpbnNpY0dl
dHRlciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCiB7CiAgICAgbV9pbnRyaW5zaWNGdW5jdGlvbi5zZXQo
dm0sIG93bmVyLCBpbnRyaW5zaWNGdW5jdGlvbik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBzdGQ6OnVu
aXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2lj
RnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hh
aW4pCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggZDdhZWQ3YTUzMmMxMzA4
Y2VkNjU1ZTBkZmVlMjVmMzczZDY4YTYwNS4uODUxZWE1NDJkNDBhMWU2ZjlmYTg0NTA1MWJlODlh
MzdlNTJjYjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00MiwxNCArNDIsMTQgQEAgY2xh
c3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsK
ICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1
Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShW
TSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1
cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJp
bnNpY0Z1bmN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiog
aW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4p
OworICAgIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9p
bnRyaW5zaWNGdW5jdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVt
cFRhYmxlLmgKaW5kZXggYzE1OWFjMzE3YTk3ODQ2YWE4ZGQ2NjFkNjg5N2MwNWE1NTU5YWU5Yi4u
NWZiODRhMWU1NGVkZWJmMGJhYjYxOGZmN2I4MjM5ZmJhOWIzMmZmYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtMzAsNyArMzAsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApAQCAtNDQsNyArNDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgc3RydWN0IFN0cmluZ0p1bXBUYWJs
ZSB7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExv
Y2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICAgICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFi
bGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNl
dFRhYmxlOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dp
dGNoUHRyVGFnPiBjdGlEZWZhdWx0OyAvLyBGSVhNRTogaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3Nh
cnkgdG8gc3RvcmUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCmluZGV4IGEyZTAxN2NlNTM4Y2Q5OTRkYjUz
YzA3M2IzY2JmZTMxN2Q2NmIzNDIuLmUyYjdiNjYyOGFjMGZmNWU0MDVlODhiMDQ2NDNhOTNhZDYx
ZmQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJv
dG9BY2Nlc3NDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHlQcm90b0FjY2Vzc0NoYWluLmNwcApAQCAtMzAsMjEgKzMwLDIwIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBi
YXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJh
c2UoKTsKLSAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgdGFyZ2V0KTsKKyAg
ICByZXR1cm4gdHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgdGFyZ2V0KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmpl
Y3QqIHRhcmdldCkKK1JlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNz
Q2hhaW46OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJh
c2UsIEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAgICAgSlNDZWxsKiBjdXJyZW50ID0gYmFzZTsKICAg
ICBWTSYgdm0gPSBiYXNlLT52bSgpOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiByZXN1bHQobmV3IFBvbHlQcm90
b0FjY2Vzc0NoYWluKCkpOwotCisgICAgVmVjdG9yPFN0cnVjdHVyZUlEPiBjaGFpbjsKICAgICBm
b3IgKHVuc2lnbmVkIGl0ZXJhdGlvbk51bWJlciA9IDA7IHRydWU7ICsraXRlcmF0aW9uTnVtYmVy
KSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZt
KTsKIApAQCAtNjAsNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplYwogICAgICAgICAv
LyBUbyBzYXZlIG1lbW9yeSwgd2UgZG9uJ3QgaW5jbHVkZSB0aGUgYmFzZSBpbiB0aGUgY2hhaW4u
IFdlIGxldAogICAgICAgICAvLyBBY2Nlc3NDYXNlIHByb3ZpZGUgdGhlIGJhc2UgdG8gdXMgYXMg
bmVlZGVkLgogICAgICAgICBpZiAoaXRlcmF0aW9uTnVtYmVyKQotICAgICAgICAgICAgcmVzdWx0
LT5tX2NoYWluLmFwcGVuZChzdHJ1Y3R1cmUtPmlkKCkpOworICAgICAgICAgICAgY2hhaW4uYXBw
ZW5kKHN0cnVjdHVyZS0+aWQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGN1cnJlbnQgPT0gYmFzZSk7CiAKQEAgLTc4LDggKzc3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWMKICAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJlc3VsdC0+bV9jaGFpbi5zaHJpbmtUb0ZpdCgpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4o
V1RGTW92ZShjaGFpbikpKTsKIH0KIAogYm9vbCBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6bmVlZElt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYgdm0pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmluZGV4IDBhYjBl
MTNmMWYyMmQwNTU5NTFmYjc5OTk3ZDQ4Y2YwMTc2Nzg3YWYuLjA5YmZjMGI4NmM1ODc5MWFiNzg5
ZjY2NDUzNDhiMzFhMGMwNzM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTM3LDIyICszOCwxMyBAQCBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFByb3Bl
cnR5U2xvdDsKIGNsYXNzIFN0cnVjdHVyZTsKIAotY2xhc3MgUG9seVByb3RvQWNjZXNzQ2hhaW4g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCitjbGFzcyBQb2x5UHJvdG9BY2Nlc3ND
aGFpbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gewogcHVibGljOgotICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKFBvbHlQcm90b0FjY2Vz
c0NoYWluJikgPSBkZWZhdWx0OwotCiAgICAgLy8gUmV0dXJucyBudWxscHRyIHdoZW4gaW52YWxp
ZC4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CisgICAgc3Rh
dGljIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiB0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBjbG9uZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxT
dHJ1Y3R1cmVJRD4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsgfQorICAgIGNvbnN0
IFJlZkNvdW50ZWRBcnJheTxTdHJ1Y3R1cmVJRD4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFpbjsgfQogCiAgICAgdm9pZCBkdW1wKFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3Q7CiAKQEAgLTgzLDExICs3NSwxNCBAQCBjbGFzcyBQb2x5UHJvdG9B
Y2Nlc3NDaGFpbiB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFBvbHlQcm90b0FjY2Vzc0NoYWlu
KCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFBvbHlQcm90b0FjY2Vzc0NoYWluKFZlY3RvcjxT
dHJ1Y3R1cmVJRD4mJiBjaGFpbikKKyAgICAgICAgOiBtX2NoYWluKFdURk1vdmUoY2hhaW4pKQor
ICAgIHsKKyAgICB9CiAKICAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGJhc2UuIFdl
IHJlbHkgb24gQWNjZXNzQ2FzZSBwcm92aWRpbmcgaXQgZm9yIHVzLiBUaGF0IHNhaWQsIHRoaXMg
ZGF0YQogICAgIC8vIHN0cnVjdHVyZSBpcyB0aWVkIHRvIHRoZSBiYXNlIHRoYXQgaXQgd2FzIGNy
ZWF0ZWQgd2l0aC4KLSAgICBWZWN0b3I8U3RydWN0dXJlSUQ+IG1fY2hhaW47IAorICAgIFJlZkNv
dW50ZWRBcnJheTxTdHJ1Y3R1cmVJRD4gbV9jaGFpbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDI3
ZGQxMzhlZmI2YTJmYTFjZjdkMjk3MzU1NTU2ZWYzNzZjYjcxNjcuLjU1ZjgzYzA1ODc0M2RiYmQx
NzBlOTc1MzRjMzM0NzEyMmM4Nzk0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMzQ5LDExICszNDksOSBAQCBi
b29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAgICBp
ZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIGlmIChWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KiB3ZWFrUmVmZXJlbmNlcyA9
IG1fd2Vha1JlZmVyZW5jZXMuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8SlND
ZWxsPiYgd2Vha1JlZmVyZW5jZSA6ICp3ZWFrUmVmZXJlbmNlcykgewotICAgICAgICAgICAgaWYg
KCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZlcmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpT
Q2VsbD4mIHdlYWtSZWZlcmVuY2UgOiBtX3dlYWtSZWZlcmVuY2VzKSB7CisgICAgICAgIGlmICgh
dm0uaGVhcC5pc01hcmtlZCh3ZWFrUmVmZXJlbmNlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NDksMTAgKzc0Nyw4IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgCiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01h
cmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNl
cHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBt
X3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0
ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5j
ZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8
VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNl
cykpOwotICAgIH0KKyAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlND
ZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhp
Y0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIs
IGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjA4ODQwZTcxZjc2YTRkNWQ5ZTU3
NzQ1ZWU2NDg2OTBmZjdhZDQzNS4uYmRmNWM3ZjJlN2M2ODkzZjFhOTU5ZjIyZmZmODk1NTg1MGRm
MmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNyArMTg4LDcgQEAg
Y2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIExpc3RUeXBlIG1fbGlzdDsKICAgICBSZWZQ
dHI8SklUU3R1YlJvdXRpbmU+IG1fc3R1YlJvdXRpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gbV93YXRjaHBvaW50czsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4gbV93ZWFrUmVmZXJlbmNlczsK
KyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5j
ZXM7CiB9OwogCiBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRl
eCBhYjQyZDI0YzEyNjBhYTQ4YmUxZTBjMzFlMDNmNmUwOWU2YTRiNDNiLi5lZmM2OWZiZWNiYjRk
ZmM3MmM3MDQ2MGJkMTYzYzRlYzExOWRmZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zMSwxNCArMzEs
MTQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVB
Y2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
IGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3ND
aGFpbikKKyAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgIDogQmFzZSh2bSwg
b3duZXIsIGFjY2Vzc1R5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKQogICAgICwgbV9hZGRpdGlvbmFs
U2V0KGFkZGl0aW9uYWxTZXQpCiB7CiAgICAgbV92aWFQcm94eSA9IHZpYVByb3h5OwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlh
UHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0gTG9hZCB8fCB0eXBlID09IE1p
c3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9PSBSZXBsYWNlKTsKICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBv
d25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
dmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuaAppbmRleCAzY2JiZTcxYjlhYTM1MzM3MDU0ODhlOGJiYmM4NmM4NGJhMWE1YmQ1Li41
MDhiZjkwYjkxZWI3MjMzYTI3YTU1YTFiNTdlZGM4NGJlOWRlZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNl
IHsKICAgICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAotICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7
CisgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25h
bFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxscHRyKTsK
IAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBv
dmVycmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2FzZSA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92ZXJyaWRlOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgUHJveHlhYmxlQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vz
c1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4pOworICAgIFByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKIAogcHJpdmF0ZToK
ICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9hZGRpdGlvbmFsU2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4IDZiMGI4Nzhj
ZTcxMDhlYjA1YTkwMjVhMThmODE1ODE5NDAwZGU0NTMuLmU1ZDEzMmI2Mjg3MjAyZDBkMjU0NjBm
NjliZDU2OGMwYjRhZWIxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTQzLDYgKzQzLDExIEBAIGJvb2wgUHV0QnlJZFN0YXR1
czo6YXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1
cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lk
IFB1dEJ5SWRTdGF0dXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1Rv
Rml0KCk7Cit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTElu
dChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52
bSgpOwpAQCAtMjI5LDYgKzIzNCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKEpT
Qzo6c2xvd1ZlcnNpb24oc3VtbWFyeSkpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBy
ZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAg
ICAgIApAQCAtMzcxLDYgKzM3Nyw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCisg
ICAgcmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpA
QCAtNDM3LDYgKzQ0NCw3IEBAIHZvaWQgUHV0QnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgUHV0QnlJ
ZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBz
aHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgVGFrZXNT
bG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCmluZGV4IDgxMWNjN2Y3MGY5OTUzYmE4ZjI3ZDdjNDYzNTUxZjYzODAzNGJlMTguLjg3OGUy
NTJkYjY5YWM1NzEzZGM4ZThmOGI2NDQwMDBjYWU2MzBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMTM1LDYgKzEzNSw3IEBAIGNs
YXNzIFB1dEJ5SWRTdGF0dXMgZmluYWwgewogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCk7CiAgICAgCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFB1dEJ5SWRWYXJpYW50
Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAg
ICAgVmVjdG9yPFB1dEJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApp
bmRleCBkZTQ4Zjc3MDRlZDg2MDM3Yzg0MzI1MDQyMmZjOWRkNjJiZWQ1ZDk2Li44MzA3YTM0NjFj
OWNlOTU1NDYwMDEyZWY1YzVmMzM3ZTYyYWNmNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtNDEs
NiArNDEsMTEgQEAgYm9vbCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29u
c3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKICAgICByZXR1cm4gYXBwZW5kSUNT
dGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCit2b2lkIFNldFByaXZhdGVC
cmFuZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQo
KTsKK30KKwogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKQEAgLTEx
Myw2ICsxMTgsNyBAQCBTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
Ojpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZQogICAgICAgICAgICAgICAgIHJl
dHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0
dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTk1LDYgKzIwMSw3IEBAIHZvaWQgU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90
aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAgIHNocmlu
a1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0
aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRl
QnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRl
QnJhbmRTdGF0dXMuaAppbmRleCA5YTgzNGY4NWNjMGVjNzY5OWZmNDM5MzFmYTllNmY2MTVjOGYx
ZWU0Li40OGVhNjdlNDQyZmE1ZDFhOTk5ZTY3MWFmZDc2MjlhNjU0ODJmZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1
cy5oCkBAIC04OCw2ICs4OCw3IEBAIGNsYXNzIFNldFByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7
CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwogCiAgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0
IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiM2Y0ZWYzZWQ0NWE5
ODhmMzM3ZDQyNDMyYmFmNjZiMzA2ZjMxNDU1Li4yNDg2OTM3NDcxMTc4YWRlY2Q2ZmI2ZTk2YTdi
OTViMTkyN2I3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VHJpU3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlIHsKICAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CiAgICAgfTsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBT
dHJpbmdPZmZzZXRUYWJsZTsKKyAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNl
dExvY2F0aW9uPjsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlu
bGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRl
ZmF1bHRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA4MTQ4NTE2MDM1ZGZk
YzRjOWZiOWU4M2NhODQ1ZTBlZDNlNzk2MDE0Li44MjZiZDU2OWJiNDM5ZDMzNjFmYWQyMWVhMDQ4
ZTBiZmM4NmFhNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1
dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlID0gZXhlY3V0YWJsZS0+c2NyaXB0TW9kZSgpOwogICAgIEFTU0VSVChpc0Z1bmN0
aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7Ci0gICAgVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFibGUtPmNsYXNzRmllbGRM
b2NhdGlvbnMoKTsKKyAgICBhdXRvKiBjbGFzc0ZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+
Y2xhc3NGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+
IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKICAgICAgICAgdm0sIHNvdXJjZSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhl
Y3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwg
bnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgY2xhc3NGaWVsZExvY2F0
aW9ucyk7CiAKQEAgLTczLDkgKzczLDkgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
LCBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBmdW5jdGlvbktpbmQgPT0g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBz
Y3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRh
YmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0
aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgYXV0byBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7
Ci0gICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50
ID0gZXhlY3V0YWJsZS0+cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOworICAgIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBl
eGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5l
cmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50LCBlY21hTW9kZSk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25N
b2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDM0M2IzMzk3ODk0YmFmN2QyNmFm
YjU0ZGUzMGM2MzVhZDdhNTc5MWMuLmRkMWIzM2NkNzZhYTc2ZjZlODZhYmE3MjMwODVhMmU3NGZj
NTAxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNzcsMTEgKzE3OCwxMSBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB9CiAKLSAgICBQcml2
YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSBjb25zdAor
ICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAg
ICAgcmV0dXJuIFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKLSAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEtPm1fcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CkBA
IC0yMTgsMTMgKzIxOSwxMyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3RpdmU7
CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAgICAgICAgIFJl
ZlB0cjxURFpFbnZpcm9ubWVudExpbms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7Ci0gICAg
ICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25zOworICAgICAg
ICBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsK
ICAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQ7CiAgICAgfTsKIAogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CiAKLSAg
ICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKCkgY29uc3QKKyAg
ICBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAgcmV0dXJu
ICZtX3JhcmVEYXRhLT5tX2NsYXNzRmllbGRMb2NhdGlvbnM7CkBAIC0yMzUsNyArMjM2LDcgQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB7CiAgICAgICAgIGlmIChjbGFzc0ZpZWxkTG9jYXRpb25zLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2NsYXNzRmllbGRMb2Nh
dGlvbnMgPSBXVEZNb3ZlKGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAgICBlbnN1cmVSYXJl
RGF0YSgpLm1fY2xhc3NGaWVsZExvY2F0aW9ucyA9IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3Np
dGlvbj4oV1RGTW92ZShjbGFzc0ZpZWxkTG9jYXRpb25zKSk7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBhMzc4OTg5MjM3Y2Q0YjFm
NjNiYjdkM2Q5NWMwNzY4NDcyZTI1YWJkLi41YWViYmZhZDRlNTkwMjdkZmRiODc4ZWIyMDJlM2Jm
OTkwOTI4NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAtMTUx
LDcgKzE1MSw3IEBAIGNsYXNzIEpJVENvZGUgZmluYWwgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7
CiAgICAgLy8KICAgICAvLyBUaGUga2V5IG1heSBub3QgYWx3YXlzIGJlIGEgdGFyZ2V0IGZvciBP
U1IgRW50cnkgYnV0IHRoZSBsaXN0IGluIHRoZSB2YWx1ZSBpcyBndWFyYW50ZWVkCiAgICAgLy8g
dG8gYmUgdXNhYmxlIGZvciBPU1IgRW50cnkuCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBW
ZWN0b3I8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKKyAgICBIYXNoTWFw
PEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUluZGV4Pj4gdGllclVwSW5M
b29wSGllcmFyY2h5OwogCiAgICAgLy8gTWFwIGVhY2ggYnl0ZWNvZGUgb2YgQ2hlY2tUaWVyVXBB
bmRPU1JFbnRlciB0byBpdHMgc3RyZWFtIGluZGV4LgogICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgdW5zaWduZWQ+IGJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uaAppbmRleCBiZDFkOGEwNzI2NjJjYzM1M2E0NDdjMDViYjZmMWU0MGU5OWRi
Y2IyLi5hYWVhNTg0YjA2MjBjNGEzZTE4NDVlZjFiY2E5NWZhMjMzZjAxM2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFBsYW4gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgIGJvb2wgd2lsbFRyeVRvVGll
clVwKCkgY29uc3QgeyByZXR1cm4gbV93aWxsVHJ5VG9UaWVyVXA7IH0KICAgICB2b2lkIHNldFdp
bGxUcnlUb1RpZXJVcChib29sIHdpbGxUcnlUb1RpZXJVcCkgeyBtX3dpbGxUcnlUb1RpZXJVcCA9
IHdpbGxUcnlUb1RpZXJVcDsgfQogCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8
Qnl0ZWNvZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7IHJldHVybiBtX3RpZXJV
cEluTG9vcEhpZXJhcmNoeTsgfQorICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRl
ZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4g
bV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7IH0KICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4mIHRp
ZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkgeyByZXR1cm4gbV90aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlczsgfQogCiAgICAgZW51bSBTdGFnZSB7IFByZXBhcmluZywgQ29tcGlsaW5nLCBSZWFk
eSwgQ2FuY2VsbGVkIH07CkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgUGxhbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGFuPiB7CiAgICAgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMg
bV9nbG9iYWxQcm9wZXJ0aWVzOwogICAgIFJlY29yZGVkU3RhdHVzZXMgbV9yZWNvcmRlZFN0YXR1
c2VzOwogCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4+
IG1fdGllclVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVm
Q291bnRlZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsKICAg
ICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsKIAog
ICAgIFN0YWdlIG1fc3RhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAppbmRleCBmYTEzZjk1ZTVjZWVk
MzRkNjY0Njg2ZmNmNjMyNWM4NzZiOWMxNTU4Li5iM2EzMDM4MTRiYTk2NTUxY2JhYWZmN2Y1YTIz
MDIyOGM5MTI3NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBj
bGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWVyVXBDYW5kaWRhdGVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQo
ZW50cnkua2V5LCBXVEZNb3ZlKHRpZXJVcENhbmRpZGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fcGxhbi50aWVyVXBJbkxvb3BIaWVyYXJjaHkoKS5hZGQoZW50cnkua2V5LCB0aWVy
VXBDYW5kaWRhdGVzKTsKICAgICAgICAgfQogICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRXaWxs
VHJ5VG9UaWVyVXAodHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAppbmRleCBhMzliMTQzZjc3MzAx
NmEzYjVkYWVjODM1ZjMzMTkzN2VkODNlMTkzLi4xODFiNDliODA2OGI5NjVjYjgzNzk1OGRlMGMx
NmExMGJhMTI3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9j
a0RpcmVjdG9yeUJpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeUJpdHMuaApAQCAtMjIyLDcgKzIyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0
cyB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOwor
ICAgIFZlY3RvcjxTZWdtZW50LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDI+IG1fc2VnbWVudHM7CiAg
ICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCmluZGV4IGE5MWU5ODhiMTg5NWI1ZmU0
ZjgxZGE3Nzc5MmIxM2I1YjQ5MzIzM2UuLjI3YzRlNmI4ZTBhYjA0ZGRlNmYyZmVhMWNlMDdlYjNj
NTNiMzhmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJS
b3V0aW5lU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91
dGluZVNldC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEpJVFN0dWJSb3V0aW5lU2V0Ojpk
ZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKQogICAgICAgICB9CiAgICAgICAg
IHJvdXRpbmUucm91dGluZS0+ZGVsZXRlRnJvbUdDKCk7CiAgICAgfQotICAgIG1fcm91dGluZXMu
c2hyaW5rKGRzdEluZGV4KTsKKyAgICBtX3JvdXRpbmVzLnNocmlua0NhcGFjaXR5KGRzdEluZGV4
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAppbmRleCA3MjAxZWUxY2YzMWU1MjZj
N2M3NDUwMDVmM2VhZTViNGUyYWM5OTlhLi5hNmRlMmE0Yzc2OGJlMTE4OTBkNjcyOTRkNGQ3MzFl
YmM3NzJjZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFt
ZVNodWZmbGVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlRGF0YS5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBD
YWxsRnJhbWVTaHVmZmxlRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCisgICAgeworICAgICAgICBhcmdzLnNocmlua1Rv
Rml0KCk7CisgICAgfQorCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnk+IGFyZ3M7CiAgICAgdW5z
aWduZWQgbnVtTG9jYWxzIHsgVUlOVF9NQVggfTsKICAgICB1bnNpZ25lZCBudW1QYXNzZWRBcmdz
IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5oCmluZGV4IDQ2YWEwMzlmYzc0ZmUwYTZlNjRjM2VjMTRlZjk2MTNlN2U4
YjUzYjkuLjU4ZDg2NGQ3ODhiNzIwYWIyMDUzYWJlOWIyODc4YWE5MThjOWUzMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTk2LDcgKzk3LDcgQEAgY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1
YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0
c0ludGVybmFsKFNsb3RWaXNpdG9yJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFdy
aXRlQmFycmllcjxKU0NlbGw+PiBtX2NlbGxzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4gbV9jZWxsczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5r
SW5mb3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZmE3YjdlYjZlZmFlMGVjYzJiNzJkNTllNTVm
NGUxZjFkNmNiZDM5Yy4uNmMxM2YxMjYzMGExYjU5NjI5ZGQ5OTJhNDlmM2M3YWNiOGRkYjM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lIGZpbmFsIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAgICAgdm9p
ZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoQWJzdHJhY3RTbG90VmlzaXRvciYpIGZpbmFs
OwogICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgZmlu
YWw7CiAKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Cisg
ICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX3ZhcmlhbnRzOwogICAg
IFVuaXF1ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RDb3VudHM7CiAgICAgQmFnPFBvbHltb3JwaGlj
Q2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IGZmNTlhMGZiNWY4Y2NiYWFmNWQyZDNhMDlhNGUxMjAwMjEyMGIyMTYuLjhhOTZh
YmU4NWVkZWZiYTE1NTEwOTI3NDY3ZDZhMzk5OWUxMzU0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47Cisg
ICAgICAgICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluOwogCiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmlzVW5zZXQo
KSA/IGludmFsaWRPZmZzZXQgOiBzbG90LmNhY2hlZE9mZnNldCgpOwogCkBAIC0zMzMsNyArMzMz
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vz
c0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWlu
Ojp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHByb3RvdHlwZUFjY2Vz
c0NoYWluLT5zbG90QmFzZVN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUudWlkKCkpID09IG9mZnNldCk7CkBAIC02OTQsNyArNjk0LDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0
KCkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAg
ICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAg
ICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gUHV0S2luZDo6Tm90RGlyZWN0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5n
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQ
b2x5UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWlu
ID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0g
UG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBu
dWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hh
aW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03MjYsNyArNzI2LDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sKICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9t
KCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZUN1c3RvbSgpKSB7CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgY29uZGl0aW9uU2V0OwotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKIAog
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZG8gdGhpcyBldmVuIGlmIHdlJ3JlIGEgc2Vs
ZiBjdXN0b20sIHNpbmNlIHdlIG11c3QgZGlzYWxsb3cgZGljdGlvbmFyaWVzCiAgICAgICAgICAg
ICAgICAgLy8gYmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGluZm9ybWVkIGlmIHRoZSBjdXN0b20gZ29l
cyBhd2F5IHNpbmNlIHdlIGNhY2hlIHRoZSBjb25zdGFudApAQCAtNzM3LDcgKzczNyw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrCiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkg
IT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNl
c1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hh
aW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZUNlbGws
IHNsb3QuYmFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0No
YWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VD
ZWxsLCBzbG90LmJhc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlw
ZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzU1LDcgKzc1NSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpOwogICAgICAgICAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluOworICAgICAgICAgICAgICAgIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90
eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAgICAgICAgIGlmIChzbG90LmJhc2UoKSAh
PSBiYXNlVmFsdWUpIHsKQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
awogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAogICAg
ICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vz
c0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBAIC05MjAsNyArOTIwLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAKICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nl
c3NDaGFpbjsKKyAgICAgICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVB
Y2Nlc3NDaGFpbjsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9u
U2V0OwogICAgICAgICBpZiAod2FzRm91bmQpIHsKICAgICAgICAgICAgIElubGluZUNhY2hlQWN0
aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOwpAQCAtOTUxLDcgKzk1MSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAogICAgICAgICAgICAgICAgIGlmIChjYWNo
ZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVB
Y2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBi
YXNlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQ
b2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgc2xvdCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHByb3RvdHlwZUFj
Y2Vzc0NoYWluLT5zbG90QmFzZVN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwpAQCAtOTcwLDcgKzk3MCw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAogICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVz
LT51c2VzUG9seVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4g
PSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgc2xvdCk7
CisgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgc2xvdCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM0MDM5YTVmOGIwYmNiMjZmYjYwNTUzM2Y3ZjgyNWQ4
ZTlkYjU5YjkuLmU5OTM5NGRjZjhkODQ0MGM1NWZiYjZmMzY2NzJmYzZlMmIwN2U5ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2
b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KLUV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+
OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250
ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKQorRXhw
ZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmlu
Zz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVl
TmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUmVmQ291bnRlZEFycmF5
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCiB7CiAgICAgQVNUQnVpbGRlciBj
b250ZXh0KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgY29uc3RfY2FzdDxT
b3VyY2VDb2RlKj4obV9zb3VyY2UpKTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
c291cmNlUGFyc2VNb2RlKCk7CkBAIC0zMTgwLDcgKzMxODAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q2xhc3MoVAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mIGNsYXNzRmllbGRMb2NhdGlvbnMpCit0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYgY29udGV4dCwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPiYgY2xh
c3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVu
dHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CiAgICAgY3VycmVudFNjb3BlKCkt
PnNldElzQ2xhc3NTY29wZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5k
ZXggMzk1MWEwMWU4OGY4ZTZhNWViOTE3OWUyMzk4Y2YyYzk0YTUxMWUzMi4uNzY4ZDczZGI3YmIz
MDEzMjEyM2RiNjg2MWU0NDdhOTMwZWY3MDY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05OTEsNyArOTkyLDcgQEAgY2xhc3MgUGFyc2Vy
IHsKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9
IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJF
cnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBj
b25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFJlZkNvdW50ZWRB
cnJheTxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVm
b3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24o
KTsgfQpAQCAtMTUxMSw3ICsxNTEyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzOwogICAgICAgICBpbnQgbnVtQ29uc3RhbnRzOwogICAgIH07Ci0gICAg
RXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiwgY29u
c3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOworICAg
IEV4cGVjdGVkPFBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0
aW9uPiosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0
LgogICAgIGJvb2wgaXNGdW5jdGlvbk1ldGFkYXRhTm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtMTc0Miw3ICsxNzQzLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU2luZ2xlRnVuY3Rpb24oVHJlZUJ1aWxkZXImLCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwot
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNl
Q2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25zdCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVt
ZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4m
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VT
dGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3Rp
dmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXIm
LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJh
bExlbmd0aCA9IG51bGxwdHIpOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVk
LCBOb3RFeHBvcnRlZCB9OwpAQCAtMjEyNyw3ICsyMTI4LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2Rl
Pgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQ
YXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdD
b250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0Zp
ZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5h
bWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNU
ZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwog
ICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMjI4LDcgKzIyMjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQ
YXJzZURhdGEgPSBudWxscHRyLAogICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwKLSAgICBjb25zdCBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zID0gbnVsbHB0ciwKKyAgICBjb25zdCBSZWZD
b3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zID0gbnVsbHB0
ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKQogewogICAgIEFT
U0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA3YmEyNzFkOGM2YjNm
MTkwNjYyYTAxYmVmOGUzMWQyMTFjOGNjMmVhLi41NmQxYWFkNjdlOGE2MDQ3NzM3MTdmODY5YjI1
MjY0Y2JmZmZmMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaD4KIApAQCAtNjY5LDEwICs2NzAsMTAgQEAg
Y2xhc3MgQ2FjaGVkUGFpciA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8c3RkOjpwYWlyPFNvdXJjZVR5
cGU8Rmlyc3Q+LCBTb3VyY2VUeXBlPFMKICAgICBTZWNvbmQgbV9zZWNvbmQ7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVm
YXVsdEhhc2g8U291cmNlVHlwZTxLZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRy
YWl0czxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJh
aXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4KLWNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFy
aWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFs
dWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4+IHsKK3RlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0
SGFzaDxTb3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRz
PFNvdXJjZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8
U291cmNlVHlwZTxWYWx1ZT4+LCB0eXBlbmFtZSBUYWJsZVRyYWl0cyA9IFdURjo6SGFzaFRhYmxl
VHJhaXRzPgorY2xhc3MgQ2FjaGVkSGFzaE1hcCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVj
dDxIYXNoTWFwPFNvdXJjZVR5cGU8S2V5PiwgU291cmNlVHlwZTxWYWx1ZT4sIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz4+IHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8SywgViwg
SGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OworICAgIHVzaW5nIE1hcCA9
IEhhc2hNYXA8SywgViwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIFRh
YmxlVHJhaXRzPjsKIAogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+PiYgbWFwKQpAQCAt
Njk2LDYgKzY5Nyw5IEBAIGNsYXNzIENhY2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5n
dGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VUeXBlPEtleT4sIFNvdXJjCiAgICAgQ2FjaGVkVmVjdG9y
PENhY2hlZFBhaXI8S2V5LCBWYWx1ZT4+IG1fZW50cmllczsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hBcmcgPSBEZWZhdWx0SGFzaDxT
b3VyY2VUeXBlPEtleT4+LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJj
ZVR5cGU8S2V5Pj4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNl
VHlwZTxWYWx1ZT4+PgordXNpbmcgQ2FjaGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwID0gQ2FjaGVkSGFzaE1hcDxLZXksIFZhbHVlLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZywgV1RGOjpNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hUYWJsZVRyYWl0cz47CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWNoZWRV
bmlxdWVkU3RyaW5nSW1wbEJhc2UgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VD4gewog
cHVibGljOgpAQCAtOTEwLDcgKzkxNCw3IEBAIGNsYXNzIENhY2hlZFN0cmluZ0p1bXBUYWJsZSA6
IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IHsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkU3RyaW5nSW1w
bD4sIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjogT2Zmc2V0TG9jYXRpb24+IG1fb2Zmc2V0VGFi
bGU7CisgICAgQ2FjaGVkTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPENh
Y2hlZFJlZlB0cjxDYWNoZWRTdHJpbmdJbXBsPiwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9m
ZnNldExvY2F0aW9uPiBtX29mZnNldFRhYmxlOwogfTsKIAogY2xhc3MgQ2FjaGVkQml0VmVjdG9y
IDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEJpdFZlY3Rvcj4gewpAQCAtMTc3Niw2ICsx
NzgwLDcgQEAgY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGEgOiBwdWJsaWMg
Q2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGUKICAgICB7CiAgICAgICAgIG1fY2xhc3NT
b3VyY2UuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVu
dFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9jbGFzc0ZpZWxkTG9jYXRpb25zLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBtX3Bh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFy
ZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgfQogCkBAIC0xNzg0LDYgKzE3ODksNyBA
QCBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZQogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpSYXJlRGF0YSB7IH07CiAgICAgICAgIG1fY2xhc3NTb3VyY2UuZGVjb2RlKGRlY29kZXIsIHJh
cmVEYXRhLT5tX2NsYXNzU291cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwor
ICAgICAgICBtX2NsYXNzRmllbGRMb2NhdGlvbnMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5t
X2NsYXNzRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpOwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQpAQCAtMTc5MSw2ICsxNzk3
LDcgQEAgY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2Fj
aGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGUKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNl
Q29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNzU291cmNlOwogICAgIENhY2hlZFJlZlB0cjxDYWNo
ZWRURFpFbnZpcm9ubWVudExpbms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2Fj
aGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBtX2NsYXNzRmllbGRMb2NhdGlvbnM7CiAgICAgQ2Fj
aGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMmMxNDlmYTcyNjIw
YmFjYTNkYWEyMjI4MmQ4N2JlNzllNWU4OTA1OS4uOWYzMjE5MzQ1NjgwOTVkMzlkMTlkNzlkNzA1
MjA2YzRmOTUyYzlhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTEy
Nyw2ICsxMTI3LDcgQEAgdm9pZCBWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGls
KENhbGxGcmFtZSogdGFyZ2V0KQogICAgIC8vIFdlIGhhdmUgdG8gd29ycnkgYWJvdXQgbWlncmF0
aW5nIGZyb20gYW5vdGhlciB0aHJlYWQgc2luY2UgdGhlcmUgbWF5IGJlIG5vIGNoZWNrcG9pbnRz
IGluIG91ciB0aHJlYWQgYnV0IG9uZSBpbiB0aGUgb3RoZXIgdGhyZWFkcy4KICAgICB3aGlsZSAo
bV9jaGVja3BvaW50U2lkZVN0YXRlLnNpemUoKSAmJiBib3VuZHMuY29udGFpbnMobV9jaGVja3Bv
aW50U2lkZVN0YXRlLmxhc3QoKS0+YXNzb2NpYXRlZENhbGxGcmFtZSkpCiAgICAgICAgIG1fY2hl
Y2twb2ludFNpZGVTdGF0ZS50YWtlTGFzdCgpOworICAgIG1fY2hlY2twb2ludFNpZGVTdGF0ZS5z
aHJpbmtUb0ZpdCgpOwogfQogCiB2b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKaW5kZXggNjgwODdlNTUwZWI2MDc4NWYxNDIyODBjZGQ0MjJhNWIzZWZkMDczNi4uODcw
MzVhMjJiMWY1MGU0OWM1YTU0NjhhMWM1YTkzMzkxMzg2YzQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBA
IC04NCw4ICs4NCw4IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVu
SW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jb2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fbW9kdWxlUmVjb3JkKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9y
eSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCku
bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCk7ICsraSkKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZXNbaV0pOworICAgIGZvciAoYXV0byYg
dGFibGUgOiB0aGlzT2JqZWN0LT5tX3RhYmxlcykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGFi
bGUpOwogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1f
aW5zdGFuY2UtPmV4dHJhTWVtb3J5QWxsb2NhdGVkKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyArK2kp
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmltcG9ydEZ1
bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGkpKTsgLy8gVGhpcyBhbHNvIGtlZXBzIHRo
ZSBmdW5jdGlvbnMnIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBhbGl2ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXgg
Y2JjZWI1MDAxNzMzY2EzMzBkZDgyZjhhYzViN2M5NTdlNTZjMzVlNi4uZDQ2MmU3ZDk5YTVlYTM3
NmRhYjBkMzE2ZWQ4ZmRjZWVmZGNiYzNlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJXYXNtQ3JlYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiV2FzbUluc3RhbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExNSw3ICsxMTYsNyBAQCBjbGFzcyBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgV3JpdGVC
YXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFdyaXRlQmFy
cmllcjxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CiAgICAgV3JpdGVC
YXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVtb3J5OwotICAgIFZlY3RvcjxXcml0ZUJh
cnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CisgICAgUmVmQ291bnRlZEFycmF5
PFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+PiBtX3RhYmxlczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCA1NWNhOTgxMzEzOGIy
NjIwMTAzNDk5MDdjMjU2OWZlYzJkYjE0YTFjLi5kY2EzODM0NDNmODFiMDk3NGZjNTlkNjQ1OTA0
MDI2NmY4MzJkYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXku
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNTAsNiArNTAsMTEg
QEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBlbnVtIENvbW1vbkNvcHlDb25zdHJ1Y3Rv
clRhZyB7IENvbW1vbkNvcHlDb25zdHJ1Y3RvciB9OwogCiBwdWJsaWM6CisgICAgdXNpbmcgaXRl
cmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQqOworICAgIHVz
aW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+Owor
ICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8
Y29uc3RfaXRlcmF0b3I+OworCiAgICAgUmVmQ291bnRlZEFycmF5KCkgPSBkZWZhdWx0OwogICAg
IAogICAgIFJlZkNvdW50ZWRBcnJheShjb25zdCBSZWZDb3VudGVkQXJyYXkmIG90aGVyKQpAQCAt
MTY5LDggKzE3NCw4IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgc2l6ZV90IGJ5dGVT
aXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFQpOyB9CiAgICAgCiAgICAgVCog
ZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fZGF0YSk7IH0KLSAgICBUKiBiZWdp
bigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQqIGVuZCgpCisgICAgaXRlcmF0b3IgYmVnaW4o
KSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKQogICAgIHsKICAgICAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE3OSw4ICsxODQsMTMgQEAg
Y2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9CiAgICAgCiAgICAgY29uc3QgVCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmRhdGEo
KTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZD
b3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQotICAgIGNvbnN0IFQqIGVuZCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9Cisg
ICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNv
dW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7
IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVy
YXRvcihiZWdpbigpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVn
aW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Cisg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfcmV2
ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KICAgICAKICAgICBUJiBhdChzaXplX3QgaSkKICAgICB7
Cg==
</data>
<flag name="review"
          id="444963"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="445102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425122</attachid>
            <date>2021-04-03 19:57:22 -0700</date>
            <delta_ts>2021-04-03 21:50:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403195721.patch</filename>
            <type>text/plain</type>
            <size>79727</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi45NmU0MGJhMGNiZDU3ZmRm
Y2U1OTRlNTVjYWFjZjUxZTMxN2I4MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3JzIGluIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkIFhYWFN0YXR1
czo6c2hyaW5rVG9GaXQgdG8gc2hyaW5rIHVuZGVybHlpbmcgZHluYW1pYyBWZWN0b3JzLgorICAg
ICAgICAyLiBSZXBsYWNlIHRpZXJVcEluTG9vcEhpZXJhcmNoeSdzIFZlY3RvciB3aXRoIFJlZkNv
dW50ZWRBcnJheSBzaW5jZSBpdCBpcyBjb25zdHJ1Y3RlZC1vbmNlLWxvb2t1cC1vbmx5IGRhdGEu
CisgICAgICAgIDMuIFVzZSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQg
Zm9yIFN0cmluZ1RhYmxlcyBzaW5jZSB0aGlzIGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9u
bHkgZGF0YS4gV2UgYWxzbyBhZGQKKyAgICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0IHN1cHBvcnQgZm9yIENhY2hlZFR5cGVzLgorICAgICAgICA0LiBVc2Ug
cmVzaXplVG9GaXQgZm9yIFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgYW5kIFN3aXRjaEp1bXBUYWJs
ZXMuCisgICAgICAgIDUuIEpJVFN0dWJSb3V0aW5lU2V0J3MgVmVjdG9yIHNob3VsZCBiZSBzaHJ1
bmsuCisgICAgICAgIDYuIEJsb2NrRGlyZWN0b3J5Qml0cydzIFZlY3RvcidzIGluaXRpYWwgc2l6
ZSBzaG91bGQgYmUgc21hbGwuCisgICAgICAgIDcuIE1ha2UgUG9seVByb3RvQWNjZXNzQ2hhaW4g
UmVmQ291bnRlZCwgYW5kIHVzZSBSZWZDb3VudGVkQXJyYXkgZm9yIGl0cyBWZWN0b3I8U3RydWN0
dXJlSUQ+LiBBbmQgcmVtb3ZlIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjbG9uZS4KKyAgICAgICAg
ICAgSnVzdCBoYXZpbmcgUmVmIGlzIGVub3VnaCBzaW5jZSB0aGlzIGlzIGltbXV0YWJsZSBkYXRh
LgorICAgICAgICA4LiBVc2UgUmVmQ291bnRlZEFycmF5IGZvciBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSdzIG1fY2xhc3NGaWVsZExvY2F0aW9ucy4KKyAgICAgICAgOS4gVXNlIFJlZkNvdW50
ZWRBcnJheSBmb3IgSlNXZWJBc3NlbWJseUluc3RhbmNlLgorCisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6SW5CeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5z
dGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0YW5jZU9mU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlBvbHlQcm90
b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2hhaW4gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6b3BlcmF0b3Ih
PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBvbHlQcm90b0FjY2Vzc0NoYWluOjpm
b3JFYWNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hh
aW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
Ojp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
eHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlBy
b3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChK
U0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRp
bmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0
cnVjdGlvbiBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4
OGI3ZDdmZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNjNiMmIyYTk4NTAxM2FhM2Q5NjU2ZjJj
OGQxODA4MzgxODcxNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNC0wMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21l
IG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgcmJlZ2luIGFuZCByZW5kIHRvIG1ha2UgUmVmQ291bnRlZEFycmF5IHVz
YWJsZSBmb3IgVmVjdG9yIGNsaWVudHMgd2hvIHVzZSB0aGVzZSBmZWF0dXJlcy4KKworICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5
OjpiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpy
YmVnaW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6cmVuZCBjb25zdCk6CisKIDIwMjEtMDQtMDIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFByZWZlclBhZ2VSZW5kZXJp
bmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjAyYTJkNWYzMmM5YzIyMGQwZTkw
YmVkN2U5ODJmMWI0OTM2YWMzMi4uYmVjNTk2NTUzODM2NDM4NTBmZGE4ODBlZmJkNDY3YWQ4NzVh
ZjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwog
Ci1BY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCitBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICA6IG1fdHlwZSh0eXBlKQog
ICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNzQ2FzZTo6
QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVh
YmxlSWRlbnRpZmkKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1ZhbGlkKCkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIEluSGl0OgpAQCAtMTEwLDcgKzExMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFu
c2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKLSAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0g
bmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA2MDI1N2IxYjViY2E5NWNkM2NjNjNiM2YzYTA5ODVj
NzM3YmE3ZGU2Li5iZGQxYjIzN2Q2MThhMmNjZTgyNzIwZjcyY2E3NTM3ZGUzZmE3MDY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTE0OCwxMCAr
MTQ4LDEwIEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAot
ICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOworICAgICAgICBTdHJ1Y3R1cmUqID0gbnVs
bHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7
CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRp
b24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKQEAgLTI1NSwyMCArMjU1LDkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZW5k
aWYKICAgICAKIHByb3RlY3RlZDoKLSAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1
cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4mJik7CiAgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsK
LSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQotICAgICAgICA6IG1fdHlw
ZShvdGhlci5tX3R5cGUpCi0gICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQotICAgICAg
ICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKLSAgICAgICAgLCBtX29mZnNldChvdGhl
ci5tX29mZnNldCkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKLSAg
ICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkKLSAgICAgICAgLCBt
X2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgaWYgKG90aGVy
Lm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCi0gICAgICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0No
YWluID0gb3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2xvbmUoKTsKLSAgICB9CisgICAg
QWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0OwogCiAgICAgQWNj
ZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0ZTsKICAgICB2b2lk
IHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0zMjEsNyArMzEwLDcg
QEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBt
X2NvbmRpdGlvblNldDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4gbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbjsKKyAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IG1fcG9seVByb3RvQWNjZXNzQ2hhaW47CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwCmluZGV4IDY0ZTJhMDI4NmU4NTdhMWM2MzQ0NTcwYTUzZGNkYTc4ZmRkYmEz
MjMuLjM2YzM0MDlkYmI3ZjQ3ZmNkZjJhNGRjOGViNTMyNmRmN2JkZThiNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yODEsNiAr
MjgxLDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiB2b2lkIENhbGxM
aW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYg
c2h1ZmZsZURhdGEpCiB7CiAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxs
RnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+
c2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cAppbmRleCBhZTdhNGY3Yzc0Mjc5MzY2NGU2OTdhNWY1ZGNjNDFlNGEwMzgyY2MxLi5kNTRmYTIz
YmVjM2QzNTBjNmM4ZWMwMjFlODQ3NmNhNTQ5ODQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAK
QEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZh
cmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpCiAgICAgcmV0dXJuIGFw
cGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hy
aW5rVG9GaXQoKTsKK30KKwogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElD
U3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlk
RXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1f
bG9jayk7CkBAIC0xMDksNiArMTE0LDcgQEAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2kKICAgICAg
ICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lv
bihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTkxLDYgKzE5
Nyw3IEBAIHZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNvbnN0IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChv
dGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAg
ICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNl
IExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IGU2N2I2MzgzODg0OWY1
MjNlZmI2OTVlZjFlZGIwOTg3YjYyZjU4MWYuLmE5ODhmMmFmOGIxYmI1MmM1YTQzYWM4NTFmZmEy
MjY4ZmRmMzQwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7CiAK
ICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7
CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggYTIzNDE5OGE5YWU1NDBjZjMyNTY0YmQ1N2FmNDBlMDgyM2VjMDQwZC4uMjhjYTllYzVm
ZmRiMjVlMjFlZDY4ZTEzYWE5NmMyOTk1N2VjNDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgewotICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQp
OworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnJlc2l6
ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6aXRlcmF0b3IgcHRyID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5iZWdpbigpOwogICAgICAgICAgICAgICAgIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5s
aW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQo
KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZlN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
aSk7CiAgICAgICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAppbmRleCA5MjMxNDdkNjMzZTdmMzNmZDA1NDRj
NjQ1NGM2Y2UyMTRkYTBjMzExLi4wMTkwOWExZTEzMGJhYjAyNDQ5MDk1NmYxZGMzOWQ1ZDk0Zjkx
MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIGJvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZh
cmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVu
ZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBEZWxldGVC
eVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsK
K30KKwogRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMjksNiArMTM0LDcgQEAgRGVs
ZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0
LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yMTQs
NiArMjIwLDcgQEAgdm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0
dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAg
IHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNT
bG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3Rh
dHVzLmgKaW5kZXggYjA3NmJmMjY5ZWM3ODBiZTg2ZWQ5M2U0ZTEzNjc2OWNmYWY3YzMxYi4uNWJh
ODAzYWE5NzdmZjNkYzViZWU1ODdiNDc3MWIwMDQxNmJiZDZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTg2LDYgKzg2LDcgQEAg
Y2xhc3MgRGVsZXRlQnlTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAog
ICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRl
eCBkOTU3MjFlZWIwMmY0ODM1MzQxOTNiZmI3ZTdlZGM1MGEwYTgzMzY3Li5iZDc0ZmI2NGYzNDEx
NTE3MGEwMWMxNjE4Yjg1ZTQ3ZTA0NzZlYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIGJvb2wgR2V0QnlT
dGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAg
cmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAor
dm9pZCBHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5r
VG9GaXQoKTsKK30KKwogR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7
CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTMzOSw2ICszNDQsNyBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCiAgICAgICAgICAgICB9IH0KICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
cmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
ICAgICAKQEAgLTQzMyw2ICs0MzksNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0
ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAg
ICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAg
IAorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKQEAgLTQ5NCw2ICs1MDEsNyBAQCB2b2lkIEdldEJ5U3RhdHVzOjpt
ZXJnZShjb25zdCBHZXRCeVN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZh
cmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7
CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKaW5kZXggZDNiMWM2MjZkY2FkMzc5YTlmZDhiYjA0NDRj
YTFmZDdjYjhiZmYyNi4uMjQzNzMwZmRlMzNhZTc1ZWYxZjYzNmM0MTdmODhiOGU5OTZmNTJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKQEAgLTEy
Myw2ICsxMjMsNyBAQCBjbGFzcyBHZXRCeVN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KIAogICAgIGJvb2wg
YXBwZW5kVmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggZThiNGNhNWU0YmJlNWY3MTAzODI3NTAxNmI5YWVjMmM1MTlkMGI4OC4uMjAy
ZWZjNTQ2NjYxOTg1NGRhYWE2MjBjNjk3ZmYxY2ZmN2NmMzgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZUludGVy
bmFsIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKLUdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWlu
KQorR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xv
dEJhc2UsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCiB7CiAgICAgbV9jdXN0b21TbG90QmFzZS5zZXRNYXlC
ZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CkBAIC01MCw3ICs1MCw3IEBAIEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAotICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0
ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVB
bm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBw
cm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEdl
dHRlcjoKQEAgLTY4LDcgKzY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAotICAgIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHksIAorICAg
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94
eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwg
SlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8
fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjAzZmJmNjI0NTQ2MDcwNzc0MWUyNTgwZjQ0Zjc1NDdi
ZDgyZjg1OS4uODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVy
LCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21B
Y2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLAotICAgICAgICBKU09iamVjdCogY3VzdG9tU2xv
dEJhc2UsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNl
LCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCi0gICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiwgYm9v
bCB2aWFQcm94eSA9IGZhbHNlLAorICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZh
bHNlLAogICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0
dGVyID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAg
ICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEdldHRlclNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBw
dWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21BY2Nlc3Nv
cjsgfQogCiBwcml2YXRlOgotICAgIEdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwq
LCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0
ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEdldHRlclNldHRlckFj
Y2Vzc0Nhc2UoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVj
dCogY3VzdG9tU2xvdEJhc2UsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKICAg
ICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2UmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApp
bmRleCA5NTc4MzAxODZjOWVlOWMyNDExOWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFi
MmFlYzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMxM2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJ
bkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkK
ICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwog
fQogCit2b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMu
c2hyaW5rVG9GaXQoKTsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAm
IG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCBFeGl0RmxhZyBkaWRFeGl0KQogewpAQCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNv
bnN0IENvbmN1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsy
MzksNyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhl
cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IFRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
U3RhdHVzLmgKaW5kZXggMGY0N2ZkZjdjYjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4u
N2YxNWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBA
IGNsYXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwor
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0
aW9uIH07CiAgICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5k
ZXggY2Y4NThmZDM5NDY4MGE1ZWVhOTAwOGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3
NjY5Mzc4MzEzMmQ5OThmZDhlNjQxZjVjZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAg
dm9pZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJp
YW50JiB2YXJpYW50KQogICAgIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJp
YW50KTsKIH0KIAordm9pZCBJbnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAg
bV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNl
T2ZTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVz
TWFwJiBpbmZvTWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsx
MDEsNyBAQCBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUo
KSA9PSBBY2Nlc3NDYXNlOjpJbnN0YW5jZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3Vs
dC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dGFuY2VPZlN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNl
T2ZTdGF0dXMuaAppbmRleCA4NWM0NWNjOGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIy
Li5iYTk5YzY3OThhNjVmYzFhZTBkM2YyNjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2
ICsxMDYsNyBAQCBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5z
dGFuY2VPZlZhcmlhbnQsIDI+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggZjhkY2U3NTcxMzdiYzc5N2ZkODUwY2MyNjE3Mjc0NTc2ZGU4ODYwOC4uNjMwMWRjMjMzNjkz
M2Q2NzZjM2JlOWU5MGM2MDE4OWExMzE3MzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApA
QCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgOiBC
YXNlKHZtLCBvd25lciwgSW50cmluc2ljR2V0dGVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkKIHsKICAg
ICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1bmN0aW9uKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiog
aW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9u
U2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNG
dW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5oCmluZGV4IGQ3YWVkN2E1MzJjMTMwOGNlZDY1NWUwZGZlZTI1ZjM3M2Q2OGE2MDUuLjYy
ODcwMDQxNTg3MzFkNWI4ZmViNTA2MzUzZGU1NTliNjQ0NzY0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UuaApAQCAtNDIsMTQgKzQyLDE0IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Ug
ZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJp
bnNpY0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmlu
c2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBK
U0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2UoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9u
KiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2ludHJpbnNpY0Z1bmN0aW9uOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRleCBjMTU5YWMzMTdh
OTc4NDZhYThkZDY2MWQ2ODk3YzA1YTU1NTlhZTliLi41ZmI4NGExZTU0ZWRlYmYwYmFiNjE4ZmY3
YjgyMzlmYmE5YjMyZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JvYmlu
SG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlIHsKLSAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxl
OworICAgICAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPjsK
ICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aURlZmF1bHQ7IC8v
IEZJWE1FOiBpdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFp
bi5jcHAKaW5kZXggYTJlMDE3Y2U1MzhjZDk5NGRiNTNjMDczYjNjYmZlMzE3ZDY2YjM0Mi4uZTJi
N2I2NjI4YWMwZmY1ZTQwNWU4OGIwNDY0M2E5M2FkNjFmZDZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCkBA
IC0zMCwyMSArMzAsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCkKK1JlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46
OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gc2xvdC5p
c1Vuc2V0KCkgPyBudWxscHRyIDogc2xvdC5zbG90QmFzZSgpOwotICAgIHJldHVybiBjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBiYXNlLCB0YXJnZXQpOworICAgIHJldHVybiB0cnlDcmVhdGUoZ2xvYmFs
T2JqZWN0LCBiYXNlLCB0YXJnZXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KQorUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKIHsK
ICAgICBKU0NlbGwqIGN1cnJlbnQgPSBiYXNlOwogICAgIFZNJiB2bSA9IGJhc2UtPnZtKCk7CiAK
ICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+IHJlc3VsdChuZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSk7Ci0KKyAgICBW
ZWN0b3I8U3RydWN0dXJlSUQ+IGNoYWluOwogICAgIGZvciAodW5zaWduZWQgaXRlcmF0aW9uTnVt
YmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1iZXIpIHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pOwogCkBAIC02MCw3ICs1OSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46
OmNyZWF0ZShKU0dsb2JhbE9iamVjCiAgICAgICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBkb24n
dCBpbmNsdWRlIHRoZSBiYXNlIGluIHRoZSBjaGFpbi4gV2UgbGV0CiAgICAgICAgIC8vIEFjY2Vz
c0Nhc2UgcHJvdmlkZSB0aGUgYmFzZSB0byB1cyBhcyBuZWVkZWQuCiAgICAgICAgIGlmIChpdGVy
YXRpb25OdW1iZXIpCi0gICAgICAgICAgICByZXN1bHQtPm1fY2hhaW4uYXBwZW5kKHN0cnVjdHVy
ZS0+aWQoKSk7CisgICAgICAgICAgICBjaGFpbi5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSBiYXNlKTsK
IApAQCAtNzgsOCArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplYwogICAgIGlmICghZm91
bmQgJiYgISF0YXJnZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0LT5t
X2NoYWluLnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKGNoYWluKSkpOwogfQogCiBi
b29sIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFZN
JiB2bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggMGFiMGUxM2YxZjIyZDA1NTk1MWZiNzk5OTdkNDhj
ZjAxNzY3ODdhZi4uMDliZmMwYjg2YzU4NzkxYWI3ODlmNjY0NTM0OGIzMWEwYzA3MzhmNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0No
YWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vz
c0NoYWluLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsMjIgKzM4LDEz
IEBAIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwogY2xhc3MgU3RydWN0dXJl
OwogCi1jbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0KK2NsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIGZpbmFsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB7CiBwdWJsaWM6Ci0gICAgUG9s
eVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hhaW4mKSA9IGRlZmF1bHQ7Ci0KICAg
ICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBi
YXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiB0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHRy
eUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25lKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlQcm90b0FjY2Vzc0NoYWluPigqdGhp
cyk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZUlEPiYgY2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX2NoYWluOyB9CisgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PFN0cnVjdHVy
ZUlEPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CiAKICAgICB2b2lkIGR1bXAo
U3RydWN0dXJlKiBiYXNlU3RydWN0dXJlLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIApAQCAt
ODMsMTEgKzc1LDE0IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSA9IGRlZmF1bHQ7CisgICAgZXhwbGlj
aXQgUG9seVByb3RvQWNjZXNzQ2hhaW4oVmVjdG9yPFN0cnVjdHVyZUlEPiYmIGNoYWluKQorICAg
ICAgICA6IG1fY2hhaW4oV1RGTW92ZShjaGFpbikpCisgICAgeworICAgIH0KIAogICAgIC8vIFRo
aXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYmFzZS4gV2UgcmVseSBvbiBBY2Nlc3NDYXNlIHByb3Zp
ZGluZyBpdCBmb3IgdXMuIFRoYXQgc2FpZCwgdGhpcyBkYXRhCiAgICAgLy8gc3RydWN0dXJlIGlz
IHRpZWQgdG8gdGhlIGJhc2UgdGhhdCBpdCB3YXMgY3JlYXRlZCB3aXRoLgotICAgIFZlY3RvcjxT
dHJ1Y3R1cmVJRD4gbV9jaGFpbjsgCisgICAgUmVmQ291bnRlZEFycmF5PFN0cnVjdHVyZUlEPiBt
X2NoYWluOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjdkZDEzOGVmYjZhMmZhMWNmN2QyOTczNTU1
NTZlZjM3NmNiNzE2Ny4uNTVmODNjMDU4NzQzZGJiZDE3MGU5NzUzNGMzMzQ3MTIyYzg3OTRlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0zNDksMTEgKzM0OSw5IEBAIGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZp
c2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlmICghYXQoaSkudmlzaXRXZWFrKHZtKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKFZlY3RvcjxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4qIHdlYWtSZWZlcmVuY2VzID0gbV93ZWFrUmVmZXJlbmNlcy5nZXQoKSkg
ewotICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxKU0NlbGw+JiB3ZWFrUmVmZXJlbmNlIDogKndl
YWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQod2Vha1Jl
ZmVyZW5jZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
CisgICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6IG1f
d2Vha1JlZmVyZW5jZXMpIHsKKyAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZl
cmVuY2UuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTc0OSwxMCArNzQ3LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICAKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0s
IGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxM
aW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0
YXRlLndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHko
KSkgewotICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAg
ICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgfQorICAgIGlmICghc3Rh
dGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0g
UmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuaAppbmRleCAyMDg4NDBlNzFmNzZhNGQ1ZDllNTc3NDVlZTY0ODY5MGZmN2FkNDM1Li5iZGY1
YzdmMmU3YzY4OTNmMWE5NTlmMjJmZmY4OTU1ODUwZGYyYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7
CiAgICAgTGlzdFR5cGUgbV9saXN0OwogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zdHVi
Um91dGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvPiBtX3dhdGNocG9pbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8V3JpdGVCYXJy
aWVyPEpTQ2VsbD4+PiBtX3dlYWtSZWZlcmVuY2VzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKIH07CiAKIHN0cnVjdCBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IGFiNDJkMjRjMTI2MGFhNDhiZTFlMGMz
MWUwM2Y2ZTA5ZTZhNGI0M2IuLmNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZh
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKLSAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVBy
b3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkKICAgICAsIG1fYWRkaXRpb25hbFNldChhZGRpdGlvbmFsU2V0KQogewog
ICAgIG1fdmlhUHJveHkgPSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAg
ICAgQVNTRVJUKHR5cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0
ZXIgfHwgdHlwZSA9PSBSZXBsYWNlKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxT
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAppbmRleCAzY2JiZTcx
YjlhYTM1MzM3MDU0ODhlOGJiYmM4NmM4NGJhMWE1YmQ1Li5kYzM5ZTI2Y2EyZjRiMmI3YWJhMTJi
NWE1NWYzMjY2NDQxMGVmYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUHJv
eHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBXYXRjaHBvaW50U2V0
KiBhZGRpdGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0
LmdldCgpOyB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAotICAgICAgICBib29sIHZpYVByb3h5ID0gZmFs
c2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBudWxscHRyLCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CisgICAgICAgIGJvb2wgdmlhUHJv
eHkgPSBmYWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1w
bChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2Ugewog
ICAgIH5Qcm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBQ
cm94eWFibGVBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgUHJveHlhYmxl
QWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+IG1fYWRkaXRpb25hbFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA2YjBiODc4Y2U3MTA4ZWIwNWE5MDI1YTE4
ZjgxNTgxOTQwMGRlNDUzLi5lNWQxMzJiNjI4NzIwMmQwZDI1NDYwZjY5YmQ1NjhjMGI0YWViMTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQo
Y29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVz
VmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBQdXRCeUlkU3RhdHVzOjpz
aHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTIyOSw2ICsy
MzQsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygK
ICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1
bW1hcnkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTM3MSw2ICsz
NzcsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtU
b0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQzNyw2ICs0NDQsNyBA
QCB2b2lkIFB1dEJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIG90aGVyKQog
ICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRha2VzU2xvd1BhdGg6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA4MTFjYzdm
NzBmOTk1M2JhOGYyN2Q3YzQ2MzU1MWY2MzgwMzRiZTE4Li44NzhlMjUyZGI2OWFjNTcxM2RjOGU4
ZjhiNjQ0MDAwY2FlNjMwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBjbGFzcyBQdXRCeUlkU3RhdHVz
IGZpbmFsIHsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayosIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAogICAg
IGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFZlY3RvcjxQdXRCeUlk
VmFyaWFudCwgMT4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKaW5kZXggZGU0OGY3NzA0ZWQ4
NjAzN2M4NDMyNTA0MjJmYzlkZDYyYmVkNWQ5Ni4uODMwN2EzNDYxYzljZTk1NTQ2MDAxMmVmNWM1
ZjMzN2U2MmFjZjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFu
ZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3Zh
cmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlu
a1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIFNldFByaXZh
dGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMTMsNiArMTE4LDcgQEAgU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmUKICAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAg
IH0KIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKQEAgLTE5NSw2ICsyMDEsNyBAQCB2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1
czo6bWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAg
IGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAg
ICByZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5k
ZXggOWE4MzRmODVjYzBlYzc2OTlmZjQzOTMxZmE5ZTZmNjE1YzhmMWVlNC4uNDhlYTY3ZTQ0MmZh
NWQxYTk5OWU2NzFhZmQ3NjI5YTY1NDgyZmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODgsNiArODgs
NyBAQCBjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRW
YXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVhOTg4ZjMzN2Q0MjQzMmJhZjY2
YjMwNmYzMTQ1NS4uMjQ4NjkzNzQ3MTE3OGFkZWNkNmZiNmU5NmE3Yjk1YjE5MjdiN2U4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBs
Lmg+CkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAg
ICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7
CisgICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAg
U3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZz
ZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggODE0ODUxNjAzNWRmZGM0YzlmYjllODNjYTg0NWUw
ZWQzZTc5NjAxNC4uODI2YmQ1NjliYjQzOWQzMzYxZmFkMjFlYTA0OGUwYmZjODZhYTQ3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSA9IGV4ZWN1
dGFibGUtPnNjcmlwdE1vZGUoKTsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVj
dXRhYmxlLT5wYXJzZU1vZGUoKSkpOwotICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNz
RmllbGRMb2NhdGlvbnMgPSBleGVjdXRhYmxlLT5jbGFzc0ZpZWxkTG9jYXRpb25zKCk7CisgICAg
YXV0byogY2xhc3NGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFibGUtPmNsYXNzRmllbGRMb2NhdGlv
bnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNl
PEZ1bmN0aW9uTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9k
ZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogCkBAIC03Myw5
ICs3Myw5IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhlY3V0YWJsZS0+cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0
YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRl
eHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNl
LCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwg
Y29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMg
PSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOwotICAgIFByaXZhdGVOYW1l
RW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUtPnBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKKyAgICBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZXhlY3V0YWJsZS0+cGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2Rl
OjpzbG9wcHkoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwg
ZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1v
ZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlv
bi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKIAog
ICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAppbmRleCAzNDNiMzM5Nzg5NGJhZjdkMjZhZmI1NGRlMzBjNjM1YWQ3YTU3
OTFjLi5kZDFiMzNjZDc2YWE3NmY2ZTg2YWJhNzIzMDg1YTJlNzRmYzUwMTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTc3LDExICsxNzgsMTEgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQogCi0gICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBQcml2YXRl
TmFtZUVudmlyb25tZW50KCk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuICZtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAg
ICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQpAQCAtMjE4LDEzICsyMTksMTMg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJpbmcg
bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwotICAgICAgICBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5
PEpTVGV4dFBvc2l0aW9uPiBtX2NsYXNzRmllbGRMb2NhdGlvbnM7CiAgICAgICAgIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OwogICAgIH07CiAK
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
PihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogCi0gICAgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucygpIGNvbnN0CisgICAgUmVmQ291bnRlZEFycmF5
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucygpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybiAmbV9yYXJlRGF0YS0+bV9j
bGFzc0ZpZWxkTG9jYXRpb25zOwpAQCAtMjM1LDcgKzIzNiw3IEBAIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBp
ZiAoY2xhc3NGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jbGFzc0ZpZWxkTG9jYXRpb25zID0gV1RGTW92ZShj
bGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2NsYXNzRmll
bGRMb2NhdGlvbnMgPSBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KFdURk1vdmUoY2xh
c3NGaWVsZExvY2F0aW9ucykpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggYTM3ODk4OTIzN2NkNGIxZjYzYmI3ZDNkOTVjMDc2ODQ3
MmUyNWFiZC4uNWFlYmJmYWQ0ZTU5MDI3ZGZkYjg3OGViMjAyZTNiZjk5MDkyODY2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBjbGFz
cyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogICAgIC8vCiAgICAgLy8g
VGhlIGtleSBtYXkgbm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NSIEVudHJ5IGJ1dCB0aGUg
bGlzdCBpbiB0aGUgdmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRvIGJlIHVzYWJsZSBmb3Ig
T1NSIEVudHJ5LgotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5k
ZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBS
ZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKIAog
ICAgIC8vIE1hcCBlYWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NSRW50ZXIgdG8gaXRz
IHN0cmVhbSBpbmRleC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkPiBieXRl
Y29kZUluZGV4VG9TdHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5k
ZXggYmQxZDhhMDcyNjYyY2MzNTNhNDQ3YzA1YmI2ZjFlNDBlOTlkYmNiMi4uYWFlYTU4NGIwNjIw
YzRhM2UxODQ1ZWYxYmNhOTVmYTIzM2YwMTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsYW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2lsbFRyeVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5VG9UaWVyVXAoYm9v
bCB3aWxsVHJ5VG9UaWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxsVHJ5VG9UaWVyVXA7
IH0KIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiYg
dGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7
IH0KKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUlu
ZGV4Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGllclVwSW5Mb29wSGll
cmFyY2h5OyB9CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+JiB0aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlcygpIHsgcmV0dXJuIG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7IH0KIAogICAg
IGVudW0gU3RhZ2UgeyBQcmVwYXJpbmcsIENvbXBpbGluZywgUmVhZHksIENhbmNlbGxlZCB9OwpA
QCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UGxhbj4gewogICAgIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIG1fZ2xvYmFsUHJvcGVydGll
czsKICAgICBSZWNvcmRlZFN0YXR1c2VzIG1fcmVjb3JkZWRTdGF0dXNlczsKIAotICAgIEhhc2hN
YXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhp
ZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRl
Y29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAgICAgVmVjdG9yPEJ5dGVjb2Rl
SW5kZXg+IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBTdGFnZSBtX3N0YWdl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggZmExM2Y5NWU1Y2VlZDM0ZDY2NDY4NmZjZjYzMjVj
ODc2YjljMTU1OC4uYjNhMzAzODE0YmE5NjU1MWNiYWFmZjdmNWEyMzAyMjhjOTEyNzRhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICghdGllclVwQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgV1RGTW92
ZSh0aWVyVXBDYW5kaWRhdGVzKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4udGll
clVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgdGllclVwQ2FuZGlkYXRlcyk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0V2lsbFRyeVRvVGllclVwKHRydWUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKaW5kZXggYTM5YjE0M2Y3NzMwMTZhM2I1ZGFlYzgzNWYzMzE5
MzdlZDgzZTE5My4uMTgxYjQ5YjgwNjhiOTY1Y2I4Mzc5NThkZTBjMTZhMTBiYTEyNzlhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKQEAg
LTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgewogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBWZWN0b3I8U2VnbWVu
dCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAyPiBtX3NlZ21lbnRzOwogICAgIHVuc2lnbmVkIG1fbnVt
Qml0cyB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0pJVFN0dWJSb3V0aW5lU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0
dWJSb3V0aW5lU2V0LmNwcAppbmRleCBhOTFlOTg4YjE4OTViNWZlNGY4MWRhNzc3OTJiMTNiNWI0
OTMyMzNlLi4yN2M0ZTZiOGUwYWIwNGRkZTZmMmZlYTFjZTA3ZWIzYzUzYjM4Zjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0
aXNvbmVkU3R1YlJvdXRpbmVzKCkKICAgICAgICAgfQogICAgICAgICByb3V0aW5lLnJvdXRpbmUt
PmRlbGV0ZUZyb21HQygpOwogICAgIH0KLSAgICBtX3JvdXRpbmVzLnNocmluayhkc3RJbmRleCk7
CisgICAgbV9yb3V0aW5lcy5zaHJpbmtDYXBhY2l0eShkc3RJbmRleCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmgKaW5kZXggNzIwMWVlMWNmMzFlNTI2YzdjNzQ1MDA1ZjNlYWU1YjRl
MmFjOTk5YS4uYTZkZTJhNGM3NjhiZTExODkwZDY3Mjk0ZDRkNzMxZWJjNzcyY2Y3NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaApAQCAt
MzUsNiArMzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHZvaWQgc2hy
aW5rVG9GaXQoKQorICAgIHsKKyAgICAgICAgYXJncy5zaHJpbmtUb0ZpdCgpOworICAgIH0KKwog
ICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmdzOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyB7
IFVJTlRfTUFYIH07CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7IFVJTlRfTUFYIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApp
bmRleCA0NmFhMDM5ZmM3NGZlMGE2ZTY0YzNlYzE0ZWY5NjEzZTdlOGI1M2I5Li41OGQ4NjRkNzg4
YjcyMGFiMjA1M2FiZTliMjg3OGFhOTE4YzllMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05Niw3ICs5Nyw3IEBA
IGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90Vmlz
aXRvciYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxs
Pj4gbV9jZWxsczsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1f
Y2VsbHM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oCmluZGV4IGZhN2I3ZWI2ZWZhZTBlY2MyYjcyZDU5ZTU1ZjRlMWYxZDZjYmQzOWMuLjZj
MTNmMTI2MzBhMWI1OTYyOWRkOTkyYTQ5ZjNjN2FjYjhkZGIzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKQEAg
LTEwOSw3ICsxMDksNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSBmaW5hbCA6
IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2Jq
ZWN0c0ludGVybmFsKEFic3RyYWN0U2xvdFZpc2l0b3ImKSBmaW5hbDsKICAgICB2b2lkIG1hcmtS
ZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIGZpbmFsOwogCi0gICAgVmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+LCAyPiBtX3ZhcmlhbnRzOworICAgIFJlZkNvdW50ZWRBcnJh
eTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV92YXJpYW50czsKICAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxO
b2RlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBmZjU5YTBm
YjVmOGNjYmFhZjVkMmQzYTA5YTRlMTIwMDIxMjBiMjE2Li44YTk2YWJlODVlZGVmYmExNTUxMDky
NzQ2N2Q2YTM5OTllMTM1NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKIAogICAgICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5pc1Vuc2V0KCkgPyBpbnZhbGlkT2Zmc2V0
IDogc2xvdC5jYWNoZWRPZmZzZXQoKTsKIApAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKGdsb2Jh
bE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
cm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJhc2VT
dHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSA9PSBv
ZmZzZXQpOwpAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlm
IChwdXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJh
c2VDZWxsLCBudWxscHRyKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jawogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vz
c0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0No
YWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtNzI2LDcgKzcyNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAg
ICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNo
ZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSkgewogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlv
blNldDsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIGRvIHRoaXMgZXZlbiBpZiB3ZSdyZSBhIHNlbGYgY3VzdG9tLCBzaW5jZSB3
ZSBtdXN0IGRpc2FsbG93IGRpY3Rpb25hcmllcwogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
d2UgbmVlZCB0byBiZSBpbmZvcm1lZCBpZiB0aGUgY3VzdG9tIGdvZXMgYXdheSBzaW5jZSB3ZSBj
YWNoZSB0aGUgY29uc3RhbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jawogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9IGJhc2VWYWx1ZSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2xv
dC5pc0NhY2hlYWJsZVNldHRlcigpKTsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwog
ICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlKSB7CkBA
IC03NjYsNyArNzY2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRl
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwpAQCAtOTIwLDcgKzkyMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CisgICAgICAg
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgaWYg
KHdhc0ZvdW5kKSB7CiAgICAgICAgICAgICBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBhY3Rp
b25Gb3JDZWxsKHZtLCBiYXNlKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRy
eUNhY2hlTGF0ZXI7CiAKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5
UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgc2xvdCk7CisgICAg
ICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hh
aW46OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJh
c2VTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSA9
PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CiAKICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykg
ewotICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOworICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShn
bG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCAzNDAzOWE1ZjhiMGJjYjI2ZmI2MDU1MzNmN2Y4MjVkOGU5ZGI1OWI5Li5lOTkzOTRk
Y2Y4ZDg0NDBjNTVmYmI2ZjM2NjcyZmM2ZTJiMDdlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBKU1Rva2VuOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+Ci1FeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3Vs
dCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKK0V4cGVjdGVkPHR5cGVuYW1lIFBh
cnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250
ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzKQogewogICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0
PFZNJj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291
cmNlKSk7CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgp
OwpAQCAtMzE4MCw3ICszMTgwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Q2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0
aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+JiBjbGFzc0ZpZWxkTG9jYXRpb25zKQordGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4mIGNsYXNzRmllbGRMb2NhdGlvbnMp
CiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVh
dGVTb3VyY2VFbGVtZW50cygpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc0NsYXNzU2NvcGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM5NTFhMDFlODhmOGU2
YTVlYjkxNzllMjM5OGNmMmM5NGE1MTFlMzIuLjc2OGQ3M2RiN2JiMzAxMzIxMjNkYjY4NjFlNDQ3
YTkzMGVmNzA2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtOTkxLDcgKzk5Miw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgflBhcnNlcigp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqID0g
bnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVu
dGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRp
b24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTE1MTEsNyAr
MTUxMiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlczsK
ICAgICAgICAgaW50IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4cGVjdGVkPFBhcnNlSW5u
ZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiosIGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICBFeHBlY3RlZDxQYXJzZUlu
bmVyUmVzdWx0LCBTdHJpbmc+IHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24sIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CiAKICAgICAvLyBV
c2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVu
Y3Rpb25NZXRhZGF0YU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NDIs
NyArMTc0Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VF
bGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIHBhcnNlQXN5bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0aWFs
aXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIHBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
LCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
VHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGly
ZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmll
ciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBudWxscHRy
KTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsK
QEAgLTIxMjcsNyArMjEyOCw3IEBAIGNsYXNzIFBhcnNlciB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9y
LCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKK3N0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2Vy
RXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4
dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVByaXZhdGVOYW1lcywgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPiogY2xh
c3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNn
OwpAQCAtMjIyOCw3ICsyMjI5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0
ciwKICAgICBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVO
YW1lcyA9IG51bGxwdHIsCi0gICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NG
aWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCisgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4
dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFk
MjExYzhjYzJlYS4uNTZkMWFhZDY3ZThhNjA0NzczNzE3Zjg2OWIyNTI2NGNiZmZmZjJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9v
ZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdJbXBsLmg+CiAKQEAgLTY2OSwxMCArNjcwLDEwIEBAIGNsYXNzIENhY2hlZFBhaXIg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PHN0ZDo6cGFpcjxTb3VyY2VUeXBlPEZpcnN0PiwgU291cmNl
VHlwZTxTCiAgICAgU2Vjb25kIG1fc2Vjb25kOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFyZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5
cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxL
ZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPFZh
bHVlPj4+Ci1jbGFzcyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0
PEhhc2hNYXA8U291cmNlVHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPiwgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxL
ZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+
LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+
PiwgdHlwZW5hbWUgVGFibGVUcmFpdHMgPSBXVEY6Okhhc2hUYWJsZVRyYWl0cz4KK2NsYXNzIENh
Y2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VU
eXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgVGFibGVUcmFpdHM+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlw
ZW5hbWUgVj4KLSAgICB1c2luZyBNYXAgPSBIYXNoTWFwPEssIFYsIEhhc2hBcmcsIEtleVRyYWl0
c0FyZywgTWFwcGVkVHJhaXRzQXJnPjsKKyAgICB1c2luZyBNYXAgPSBIYXNoTWFwPEssIFYsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz47CiAKIHB1
YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNYXA8U291cmNl
VHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPj4mIG1hcCkKQEAgLTY5Niw2ICs2OTcsOSBAQCBj
bGFzcyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEhhc2hNYXA8
U291cmNlVHlwZTxLZXk+LCBTb3VyYwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRQYWlyPEtleSwg
VmFsdWU+PiBtX2VudHJpZXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+Piwg
dHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0eXBl
bmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4KK3Vz
aW5nIENhY2hlZE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcCA9IENhY2hl
ZEhhc2hNYXA8S2V5LCBWYWx1ZSwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNB
cmcsIFdURjo6TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoVGFibGVUcmFpdHM+
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgQ2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxC
YXNlIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PFQ+IHsKIHB1YmxpYzoKQEAgLTkxMCw3
ICs5MTQsNyBAQCBjbGFzcyBDYWNoZWRTdHJpbmdKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIENh
Y2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFN0cmluZ0ltcGw+LCBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZTo6IE9mZnNldExvY2F0aW9uPiBtX29mZnNldFRhYmxlOworICAgIENhY2hlZE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVk
U3RyaW5nSW1wbD4sIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbj4gbV9v
ZmZzZXRUYWJsZTsKIH07CiAKIGNsYXNzIENhY2hlZEJpdFZlY3RvciA6IHB1YmxpYyBWYXJpYWJs
ZUxlbmd0aE9iamVjdDxCaXRWZWN0b3I+IHsKQEAgLTE3NzYsNiArMTc4MCw3IEBAIGNsYXNzIENh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxp
bmtlZEZ1bmN0aW9uRXhlCiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNv
ZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CisgICAgICAgIG1fY2xhc3NGaWVsZExvY2F0aW9ucy5lbmNvZGUoZW5jb2RlciwgcmFyZURh
dGEubV9jbGFzc0ZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogICAgIH0KIApAQCAtMTc4NCw2ICsxNzg5LDcgQEAgY2xhc3MgQ2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVu
Y3Rpb25FeGUKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBy
YXJlRGF0YSA9IG5ldyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9Owog
ICAgICAgICBtX2NsYXNzU291cmNlLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1Nv
dXJjZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIs
IHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9jbGFzc0Zp
ZWxkTG9jYXRpb25zLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc0ZpZWxkTG9jYXRp
b25zKTsKICAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKICAgICAgICAg
cmV0dXJuIHJhcmVEYXRhOwogICAgIH0KQEAgLTE3OTEsNiArMTc5Nyw3IEBAIGNsYXNzIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlCiBwcml2YXRlOgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlk
ZXIgbV9jbGFzc1NvdXJjZTsKICAgICBDYWNoZWRSZWZQdHI8Q2FjaGVkVERaRW52aXJvbm1lbnRM
aW5rPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENhY2hlZFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25zOwogICAgIENhY2hlZFByaXZhdGVOYW1lRW52
aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDJjMTQ5ZmE3MjYyMGJhY2EzZGFhMjIyODJkODdi
ZTc5ZTVlODkwNTkuLjlmMzIxOTM0NTY4MDk1ZDM5ZDE5ZDc5ZDcwNTIwNmM0Zjk1MmM5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTExMjcsNiArMTEyNyw3IEBAIHZv
aWQgVk06OnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnRpbChDYWxsRnJhbWUqIHRhcmdl
dCkKICAgICAvLyBXZSBoYXZlIHRvIHdvcnJ5IGFib3V0IG1pZ3JhdGluZyBmcm9tIGFub3RoZXIg
dGhyZWFkIHNpbmNlIHRoZXJlIG1heSBiZSBubyBjaGVja3BvaW50cyBpbiBvdXIgdGhyZWFkIGJ1
dCBvbmUgaW4gdGhlIG90aGVyIHRocmVhZHMuCiAgICAgd2hpbGUgKG1fY2hlY2twb2ludFNpZGVT
dGF0ZS5zaXplKCkgJiYgYm91bmRzLmNvbnRhaW5zKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5sYXN0
KCktPmFzc29jaWF0ZWRDYWxsRnJhbWUpKQogICAgICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUu
dGFrZUxhc3QoKTsKKyAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0K
IAogdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDY4MDg3
ZTU1MGViNjA3ODVmMTQyMjgwY2RkNDIyYTViM2VmZDA3MzYuLjg3MDM1YTIyYjFmNTBlNDljNWE1
NDY4YTFjNWE5MzM5MTM4NmM0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtODQsOCArODQsOCBAQCB2
b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29k
ZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVsZUlu
Zm9ybWF0aW9uKCkudGFibGVDb3VudCgpOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGFibGVzW2ldKTsKKyAgICBmb3IgKGF1dG8mIHRhYmxlIDogdGhpc09iamVj
dC0+bV90YWJsZXMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRhYmxlKTsKICAgICB2aXNpdG9y
LnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlLT5leHRyYU1l
bW9yeUFsbG9jYXRlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVj
dC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJp
ZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rpb25zJyBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGNiY2ViNTAwMTczM2NhMzMw
ZGQ4MmY4YWM1YjdjOTU3ZTU2YzM1ZTYuLmQ0NjJlN2Q5OWE1ZWEzNzZkYWIwZDMxNmVkOGZkY2Vl
ZmRjYmMzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2FzbUNy
ZWF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIldhc21JbnN0YW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0xMTUsNyArMTE2LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2Vt
Ymx5TWVtb3J5PiBtX21lbW9yeTsKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlUYWJsZT4+IG1fdGFibGVzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291cmNlL1dURi93
dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMxMzhiMjYyMDEwMzQ5OTA3YzI1Njlm
ZWMyZGIxNGExYy4uZGNhMzgzNDQzZjgxYjA5NzRmYzU5ZDY0NTkwNDAyNjZmODMyZGI3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUwLDExIEBAIGNsYXNzIFJlZkNvdW50
ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3RydWN0b3JUYWcgeyBDb21tb25Db3B5
Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yID0gVCo7CisgICAg
dXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAgICB1c2luZyByZXZlcnNlX2l0ZXJh
dG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgICB1c2luZyBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPjsK
KwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsKICAgICAKICAgICBSZWZDb3VudGVk
QXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikKQEAgLTE2OSw4ICsxNzQsOCBAQCBj
bGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQogICAgIAogICAgIFQqIGRhdGEoKSB7IHJldHVybiBQ
dHJUcmFpdHM6OnVud3JhcChtX2RhdGEpOyB9Ci0gICAgVCogYmVnaW4oKSB7IHJldHVybiBkYXRh
KCk7IH0KLSAgICBUKiBlbmQoKQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gZGF0YSgp
OyB9CisgICAgaXRlcmF0b3IgZW5kKCkKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzksOCArMTg0LDEzIEBAIGNsYXNzIFJlZkNvdW50ZWRB
cnJheSB7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBj
b25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5kYXRhKCk7IH0KLSAgICBjb25zdCBU
KiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhp
cyktPmJlZ2luKCk7IH0KLSAgICBjb25zdCBUKiBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlz
KS0+YmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9CisKKyAgICByZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0K
KyAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVu
ZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5k
KCkpOyB9CiAgICAgCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425124</attachid>
            <date>2021-04-03 21:52:08 -0700</date>
            <delta_ts>2021-04-03 21:52:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224162-20210403215207.patch</filename>
            <type>text/plain</type>
            <size>79727</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi45NmU0MGJhMGNiZDU3ZmRm
Y2U1OTRlNTVjYWFjZjUxZTMxN2I4MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc29tZSBvZiBWZWN0b3JzIGluIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkIFhYWFN0YXR1
czo6c2hyaW5rVG9GaXQgdG8gc2hyaW5rIHVuZGVybHlpbmcgZHluYW1pYyBWZWN0b3JzLgorICAg
ICAgICAyLiBSZXBsYWNlIHRpZXJVcEluTG9vcEhpZXJhcmNoeSdzIFZlY3RvciB3aXRoIFJlZkNv
dW50ZWRBcnJheSBzaW5jZSBpdCBpcyBjb25zdHJ1Y3RlZC1vbmNlLWxvb2t1cC1vbmx5IGRhdGEu
CisgICAgICAgIDMuIFVzZSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQg
Zm9yIFN0cmluZ1RhYmxlcyBzaW5jZSB0aGlzIGlzIGNvbnN0cnVjdGVkLW9uY2UtbG9va3VwLW9u
bHkgZGF0YS4gV2UgYWxzbyBhZGQKKyAgICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0IHN1cHBvcnQgZm9yIENhY2hlZFR5cGVzLgorICAgICAgICA0LiBVc2Ug
cmVzaXplVG9GaXQgZm9yIFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMgYW5kIFN3aXRjaEp1bXBUYWJs
ZXMuCisgICAgICAgIDUuIEpJVFN0dWJSb3V0aW5lU2V0J3MgVmVjdG9yIHNob3VsZCBiZSBzaHJ1
bmsuCisgICAgICAgIDYuIEJsb2NrRGlyZWN0b3J5Qml0cydzIFZlY3RvcidzIGluaXRpYWwgc2l6
ZSBzaG91bGQgYmUgc21hbGwuCisgICAgICAgIDcuIE1ha2UgUG9seVByb3RvQWNjZXNzQ2hhaW4g
UmVmQ291bnRlZCwgYW5kIHVzZSBSZWZDb3VudGVkQXJyYXkgZm9yIGl0cyBWZWN0b3I8U3RydWN0
dXJlSUQ+LiBBbmQgcmVtb3ZlIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjbG9uZS4KKyAgICAgICAg
ICAgSnVzdCBoYXZpbmcgUmVmIGlzIGVub3VnaCBzaW5jZSB0aGlzIGlzIGltbXV0YWJsZSBkYXRh
LgorICAgICAgICA4LiBVc2UgUmVmQ291bnRlZEFycmF5IGZvciBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSdzIG1fY2xhc3NGaWVsZExvY2F0aW9ucy4KKyAgICAgICAgOS4gVXNlIFJlZkNvdW50
ZWRBcnJheSBmb3IgSlNXZWJBc3NlbWJseUluc3RhbmNlLgorCisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6c2V0RnJhbWVTaHVmZmxlRGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6bWVyZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6SW5CeUlkU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6SW5z
dGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0YW5jZU9mU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlBvbHlQcm90
b0FjY2Vzc0NoYWluOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y2hhaW4gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6b3BlcmF0b3Ih
PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBvbHlQcm90b0FjY2Vzc0NoYWluOjpm
b3JFYWNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hh
aW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
Ojp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
eHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlBy
b3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptZXJnZSk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgIChK
U0M6OkRGRzo6UGxhbjo6dGllclVwSW5Mb29wSGllcmFyY2h5KToKKyAgICAgICAgKiBkZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Qml0cy5oOgorICAgICAgICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRp
bmVzKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBqaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0
cnVjdGlvbiBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4
OGI3ZDdmZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNjNiMmIyYTk4NTAxM2FhM2Q5NjU2ZjJj
OGQxODA4MzgxODcxNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNC0wMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFNocmluayBzb21l
IG9mIFZlY3RvcnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgcmJlZ2luIGFuZCByZW5kIHRvIG1ha2UgUmVmQ291bnRlZEFycmF5IHVz
YWJsZSBmb3IgVmVjdG9yIGNsaWVudHMgd2hvIHVzZSB0aGVzZSBmZWF0dXJlcy4KKworICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5
OjpiZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpy
YmVnaW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRBcnJheTo6cmVuZCBjb25zdCk6CisKIDIwMjEtMDQtMDIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFByZWZlclBhZ2VSZW5kZXJp
bmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjAyYTJkNWYzMmM5YzIyMGQwZTkw
YmVkN2U5ODJmMWI0OTM2YWMzMi4uYmVjNTk2NTUzODM2NDM4NTBmZGE4ODBlZmJkNDY3YWQ4NzVh
ZjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwog
Ci1BY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCitBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICA6IG1fdHlwZSh0eXBlKQog
ICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNzQ2FzZTo6
QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVh
YmxlSWRlbnRpZmkKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1ZhbGlkKCkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIEluSGl0OgpAQCAtMTEwLDcgKzExMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFu
c2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKLSAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0g
bmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA2MDI1N2IxYjViY2E5NWNkM2NjNjNiM2YzYTA5ODVj
NzM3YmE3ZGU2Li5iZGQxYjIzN2Q2MThhMmNjZTgyNzIwZjcyY2E3NTM3ZGUzZmE3MDY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTE0OCwxMCAr
MTQ4LDEwIEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAot
ICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOworICAgICAgICBTdHJ1Y3R1cmUqID0gbnVs
bHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7
CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRp
b24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKQEAgLTI1NSwyMCArMjU1LDkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZW5k
aWYKICAgICAKIHByb3RlY3RlZDoKLSAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1
cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4mJik7CiAgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsK
LSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQotICAgICAgICA6IG1fdHlw
ZShvdGhlci5tX3R5cGUpCi0gICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQotICAgICAg
ICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKLSAgICAgICAgLCBtX29mZnNldChvdGhl
ci5tX29mZnNldCkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKLSAg
ICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkKLSAgICAgICAgLCBt
X2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgaWYgKG90aGVy
Lm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCi0gICAgICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0No
YWluID0gb3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2xvbmUoKTsKLSAgICB9CisgICAg
QWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0OwogCiAgICAgQWNj
ZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0ZTsKICAgICB2b2lk
IHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0zMjEsNyArMzEwLDcg
QEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBt
X2NvbmRpdGlvblNldDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4gbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbjsKKyAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IG1fcG9seVByb3RvQWNjZXNzQ2hhaW47CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwCmluZGV4IDY0ZTJhMDI4NmU4NTdhMWM2MzQ0NTcwYTUzZGNkYTc4ZmRkYmEz
MjMuLjM2YzM0MDlkYmI3ZjQ3ZmNkZjJhNGRjOGViNTMyNmRmN2JkZThiNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yODEsNiAr
MjgxLDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiB2b2lkIENhbGxM
aW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYg
c2h1ZmZsZURhdGEpCiB7CiAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxs
RnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+
c2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cAppbmRleCBhZTdhNGY3Yzc0Mjc5MzY2NGU2OTdhNWY1ZGNjNDFlNGEwMzgyY2MxLi5kNTRmYTIz
YmVjM2QzNTBjNmM4ZWMwMjFlODQ3NmNhNTQ5ODQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAK
QEAgLTQxLDYgKzQxLDExIEBAIGJvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZh
cmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpCiAgICAgcmV0dXJuIGFw
cGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hy
aW5rVG9GaXQoKTsKK30KKwogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElD
U3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlk
RXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1f
bG9jayk7CkBAIC0xMDksNiArMTE0LDcgQEAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2kKICAgICAg
ICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lv
bihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAgICAgICAgfQogCisgICAgICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTkxLDYgKzE5
Nyw3IEBAIHZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNvbnN0IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChv
dGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKICAgICAg
ICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNl
IExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCmluZGV4IGU2N2I2MzgzODg0OWY1
MjNlZmI2OTVlZjFlZGIwOTg3YjYyZjU4MWYuLmE5ODhmMmFmOGIxYmI1MmM1YTQzYWM4NTFmZmEy
MjY4ZmRmMzQwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKICAgICBib29sIGZpbmFsaXplKFZNJik7CiAK
ICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7
CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggYTIzNDE5OGE5YWU1NDBjZjMyNTY0YmQ1N2FmNDBlMDgyM2VjMDQwZC4uMjhjYTllYzVm
ZmRiMjVlMjFlZDY4ZTEzYWE5NmMyOTk1N2VjNDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKSkgewotICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQp
OworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnJlc2l6
ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6aXRlcmF0b3IgcHRyID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5iZWdpbigpOwogICAgICAgICAgICAgICAgIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5s
aW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQo
KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZlN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnJlc2l6ZVRvRml0KGNvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
aSk7CiAgICAgICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAppbmRleCA5MjMxNDdkNjMzZTdmMzNmZDA1NDRj
NjQ1NGM2Y2UyMTRkYTBjMzExLi4wMTkwOWExZTEzMGJhYjAyNDQ5MDk1NmYxZGMzOWQ1ZDk0Zjkx
MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIGJvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZh
cmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVu
ZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBEZWxldGVC
eVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5rVG9GaXQoKTsK
K30KKwogRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMjksNiArMTM0LDcgQEAgRGVs
ZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcmVzdWx0
LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yMTQs
NiArMjIwLDcgQEAgdm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0
dXMmIG90aGVyKQogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwogICAgICAgICB9CisgICAgICAg
IHNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgTGlrZWx5VGFrZXNT
bG93UGF0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3Rh
dHVzLmgKaW5kZXggYjA3NmJmMjY5ZWM3ODBiZTg2ZWQ5M2U0ZTEzNjc2OWNmYWY3YzMxYi4uNWJh
ODAzYWE5NzdmZjNkYzViZWU1ODdiNDc3MWIwMDQxNmJiZDZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTg2LDYgKzg2LDcgQEAg
Y2xhc3MgRGVsZXRlQnlTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxpemUoVk0mKTsKIAog
ICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRl
eCBkOTU3MjFlZWIwMmY0ODM1MzQxOTNiZmI3ZTdlZGM1MGEwYTgzMzY3Li5iZDc0ZmI2NGYzNDEx
NTE3MGEwMWMxNjE4Yjg1ZTQ3ZTA0NzZlYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIGJvb2wgR2V0QnlT
dGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAg
cmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAor
dm9pZCBHZXRCeVN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMuc2hyaW5r
VG9GaXQoKTsKK30KKwogR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7
CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTMzOSw2ICszNDQsNyBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCiAgICAgICAgICAgICB9IH0KICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
cmVzdWx0LnNocmlua1RvRml0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
ICAgICAKQEAgLTQzMyw2ICs0MzksNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0
ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAg
ICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAg
IAorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKQEAgLTQ5NCw2ICs1MDEsNyBAQCB2b2lkIEdldEJ5U3RhdHVzOjpt
ZXJnZShjb25zdCBHZXRCeVN0YXR1cyYgb3RoZXIpCiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZh
cmlhbnQob3RoZXJWYXJpYW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7
CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKaW5kZXggZDNiMWM2MjZkY2FkMzc5YTlmZDhiYjA0NDRj
YTFmZDdjYjhiZmYyNi4uMjQzNzMwZmRlMzNhZTc1ZWYxZjYzNmM0MTdmODhiOGU5OTZmNTJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKQEAgLTEy
Myw2ICsxMjMsNyBAQCBjbGFzcyBHZXRCeVN0YXR1cyBmaW5hbCB7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KIAogICAgIGJvb2wg
YXBwZW5kVmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggZThiNGNhNWU0YmJlNWY3MTAzODI3NTAxNmI5YWVjMmM1MTlkMGI4OC4uMjAy
ZWZjNTQ2NjYxOTg1NGRhYWE2MjBjNjk3ZmYxY2ZmN2NmMzgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZUludGVy
bmFsIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKLUdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWlu
KQorR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xv
dEJhc2UsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpCiB7CiAgICAgbV9jdXN0b21TbG90QmFzZS5zZXRNYXlC
ZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CkBAIC01MCw3ICs1MCw3IEBAIEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAotICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0
ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVB
bm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBw
cm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEdl
dHRlcjoKQEAgLTY4LDcgKzY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAotICAgIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHksIAorICAg
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94
eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwg
SlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8
fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjAzZmJmNjI0NTQ2MDcwNzc0MWUyNTgwZjQ0Zjc1NDdi
ZDgyZjg1OS4uODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVy
LCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21B
Y2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLAotICAgICAgICBKU09iamVjdCogY3VzdG9tU2xv
dEJhc2UsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKyAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNl
LCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCi0gICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiwgYm9v
bCB2aWFQcm94eSA9IGZhbHNlLAorICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZh
bHNlLAogICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0
dGVyID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAg
ICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEdldHRlclNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBw
dWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21BY2Nlc3Nv
cjsgfQogCiBwcml2YXRlOgotICAgIEdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwq
LCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0
ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEdldHRlclNldHRlckFj
Y2Vzc0Nhc2UoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVj
dCogY3VzdG9tU2xvdEJhc2UsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKICAg
ICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2UmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApp
bmRleCA5NTc4MzAxODZjOWVlOWMyNDExOWJmNDdkYmRlOWM3NGNlY2ZhZmM4Li40OTM4YTYzYzFi
MmFlYzkwYmZkMDQ2Y2Y1NzQ5NmM4NTMxM2EyNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgYm9vbCBJ
bkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkK
ICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwog
fQogCit2b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9GaXQoKQoreworICAgIG1fdmFyaWFudHMu
c2hyaW5rVG9GaXQoKTsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBJbkJ5SWRTdGF0dXMgSW5CeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAm
IG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCBFeGl0RmxhZyBkaWRFeGl0KQogewpAQCAtMjAwLDYgKzIwNSw3IEBAIEluQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNv
bnN0IENvbmN1CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMyw2ICsy
MzksNyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhl
cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IFRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
U3RhdHVzLmgKaW5kZXggMGY0N2ZkZjdjYjZiZDg3ZGEyZWI3MzUzNDAwY2JhY2M0OTUyNGNlNi4u
N2YxNWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTE2LDYgKzExNiw3IEBA
IGNsYXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CiAgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwor
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0
aW9uIH07CiAgICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKaW5k
ZXggY2Y4NThmZDM5NDY4MGE1ZWVhOTAwOGJhNzBlNzM3YjE4NDJmZGI2Yy4uNzNjNzgxOWI1MTY3
NjY5Mzc4MzEzMmQ5OThmZDhlNjQxZjVjZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcApAQCAtMzksNiArMzksMTEgQEAg
dm9pZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluc3RhbmNlT2ZWYXJp
YW50JiB2YXJpYW50KQogICAgIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJp
YW50KTsKIH0KIAordm9pZCBJbnN0YW5jZU9mU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAg
bV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNl
T2ZTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVz
TWFwJiBpbmZvTWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CkBAIC05Niw2ICsx
MDEsNyBAQCBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLAogICAgICAgICAgICAgYWNjZXNzLnR5cGUo
KSA9PSBBY2Nlc3NDYXNlOjpJbnN0YW5jZU9mSGl0KSk7CiAgICAgfQogICAgIAorICAgIHJlc3Vs
dC5zaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dGFuY2VPZlN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNl
T2ZTdGF0dXMuaAppbmRleCA4NWM0NWNjOGExOWMyZjlkMzQxY2Y1YjJlMGNlMGJiYTFlYjUxYTIy
Li5iYTk5YzY3OThhNjVmYzFhZTBkM2YyNjI5NjJiNDVlNjRhZTBmNDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKQEAgLTEwNiw2
ICsxMDYsNyBAQCBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIGZpbmFsIHsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5zdGFuY2VPZlZhcmlhbnQmKTsKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CiAgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8SW5z
dGFuY2VPZlZhcmlhbnQsIDI+IG1fdmFyaWFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggZjhkY2U3NTcxMzdiYzc5N2ZkODUwY2MyNjE3Mjc0NTc2ZGU4ODYwOC4uNjMwMWRjMjMzNjkz
M2Q2NzZjM2JlOWU5MGM2MDE4OWExMzE3MzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApA
QCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgOiBC
YXNlKHZtLCBvd25lciwgSW50cmluc2ljR2V0dGVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkKIHsKICAg
ICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1bmN0aW9uKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiog
aW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9u
U2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNG
dW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5oCmluZGV4IGQ3YWVkN2E1MzJjMTMwOGNlZDY1NWUwZGZlZTI1ZjM3M2Q2OGE2MDUuLjYy
ODcwMDQxNTg3MzFkNWI4ZmViNTA2MzUzZGU1NTliNjQ0NzY0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UuaApAQCAtNDIsMTQgKzQyLDE0IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Ug
ZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJp
bnNpY0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmlu
c2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBK
U0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworICAgIEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2UoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9u
KiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2ludHJpbnNpY0Z1bmN0aW9uOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAppbmRleCBjMTU5YWMzMTdh
OTc4NDZhYThkZDY2MWQ2ODk3YzA1YTU1NTlhZTliLi41ZmI4NGExZTU0ZWRlYmYwYmFiNjE4ZmY3
YjgyMzlmYmE5YjMyZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBU
YWJsZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVM
b2NhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JvYmlu
SG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlIHsKLSAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxl
OworICAgICAgICB1c2luZyBTdHJpbmdPZmZzZXRUYWJsZSA9IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPjsK
ICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0Y2hQdHJUYWc+IGN0aURlZmF1bHQ7IC8v
IEZJWE1FOiBpdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFp
bi5jcHAKaW5kZXggYTJlMDE3Y2U1MzhjZDk5NGRiNTNjMDczYjNjYmZlMzE3ZDY2YjM0Mi4uZTJi
N2I2NjI4YWMwZmY1ZTQwNWU4OGIwNDY0M2E5M2FkNjFmZDZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCkBA
IC0zMCwyMSArMzAsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCkKK1JlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46
OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gc2xvdC5p
c1Vuc2V0KCkgPyBudWxscHRyIDogc2xvdC5zbG90QmFzZSgpOwotICAgIHJldHVybiBjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBiYXNlLCB0YXJnZXQpOworICAgIHJldHVybiB0cnlDcmVhdGUoZ2xvYmFs
T2JqZWN0LCBiYXNlLCB0YXJnZXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KQorUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKIHsK
ICAgICBKU0NlbGwqIGN1cnJlbnQgPSBiYXNlOwogICAgIFZNJiB2bSA9IGJhc2UtPnZtKCk7CiAK
ICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+IHJlc3VsdChuZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSk7Ci0KKyAgICBW
ZWN0b3I8U3RydWN0dXJlSUQ+IGNoYWluOwogICAgIGZvciAodW5zaWduZWQgaXRlcmF0aW9uTnVt
YmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1iZXIpIHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pOwogCkBAIC02MCw3ICs1OSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46
OmNyZWF0ZShKU0dsb2JhbE9iamVjCiAgICAgICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBkb24n
dCBpbmNsdWRlIHRoZSBiYXNlIGluIHRoZSBjaGFpbi4gV2UgbGV0CiAgICAgICAgIC8vIEFjY2Vz
c0Nhc2UgcHJvdmlkZSB0aGUgYmFzZSB0byB1cyBhcyBuZWVkZWQuCiAgICAgICAgIGlmIChpdGVy
YXRpb25OdW1iZXIpCi0gICAgICAgICAgICByZXN1bHQtPm1fY2hhaW4uYXBwZW5kKHN0cnVjdHVy
ZS0+aWQoKSk7CisgICAgICAgICAgICBjaGFpbi5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudCA9PSBiYXNlKTsK
IApAQCAtNzgsOCArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplYwogICAgIGlmICghZm91
bmQgJiYgISF0YXJnZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0LT5t
X2NoYWluLnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKGNoYWluKSkpOwogfQogCiBi
b29sIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFZN
JiB2bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggMGFiMGUxM2YxZjIyZDA1NTk1MWZiNzk5OTdkNDhj
ZjAxNzY3ODdhZi4uMDliZmMwYjg2YzU4NzkxYWI3ODlmNjY0NTM0OGIzMWEwYzA3MzhmNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0No
YWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vz
c0NoYWluLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsMjIgKzM4LDEz
IEBAIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwogY2xhc3MgU3RydWN0dXJl
OwogCi1jbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0KK2NsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIGZpbmFsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB7CiBwdWJsaWM6Ci0gICAgUG9s
eVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hhaW4mKSA9IGRlZmF1bHQ7Ci0KICAg
ICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBi
YXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiB0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHRy
eUNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25lKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlQcm90b0FjY2Vzc0NoYWluPigqdGhp
cyk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZUlEPiYgY2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX2NoYWluOyB9CisgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PFN0cnVjdHVy
ZUlEPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CiAKICAgICB2b2lkIGR1bXAo
U3RydWN0dXJlKiBiYXNlU3RydWN0dXJlLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIApAQCAt
ODMsMTEgKzc1LDE0IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSA9IGRlZmF1bHQ7CisgICAgZXhwbGlj
aXQgUG9seVByb3RvQWNjZXNzQ2hhaW4oVmVjdG9yPFN0cnVjdHVyZUlEPiYmIGNoYWluKQorICAg
ICAgICA6IG1fY2hhaW4oV1RGTW92ZShjaGFpbikpCisgICAgeworICAgIH0KIAogICAgIC8vIFRo
aXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYmFzZS4gV2UgcmVseSBvbiBBY2Nlc3NDYXNlIHByb3Zp
ZGluZyBpdCBmb3IgdXMuIFRoYXQgc2FpZCwgdGhpcyBkYXRhCiAgICAgLy8gc3RydWN0dXJlIGlz
IHRpZWQgdG8gdGhlIGJhc2UgdGhhdCBpdCB3YXMgY3JlYXRlZCB3aXRoLgotICAgIFZlY3RvcjxT
dHJ1Y3R1cmVJRD4gbV9jaGFpbjsgCisgICAgUmVmQ291bnRlZEFycmF5PFN0cnVjdHVyZUlEPiBt
X2NoYWluOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjdkZDEzOGVmYjZhMmZhMWNmN2QyOTczNTU1
NTZlZjM3NmNiNzE2Ny4uNTVmODNjMDU4NzQzZGJiZDE3MGU5NzUzNGMzMzQ3MTIyYzg3OTRlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0zNDksMTEgKzM0OSw5IEBAIGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZp
c2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlmICghYXQoaSkudmlzaXRXZWFrKHZtKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKFZlY3RvcjxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4qIHdlYWtSZWZlcmVuY2VzID0gbV93ZWFrUmVmZXJlbmNlcy5nZXQoKSkg
ewotICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxKU0NlbGw+JiB3ZWFrUmVmZXJlbmNlIDogKndl
YWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQod2Vha1Jl
ZmVyZW5jZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
CisgICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6IG1f
d2Vha1JlZmVyZW5jZXMpIHsKKyAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZl
cmVuY2UuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTc0OSwxMCArNzQ3LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICAKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0s
IGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxM
aW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0
YXRlLndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHko
KSkgewotICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAg
ICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgfQorICAgIGlmICghc3Rh
dGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0g
UmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuaAppbmRleCAyMDg4NDBlNzFmNzZhNGQ1ZDllNTc3NDVlZTY0ODY5MGZmN2FkNDM1Li5iZGY1
YzdmMmU3YzY4OTNmMWE5NTlmMjJmZmY4OTU1ODUwZGYyYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7
CiAgICAgTGlzdFR5cGUgbV9saXN0OwogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zdHVi
Um91dGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvPiBtX3dhdGNocG9pbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8V3JpdGVCYXJy
aWVyPEpTQ2VsbD4+PiBtX3dlYWtSZWZlcmVuY2VzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKIH07CiAKIHN0cnVjdCBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IGFiNDJkMjRjMTI2MGFhNDhiZTFlMGMz
MWUwM2Y2ZTA5ZTZhNGI0M2IuLmNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZh
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKLSAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVBy
b3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkKICAgICAsIG1fYWRkaXRpb25hbFNldChhZGRpdGlvbmFsU2V0KQogewog
ICAgIG1fdmlhUHJveHkgPSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAg
ICAgQVNTRVJUKHR5cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0
ZXIgfHwgdHlwZSA9PSBSZXBsYWNlKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxT
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAppbmRleCAzY2JiZTcx
YjlhYTM1MzM3MDU0ODhlOGJiYmM4NmM4NGJhMWE1YmQ1Li5kYzM5ZTI2Y2EyZjRiMmI3YWJhMTJi
NWE1NWYzMjY2NDQxMGVmYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUHJv
eHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBXYXRjaHBvaW50U2V0
KiBhZGRpdGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0
LmdldCgpOyB9CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAotICAgICAgICBib29sIHZpYVByb3h5ID0gZmFs
c2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBudWxscHRyLCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CisgICAgICAgIGJvb2wgdmlhUHJv
eHkgPSBmYWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1w
bChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2Ugewog
ICAgIH5Qcm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBQ
cm94eWFibGVBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisgICAgUHJveHlhYmxl
QWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+IG1fYWRkaXRpb25hbFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA2YjBiODc4Y2U3MTA4ZWIwNWE5MDI1YTE4
ZjgxNTgxOTQwMGRlNDUzLi5lNWQxMzJiNjI4NzIwMmQwZDI1NDYwZjY5YmQ1NjhjMGI0YWViMTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQo
Y29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVz
VmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBQdXRCeUlkU3RhdHVzOjpz
aHJpbmtUb0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCiB7CiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTIyOSw2ICsy
MzQsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygK
ICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1
bW1hcnkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNocmlua1RvRml0
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKQEAgLTM3MSw2ICsz
NzcsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAorICAgIHJlc3VsdC5zaHJpbmtU
b0ZpdCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQzNyw2ICs0NDQsNyBA
QCB2b2lkIFB1dEJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIG90aGVyKQog
ICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVyZ2VTbG93KCk7CiAgICAgICAgIH0KKyAgICAgICAgc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRha2VzU2xvd1BhdGg6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA4MTFjYzdm
NzBmOTk1M2JhOGYyN2Q3YzQ2MzU1MWY2MzgwMzRiZTE4Li44NzhlMjUyZGI2OWFjNTcxM2RjOGU4
ZjhiNjQ0MDAwY2FlNjMwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBjbGFzcyBQdXRCeUlkU3RhdHVz
IGZpbmFsIHsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayosIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAogICAg
IGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKICAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFZlY3RvcjxQdXRCeUlk
VmFyaWFudCwgMT4gbV92YXJpYW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKaW5kZXggZGU0OGY3NzA0ZWQ4
NjAzN2M4NDMyNTA0MjJmYzlkZDYyYmVkNWQ5Ni4uODMwN2EzNDYxYzljZTk1NTQ2MDAxMmVmNWM1
ZjMzN2U2MmFjZjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIGJvb2wg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFu
ZFZhcmlhbnQmIHZhcmlhbnQpCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3Zh
cmlhbnRzLCB2YXJpYW50KTsKIH0KIAordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNocmlu
a1RvRml0KCkKK3sKKyAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Cit9CisKIFNldFByaXZh
dGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CkBAIC0xMTMsNiArMTE4LDcgQEAgU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmUKICAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAg
IH0KIAorICAgICAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKQEAgLTE5NSw2ICsyMDEsNyBAQCB2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1
czo6bWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKICAgICAgICAgICAg
IGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBtZXJnZVNsb3coKTsKICAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOwogICAgICAg
ICByZXR1cm47CiAKICAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKaW5k
ZXggOWE4MzRmODVjYzBlYzc2OTlmZjQzOTMxZmE5ZTZmNjE1YzhmMWVlNC4uNDhlYTY3ZTQ0MmZh
NWQxYTk5OWU2NzFhZmQ3NjI5YTY1NDgyZmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtODgsNiArODgs
NyBAQCBjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgZmluYWwgewogICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKIAogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRW
YXJpYW50Jik7CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVhOTg4ZjMzN2Q0MjQzMmJhZjY2
YjMwNmYzMTQ1NS4uMjQ4NjkzNzQ3MTE3OGFkZWNkNmZiNmU5NmE3Yjk1YjE5MjdiN2U4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBs
Lmg+CkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAg
ICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7
CisgICAgdXNpbmcgU3RyaW5nT2Zmc2V0VGFibGUgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj47CiAgICAg
U3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZz
ZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggODE0ODUxNjAzNWRmZGM0YzlmYjllODNjYTg0NWUw
ZWQzZTc5NjAxNC4uODI2YmQ1NjliYjQzOWQzMzYxZmFkMjFlYTA0OGUwYmZjODZhYTQ3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSA9IGV4ZWN1
dGFibGUtPnNjcmlwdE1vZGUoKTsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVj
dXRhYmxlLT5wYXJzZU1vZGUoKSkpOwotICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNz
RmllbGRMb2NhdGlvbnMgPSBleGVjdXRhYmxlLT5jbGFzc0ZpZWxkTG9jYXRpb25zKCk7CisgICAg
YXV0byogY2xhc3NGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFibGUtPmNsYXNzRmllbGRMb2NhdGlv
bnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNl
PEZ1bmN0aW9uTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9k
ZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogCkBAIC03Myw5
ICs3Myw5IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhlY3V0YWJsZS0+cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0
YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRl
eHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNl
LCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwg
Y29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMg
PSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOwotICAgIFByaXZhdGVOYW1l
RW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUtPnBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKKyAgICBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZXhlY3V0YWJsZS0+cGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2Rl
OjpzbG9wcHkoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwg
ZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1v
ZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlv
bi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKIAog
ICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAppbmRleCAzNDNiMzM5Nzg5NGJhZjdkMjZhZmI1NGRlMzBjNjM1YWQ3YTU3
OTFjLi5kZDFiMzNjZDc2YWE3NmY2ZTg2YWJhNzIzMDg1YTJlNzRmYzUwMTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTc3LDExICsxNzgsMTEgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQogCi0gICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBQcml2YXRl
TmFtZUVudmlyb25tZW50KCk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuICZtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAg
ICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQpAQCAtMjE4LDEzICsyMTksMTMg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJpbmcg
bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwotICAgICAgICBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5
PEpTVGV4dFBvc2l0aW9uPiBtX2NsYXNzRmllbGRMb2NhdGlvbnM7CiAgICAgICAgIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OwogICAgIH07CiAK
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
PihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQogCi0gICAgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucygpIGNvbnN0CisgICAgUmVmQ291bnRlZEFycmF5
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucygpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybiAmbV9yYXJlRGF0YS0+bV9j
bGFzc0ZpZWxkTG9jYXRpb25zOwpAQCAtMjM1LDcgKzIzNiw3IEBAIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBp
ZiAoY2xhc3NGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jbGFzc0ZpZWxkTG9jYXRpb25zID0gV1RGTW92ZShj
bGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2NsYXNzRmll
bGRMb2NhdGlvbnMgPSBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KFdURk1vdmUoY2xh
c3NGaWVsZExvY2F0aW9ucykpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggYTM3ODk4OTIzN2NkNGIxZjYzYmI3ZDNkOTVjMDc2ODQ3
MmUyNWFiZC4uNWFlYmJmYWQ0ZTU5MDI3ZGZkYjg3OGViMjAyZTNiZjk5MDkyODY2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBjbGFz
cyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogICAgIC8vCiAgICAgLy8g
VGhlIGtleSBtYXkgbm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NSIEVudHJ5IGJ1dCB0aGUg
bGlzdCBpbiB0aGUgdmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRvIGJlIHVzYWJsZSBmb3Ig
T1NSIEVudHJ5LgotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5k
ZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBS
ZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKIAog
ICAgIC8vIE1hcCBlYWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NSRW50ZXIgdG8gaXRz
IHN0cmVhbSBpbmRleC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkPiBieXRl
Y29kZUluZGV4VG9TdHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5k
ZXggYmQxZDhhMDcyNjYyY2MzNTNhNDQ3YzA1YmI2ZjFlNDBlOTlkYmNiMi4uYWFlYTU4NGIwNjIw
YzRhM2UxODQ1ZWYxYmNhOTVmYTIzM2YwMTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsYW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2lsbFRyeVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5VG9UaWVyVXAoYm9v
bCB3aWxsVHJ5VG9UaWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxsVHJ5VG9UaWVyVXA7
IH0KIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiYg
dGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7
IH0KKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29kZUlu
ZGV4Pj4mIHRpZXJVcEluTG9vcEhpZXJhcmNoeSgpIHsgcmV0dXJuIG1fdGllclVwSW5Mb29wSGll
cmFyY2h5OyB9CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+JiB0aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlcygpIHsgcmV0dXJuIG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7IH0KIAogICAg
IGVudW0gU3RhZ2UgeyBQcmVwYXJpbmcsIENvbXBpbGluZywgUmVhZHksIENhbmNlbGxlZCB9OwpA
QCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UGxhbj4gewogICAgIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIG1fZ2xvYmFsUHJvcGVydGll
czsKICAgICBSZWNvcmRlZFN0YXR1c2VzIG1fcmVjb3JkZWRTdGF0dXNlczsKIAotICAgIEhhc2hN
YXA8Qnl0ZWNvZGVJbmRleCwgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+PiBtX3RpZXJVcEluTG9vcEhp
ZXJhcmNoeTsKKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRl
Y29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CiAgICAgVmVjdG9yPEJ5dGVjb2Rl
SW5kZXg+IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBTdGFnZSBtX3N0YWdl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggZmExM2Y5NWU1Y2VlZDM0ZDY2NDY4NmZjZjYzMjVj
ODc2YjljMTU1OC4uYjNhMzAzODE0YmE5NjU1MWNiYWFmZjdmNWEyMzAyMjhjOTEyNzRhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICghdGllclVwQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgV1RGTW92
ZSh0aWVyVXBDYW5kaWRhdGVzKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4udGll
clVwSW5Mb29wSGllcmFyY2h5KCkuYWRkKGVudHJ5LmtleSwgdGllclVwQ2FuZGlkYXRlcyk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0V2lsbFRyeVRvVGllclVwKHRydWUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKaW5kZXggYTM5YjE0M2Y3NzMwMTZhM2I1ZGFlYzgzNWYzMzE5
MzdlZDgzZTE5My4uMTgxYjQ5YjgwNjhiOTY1Y2I4Mzc5NThkZTBjMTZhMTBiYTEyNzlhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKQEAg
LTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgewogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBWZWN0b3I8U2VnbWVu
dCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAyPiBtX3NlZ21lbnRzOwogICAgIHVuc2lnbmVkIG1fbnVt
Qml0cyB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0pJVFN0dWJSb3V0aW5lU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0
dWJSb3V0aW5lU2V0LmNwcAppbmRleCBhOTFlOTg4YjE4OTViNWZlNGY4MWRhNzc3OTJiMTNiNWI0
OTMyMzNlLi4yN2M0ZTZiOGUwYWIwNGRkZTZmMmZlYTFjZTA3ZWIzYzUzYjM4Zjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0
aXNvbmVkU3R1YlJvdXRpbmVzKCkKICAgICAgICAgfQogICAgICAgICByb3V0aW5lLnJvdXRpbmUt
PmRlbGV0ZUZyb21HQygpOwogICAgIH0KLSAgICBtX3JvdXRpbmVzLnNocmluayhkc3RJbmRleCk7
CisgICAgbV9yb3V0aW5lcy5zaHJpbmtDYXBhY2l0eShkc3RJbmRleCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmgKaW5kZXggNzIwMWVlMWNmMzFlNTI2YzdjNzQ1MDA1ZjNlYWU1YjRl
MmFjOTk5YS4uYTZkZTJhNGM3NjhiZTExODkwZDY3Mjk0ZDRkNzMxZWJjNzcyY2Y3NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaApAQCAt
MzUsNiArMzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHZvaWQgc2hy
aW5rVG9GaXQoKQorICAgIHsKKyAgICAgICAgYXJncy5zaHJpbmtUb0ZpdCgpOworICAgIH0KKwog
ICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmdzOwogICAgIHVuc2lnbmVkIG51bUxvY2FscyB7
IFVJTlRfTUFYIH07CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7IFVJTlRfTUFYIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApp
bmRleCA0NmFhMDM5ZmM3NGZlMGE2ZTY0YzNlYzE0ZWY5NjEzZTdlOGI1M2I5Li41OGQ4NjRkNzg4
YjcyMGFiMjA1M2FiZTliMjg3OGFhOTE4YzllMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05Niw3ICs5Nyw3IEBA
IGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90Vmlz
aXRvciYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxs
Pj4gbV9jZWxsczsKKyAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1f
Y2VsbHM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oCmluZGV4IGZhN2I3ZWI2ZWZhZTBlY2MyYjcyZDU5ZTU1ZjRlMWYxZDZjYmQzOWMuLjZj
MTNmMTI2MzBhMWI1OTYyOWRkOTkyYTQ5ZjNjN2FjYjhkZGIzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKQEAg
LTEwOSw3ICsxMDksNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSBmaW5hbCA6
IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2Jq
ZWN0c0ludGVybmFsKEFic3RyYWN0U2xvdFZpc2l0b3ImKSBmaW5hbDsKICAgICB2b2lkIG1hcmtS
ZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIGZpbmFsOwogCi0gICAgVmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+LCAyPiBtX3ZhcmlhbnRzOworICAgIFJlZkNvdW50ZWRBcnJh
eTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV92YXJpYW50czsKICAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxO
b2RlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBmZjU5YTBm
YjVmOGNjYmFhZjVkMmQzYTA5YTRlMTIwMDIxMjBiMjE2Li44YTk2YWJlODVlZGVmYmExNTUxMDky
NzQ2N2Q2YTM5OTllMTM1NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKIAogICAgICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5pc1Vuc2V0KCkgPyBpbnZhbGlkT2Zmc2V0
IDogc2xvdC5jYWNoZWRPZmZzZXQoKTsKIApAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRlKGdsb2Jh
bE9iamVjdCwgYmFzZUNlbGwsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
cm90b3R5cGVBY2Nlc3NDaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJhc2VT
dHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSA9PSBv
ZmZzZXQpOwpAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlm
IChwdXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJh
c2VDZWxsLCBudWxscHRyKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jawogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vz
c0NoYWluOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0No
YWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtNzI2LDcgKzcyNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAg
ICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNo
ZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSkgewogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlv
blNldDsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOworICAgICAgICAgICAgICAgIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIGRvIHRoaXMgZXZlbiBpZiB3ZSdyZSBhIHNlbGYgY3VzdG9tLCBzaW5jZSB3
ZSBtdXN0IGRpc2FsbG93IGRpY3Rpb25hcmllcwogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
d2UgbmVlZCB0byBiZSBpbmZvcm1lZCBpZiB0aGUgY3VzdG9tIGdvZXMgYXdheSBzaW5jZSB3ZSBj
YWNoZSB0aGUgY29uc3RhbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jawogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9IGJhc2VWYWx1ZSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2xv
dC5pc0NhY2hlYWJsZVNldHRlcigpKTsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwog
ICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlKSB7CkBA
IC03NjYsNyArNzY2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6dHJ5Q3JlYXRl
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwpAQCAtOTIwLDcgKzkyMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CisgICAgICAg
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgaWYg
KHdhc0ZvdW5kKSB7CiAgICAgICAgICAgICBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBhY3Rp
b25Gb3JDZWxsKHZtLCBiYXNlKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRy
eUNhY2hlTGF0ZXI7CiAKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5
UHJvdG8pIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgYmFzZSwgc2xvdCk7CisgICAg
ICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hh
aW46OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJh
c2VTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSktPmdldCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSA9
PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CiAKICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykg
ewotICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOworICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OnRyeUNyZWF0ZShn
bG9iYWxPYmplY3QsIGJhc2UsIHNsb3QpOwogICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCAzNDAzOWE1ZjhiMGJjYjI2ZmI2MDU1MzNmN2Y4MjVkOGU5ZGI1OWI5Li5lOTkzOTRk
Y2Y4ZDg0NDBjNTVmYmI2ZjM2NjcyZmM2ZTJiMDdlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBKU1Rva2VuOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+Ci1FeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3Vs
dCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKK0V4cGVjdGVkPHR5cGVuYW1lIFBh
cnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250
ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzKQogewogICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0
PFZNJj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291
cmNlKSk7CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgp
OwpAQCAtMzE4MCw3ICszMTgwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Q2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0
aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+JiBjbGFzc0ZpZWxkTG9jYXRpb25zKQordGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4mIGNsYXNzRmllbGRMb2NhdGlvbnMp
CiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVh
dGVTb3VyY2VFbGVtZW50cygpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc0NsYXNzU2NvcGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM5NTFhMDFlODhmOGU2
YTVlYjkxNzllMjM5OGNmMmM5NGE1MTFlMzIuLjc2OGQ3M2RiN2JiMzAxMzIxMjNkYjY4NjFlNDQ3
YTkzMGVmNzA2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtOTkxLDcgKzk5Miw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgflBhcnNlcigp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqID0g
bnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVu
dGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRp
b24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTE1MTEsNyAr
MTUxMiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlczsK
ICAgICAgICAgaW50IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4cGVjdGVkPFBhcnNlSW5u
ZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiosIGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICBFeHBlY3RlZDxQYXJzZUlu
bmVyUmVzdWx0LCBTdHJpbmc+IHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24sIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CiAKICAgICAvLyBV
c2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVu
Y3Rpb25NZXRhZGF0YU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NDIs
NyArMTc0Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VF
bGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIHBhcnNlQXN5bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0aWFs
aXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIHBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
LCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
VHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGly
ZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmll
ciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBudWxscHRy
KTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsK
QEAgLTIxMjcsNyArMjEyOCw3IEBAIGNsYXNzIFBhcnNlciB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9y
LCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKK3N0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2Vy
RXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4
dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVByaXZhdGVOYW1lcywgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPiogY2xh
c3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNn
OwpAQCAtMjIyOCw3ICsyMjI5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0
ciwKICAgICBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVO
YW1lcyA9IG51bGxwdHIsCi0gICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NG
aWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCisgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4
dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFk
MjExYzhjYzJlYS4uNTZkMWFhZDY3ZThhNjA0NzczNzE3Zjg2OWIyNTI2NGNiZmZmZjJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9v
ZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdJbXBsLmg+CiAKQEAgLTY2OSwxMCArNjcwLDEwIEBAIGNsYXNzIENhY2hlZFBhaXIg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PHN0ZDo6cGFpcjxTb3VyY2VUeXBlPEZpcnN0PiwgU291cmNl
VHlwZTxTCiAgICAgU2Vjb25kIG1fc2Vjb25kOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEFyZyA9IERlZmF1bHRIYXNoPFNvdXJjZVR5
cGU8S2V5Pj4sIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8U291cmNlVHlwZTxL
ZXk+PiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPFZh
bHVlPj4+Ci1jbGFzcyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0
PEhhc2hNYXA8U291cmNlVHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPiwgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxL
ZXk+PiwgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+
LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+
PiwgdHlwZW5hbWUgVGFibGVUcmFpdHMgPSBXVEY6Okhhc2hUYWJsZVRyYWl0cz4KK2NsYXNzIENh
Y2hlZEhhc2hNYXAgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8SGFzaE1hcDxTb3VyY2VU
eXBlPEtleT4sIFNvdXJjZVR5cGU8VmFsdWU+LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgVGFibGVUcmFpdHM+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlw
ZW5hbWUgVj4KLSAgICB1c2luZyBNYXAgPSBIYXNoTWFwPEssIFYsIEhhc2hBcmcsIEtleVRyYWl0
c0FyZywgTWFwcGVkVHJhaXRzQXJnPjsKKyAgICB1c2luZyBNYXAgPSBIYXNoTWFwPEssIFYsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0cz47CiAKIHB1
YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNYXA8U291cmNl
VHlwZTxLZXk+LCBTb3VyY2VUeXBlPFZhbHVlPj4mIG1hcCkKQEAgLTY5Niw2ICs2OTcsOSBAQCBj
bGFzcyBDYWNoZWRIYXNoTWFwIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PEhhc2hNYXA8
U291cmNlVHlwZTxLZXk+LCBTb3VyYwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRQYWlyPEtleSwg
VmFsdWU+PiBtX2VudHJpZXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8U291cmNlVHlwZTxLZXk+Piwg
dHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxTb3VyY2VUeXBlPEtleT4+LCB0eXBl
bmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFNvdXJjZVR5cGU8VmFsdWU+Pj4KK3Vz
aW5nIENhY2hlZE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcCA9IENhY2hl
ZEhhc2hNYXA8S2V5LCBWYWx1ZSwgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNB
cmcsIFdURjo6TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoVGFibGVUcmFpdHM+
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgQ2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxC
YXNlIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PFQ+IHsKIHB1YmxpYzoKQEAgLTkxMCw3
ICs5MTQsNyBAQCBjbGFzcyBDYWNoZWRTdHJpbmdKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIENh
Y2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFN0cmluZ0ltcGw+LCBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZTo6IE9mZnNldExvY2F0aW9uPiBtX29mZnNldFRhYmxlOworICAgIENhY2hlZE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVk
U3RyaW5nSW1wbD4sIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbj4gbV9v
ZmZzZXRUYWJsZTsKIH07CiAKIGNsYXNzIENhY2hlZEJpdFZlY3RvciA6IHB1YmxpYyBWYXJpYWJs
ZUxlbmd0aE9iamVjdDxCaXRWZWN0b3I+IHsKQEAgLTE3NzYsNiArMTc4MCw3IEBAIGNsYXNzIENh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxp
bmtlZEZ1bmN0aW9uRXhlCiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNv
ZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CisgICAgICAgIG1fY2xhc3NGaWVsZExvY2F0aW9ucy5lbmNvZGUoZW5jb2RlciwgcmFyZURh
dGEubV9jbGFzc0ZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogICAgIH0KIApAQCAtMTc4NCw2ICsxNzg5LDcgQEAgY2xhc3MgQ2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVu
Y3Rpb25FeGUKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBy
YXJlRGF0YSA9IG5ldyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9Owog
ICAgICAgICBtX2NsYXNzU291cmNlLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1Nv
dXJjZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIs
IHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9jbGFzc0Zp
ZWxkTG9jYXRpb25zLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc0ZpZWxkTG9jYXRp
b25zKTsKICAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKICAgICAgICAg
cmV0dXJuIHJhcmVEYXRhOwogICAgIH0KQEAgLTE3OTEsNiArMTc5Nyw3IEBAIGNsYXNzIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlCiBwcml2YXRlOgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlk
ZXIgbV9jbGFzc1NvdXJjZTsKICAgICBDYWNoZWRSZWZQdHI8Q2FjaGVkVERaRW52aXJvbm1lbnRM
aW5rPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENhY2hlZFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25zOwogICAgIENhY2hlZFByaXZhdGVOYW1lRW52
aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDJjMTQ5ZmE3MjYyMGJhY2EzZGFhMjIyODJkODdi
ZTc5ZTVlODkwNTkuLjlmMzIxOTM0NTY4MDk1ZDM5ZDE5ZDc5ZDcwNTIwNmM0Zjk1MmM5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTExMjcsNiArMTEyNyw3IEBAIHZv
aWQgVk06OnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnRpbChDYWxsRnJhbWUqIHRhcmdl
dCkKICAgICAvLyBXZSBoYXZlIHRvIHdvcnJ5IGFib3V0IG1pZ3JhdGluZyBmcm9tIGFub3RoZXIg
dGhyZWFkIHNpbmNlIHRoZXJlIG1heSBiZSBubyBjaGVja3BvaW50cyBpbiBvdXIgdGhyZWFkIGJ1
dCBvbmUgaW4gdGhlIG90aGVyIHRocmVhZHMuCiAgICAgd2hpbGUgKG1fY2hlY2twb2ludFNpZGVT
dGF0ZS5zaXplKCkgJiYgYm91bmRzLmNvbnRhaW5zKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5sYXN0
KCktPmFzc29jaWF0ZWRDYWxsRnJhbWUpKQogICAgICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUu
dGFrZUxhc3QoKTsKKyAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0K
IAogdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDY4MDg3
ZTU1MGViNjA3ODVmMTQyMjgwY2RkNDIyYTViM2VmZDA3MzYuLjg3MDM1YTIyYjFmNTBlNDljNWE1
NDY4YTFjNWE5MzM5MTM4NmM0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtODQsOCArODQsOCBAQCB2
b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29k
ZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVsZUlu
Zm9ybWF0aW9uKCkudGFibGVDb3VudCgpOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGFibGVzW2ldKTsKKyAgICBmb3IgKGF1dG8mIHRhYmxlIDogdGhpc09iamVj
dC0+bV90YWJsZXMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRhYmxlKTsKICAgICB2aXNpdG9y
LnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlLT5leHRyYU1l
bW9yeUFsbG9jYXRlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVj
dC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJp
ZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rpb25zJyBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGNiY2ViNTAwMTczM2NhMzMw
ZGQ4MmY4YWM1YjdjOTU3ZTU2YzM1ZTYuLmQ0NjJlN2Q5OWE1ZWEzNzZkYWIwZDMxNmVkOGZkY2Vl
ZmRjYmMzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2FzbUNy
ZWF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIldhc21JbnN0YW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0xMTUsNyArMTE2LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2Vt
Ymx5TWVtb3J5PiBtX21lbW9yeTsKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlUYWJsZT4+IG1fdGFibGVzOworICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291cmNlL1dURi93
dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMxMzhiMjYyMDEwMzQ5OTA3YzI1Njlm
ZWMyZGIxNGExYy4uZTdjYjAyNTE3YWUwYjMzZWQ4ZjIyNjQ0ZmQzNzY4NDZmZjUxMDExOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUwLDExIEBAIGNsYXNzIFJlZkNvdW50
ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3RydWN0b3JUYWcgeyBDb21tb25Db3B5
Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yID0gVCo7CisgICAg
dXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAgICB1c2luZyByZXZlcnNlX2l0ZXJh
dG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgICB1c2luZyBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPjsK
KwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsKICAgICAKICAgICBSZWZDb3VudGVk
QXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikKQEAgLTE2OSw4ICsxNzQsOCBAQCBj
bGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQogICAgIAogICAgIFQqIGRhdGEoKSB7IHJldHVybiBQ
dHJUcmFpdHM6OnVud3JhcChtX2RhdGEpOyB9Ci0gICAgVCogYmVnaW4oKSB7IHJldHVybiBkYXRh
KCk7IH0KLSAgICBUKiBlbmQoKQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gZGF0YSgp
OyB9CisgICAgaXRlcmF0b3IgZW5kKCkKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzksOCArMTg0LDEzIEBAIGNsYXNzIFJlZkNvdW50ZWRB
cnJheSB7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBj
b25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5kYXRhKCk7IH0KLSAgICBjb25zdCBU
KiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhp
cyktPmJlZ2luKCk7IH0KLSAgICBjb25zdCBUKiBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5lbmQoKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlz
KS0+YmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9CisKKyAgICByZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Cisg
ICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2lu
KCkpOyB9CiAgICAgCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>