<?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>206846</bug_id>
          
          <creation_ts>2020-01-27 14:53:19 -0800</creation_ts>
          <short_desc>[JSC] Give up IC when unknown structure transition happens</short_desc>
          <delta_ts>2020-01-29 15:02:41 -0800</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>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1611627</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-27 14:53:19 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611629</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-27 14:54:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/58091768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611632</commentid>
    <comment_count>2</comment_count>
      <attachid>388919</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-27 14:55:54 -0800</bug_when>
    <thetext>Created attachment 388919
Patch

EWS stressing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611668</commentid>
    <comment_count>3</comment_count>
      <attachid>388929</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-27 15:43:19 -0800</bug_when>
    <thetext>Created attachment 388929
Patch

EWS stressing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612285</commentid>
    <comment_count>4</comment_count>
      <attachid>389096</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-28 17:46:37 -0800</bug_when>
    <thetext>Created attachment 389096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612294</commentid>
    <comment_count>5</comment_count>
      <attachid>389099</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-28 18:23:57 -0800</bug_when>
    <thetext>Created attachment 389099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612310</commentid>
    <comment_count>6</comment_count>
      <attachid>389099</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-28 20:26:44 -0800</bug_when>
    <thetext>Comment on attachment 389099
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        When we are creating Put IC for new property, we grab old Structure before performing put.
&gt; +        Our custom ::put has convention that implemented ::put mark PutPropertySlot non-cachable
&gt; +        appropriately so that IC can work correctly. If we miss this, semantic failure can happen.
&gt; +        This patch hardens this semantic failure case by giving up IC when newStructure calculated
&gt; +        from oldStructure does not match against the actual structure.

I suggest a few edits for clarity:

When we are creating Put IC for a new property, we grab the old Structure before performing the put.
For a custom ::put, our convention is that the implemented ::put should mark the PutPropertySlot 
as non-cachable.  The IC code relies on this in order to work correctly.  If we didn&apos;t mark it as non-cacheable,
a semantic failure can happen.  This patch hardens the code against this semantic failure case by giving up
trying to cache the IC when the newStructure calculated from oldStructure does not match against the actual 
structure after the put operation.

&gt; Source/WebCore/ChangeLog:10
&gt; +        when it implements custom ::put operation which has side-effect regardless of Structure. IC could be setup
&gt; +        and IC can do fast path without consulting to custom ::put operation.

&quot;Structure. IC could be setup&quot; =&gt; &quot;Structure. Otherwise, IC can be setup&quot;
&quot;without consulting to custom&quot; =&gt; &quot;&quot;without consulting the custom&quot;

&gt; Source/JavaScriptCore/jit/Repatch.cpp:615
&gt; +                // If JSObject::put is overridden by UserObject, UserObject::put performs side-effect on JSObject::put, and it forget making PutPropertySlot non-cachaeble,
&gt; +                // then arbitrary structure transitions can happen during the put operation, and this generates wrong transition information here, oldStructure -&gt; newStructure,
&gt; +                // while the reality is oldStructure -&gt; something unknown structures -&gt; baseValue&apos;s structure. We should check, and give up to guard against the incorrect embedder&apos;s
&gt; +                // UserObject::put implementation.

Some suggestions:

&quot;it forget making PutPropertySlot&quot; =&gt; &quot;it neglects to mark the PutPropertySlot as&quot;
&quot;wrong transition information here, oldStructure -&gt; newStructure&quot; =&gt; &quot;wrong transition information here as if oldStructure -&gt; newStructure.&quot;
&quot;while the reality is&quot; =&gt; &quot;In reality, the transition is&quot;
&quot;We should check, and give up to guard against the incorrect embedder&apos;s UserObject::put implementation.&quot; =&gt; &quot;To guard against the embedder&apos;s potentially incorrect UserObject::put implementation, we should check for this condition and if found, give up on caching the put.&quot;

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2304
&gt; +    auto* dollarVM = jsDynamicCast&lt;JSDollarVM*&gt;(vm, callFrame-&gt;thisValue());
&gt; +    if (!dollarVM)
&gt; +        return JSValue::encode(jsNull());

Do you expect the function to be called with a this value that is not $vm?  I&apos;m guessing you&apos;re trying to prevent unauthorized use of this function.  I think you don&apos;t need this.  The DollarVMAssertScope above already ensures that JSC_useDollarVM is true, i.e. the client has authorization to call this function.  Since tests that call this function are always well-formed, we don&apos;t need this check.  Though if you want to keep it, that&apos;s fine too.

&gt; JSTests/stress/ensure-crash.js:1
&gt; +//@ crash!

I suggest adding a //@ runDefault line before this.  There&apos;s no point in running this test on all flavors.  We just need to check it once, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612521</commentid>
    <comment_count>7</comment_count>
      <attachid>389099</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-29 09:59:06 -0800</bug_when>
    <thetext>Comment on attachment 389099
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +        from oldStructure does not match against the actual structure.
&gt; 
&gt; I suggest a few edits for clarity:
&gt; 
&gt; When we are creating Put IC for a new property, we grab the old Structure before performing the put.
&gt; For a custom ::put, our convention is that the implemented ::put should mark the PutPropertySlot 
&gt; as non-cachable.  The IC code relies on this in order to work correctly.  If we didn&apos;t mark it as non-cacheable,
&gt; a semantic failure can happen.  This patch hardens the code against this semantic failure case by giving up
&gt; trying to cache the IC when the newStructure calculated from oldStructure does not match against the actual 
&gt; structure after the put operation.

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        and IC can do fast path without consulting to custom ::put operation.
&gt; 
&gt; &quot;Structure. IC could be setup&quot; =&gt; &quot;Structure. Otherwise, IC can be setup&quot;
&gt; &quot;without consulting to custom&quot; =&gt; &quot;&quot;without consulting the custom&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:615
&gt;&gt; +                // UserObject::put implementation.
&gt; 
&gt; Some suggestions:
&gt; 
&gt; &quot;it forget making PutPropertySlot&quot; =&gt; &quot;it neglects to mark the PutPropertySlot as&quot;
&gt; &quot;wrong transition information here, oldStructure -&gt; newStructure&quot; =&gt; &quot;wrong transition information here as if oldStructure -&gt; newStructure.&quot;
&gt; &quot;while the reality is&quot; =&gt; &quot;In reality, the transition is&quot;
&gt; &quot;We should check, and give up to guard against the incorrect embedder&apos;s UserObject::put implementation.&quot; =&gt; &quot;To guard against the embedder&apos;s potentially incorrect UserObject::put implementation, we should check for this condition and if found, give up on caching the put.&quot;

Looks nice, fixed.

&gt;&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2304
&gt;&gt; +        return JSValue::encode(jsNull());
&gt; 
&gt; Do you expect the function to be called with a this value that is not $vm?  I&apos;m guessing you&apos;re trying to prevent unauthorized use of this function.  I think you don&apos;t need this.  The DollarVMAssertScope above already ensures that JSC_useDollarVM is true, i.e. the client has authorization to call this function.  Since tests that call this function are always well-formed, we don&apos;t need this check.  Though if you want to keep it, that&apos;s fine too.

Or, we can just put RELEASE_ASSERT here. Fixed.

&gt;&gt; JSTests/stress/ensure-crash.js:1
&gt;&gt; +//@ crash!
&gt; 
&gt; I suggest adding a //@ runDefault line before this.  There&apos;s no point in running this test on all flavors.  We just need to check it once, right?

No, we have the same bug in LLInt and Baseline. So we should execute useLLInt=false and LLInt case at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612525</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-29 10:07:45 -0800</bug_when>
    <thetext>Committed r255365: &lt;https://trac.webkit.org/changeset/255365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612685</commentid>
    <comment_count>9</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-29 14:33:08 -0800</bug_when>
    <thetext>It looks like this change could have caused 32 JSC failures:
https://build.webkit.org/builders/Apple-Catalina-Debug-JSC-Tests/builds/223

stdio:
https://build.webkit.org/builders/Apple-Catalina-Debug-JSC-Tests/builds/223/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612711</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-29 15:02:41 -0800</bug_when>
    <thetext>Committed r255390: &lt;https://trac.webkit.org/changeset/255390&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388919</attachid>
            <date>2020-01-27 14:55:54 -0800</date>
            <delta_ts>2020-01-27 15:43:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206846-20200127145553.patch</filename>
            <type>text/plain</type>
            <size>12411</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTQxZTQwMDg3Y2EwYjczYjk1M2NhZGQ1YjBlZDhlYTczYjAzZjU1Li40NDA2NjNiNjg0ODhhNmZh
Y2MwMTk0ODZlMTgzZDUxMGJkMTg5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wMS0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEdpdmUgdXAgSUMgd2hlbiB1bmtub3duIHN0cnVjdHVyZSB0cmFu
c2l0aW9uIGhhcHBlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKToKKwogMjAyMC0wMS0yNyAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZW1vdmUgaW50ZXJuYWwgZmllbGRzIGluIHByb21pc2UgYXNzZXJ0aW9uIGZv
ciAzMmJpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGQxM2Q2ZDVm
N2ZkNzgwMTFkNzY2MjQyZWQ5OTAxMzNkOGRkZjUzZDIuLjVmNTgxNTU3NDE3M2FlOWFiMDFlNzcz
MjJkZWM3YTZlMzY1NDkwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIGFwcHJvcHJp
YXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wCiAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAotc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3N0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgcmVzdWx0OwpAQCAtNTU2LDEyICs1NTYsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydGVyIGhlcmUuLi4KLSAgICAgICAg
aWYgKGlzQ29weU9uV3JpdGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCisgICAgICAgIGlm
IChpc0NvcHlPbldyaXRlKG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIC8vIFdlIGNhbid0IGVuZCB1cCBzdG9y
aW5nIHRvIGEgQ29XIG9uIHRoZSBwcm90b3R5cGUgc2luY2UgaXQgc2hvdWxkbid0IG93biBwcm9w
ZXJ0aWVzLgogICAgICAgICBBU1NFUlQoIWlzQ29weU9uV3JpdGUoc2xvdC5iYXNlKCktPmluZGV4
aW5nTW9kZSgpKSk7CiAKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNB
cmVDYWNoZWFibGUoKSkKKyAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwpAQCAtNTc1LDQzICs1
NzUsNDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAvLyB0byBk
aXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJ
QyBkb2VzIG5vdAogICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5
cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQogICAgICAgICAg
ICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgPT0gc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSh2bSkgPT0gb2xkU3RydWN0dXJlKTsKIAotICAgICAgICAgICAgICAgIHN0cnVj
dHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNl
bWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAogICAgICAg
ICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmNhbkdlbmVyYXRlU2VsZlByb3BlcnR5UmVw
bGFjZShzdHViSW5mbywgc2xvdC5jYWNoZWRPZmZzZXQoKSkKLSAgICAgICAgICAgICAgICAgICAg
JiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICYmICFvbGRTdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgewogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBn
ZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJl
cGxhY2Uoc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2Vu
ZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGlu
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2Vs
ZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFz
ZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5
SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2Uo
KSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHBy
b3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKGNvZGVCbG9jaywg
c3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBBY2Nlc3NDYXNlOjpSZXBsYWNlLCBpZGVudCwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBj
b2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlJlcGxhY2UsIGlkZW50LCBzbG90LmNhY2hlZE9mZnNldCgp
LCBvbGRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgICAg
ICBpZiAoIW9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVu
RmxhdHRlbmVkQmVmb3JlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4oYmFzZVZhbHVlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBvbGQgc3RydWN0dXJlIGlzIGRpY3Rpb25hcnksIGl0IG1l
YW5zIHRoYXQgdGhpcyBpcyBvbmUtb24tb25lIGJldHdlZW4gYW4gb2JqZWN0IGFuZCBhIHN0cnVj
dHVyZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIE5ld1Byb3BlcnR5IG9wZXJhdGlv
biwgZ2VuZXJhdGluZyBJQyBmb3IgdGhpcyBkb2VzIG5vdCBvZmZlciBhbnkgYmVuZWZpdCBiZWNh
dXNlIHRoaXMgdHJhbnNpdGlvbiBuZXZlciBoYXBwZW5zIGFnYWluLgorICAgICAgICAgICAgICAg
IC8vIExldCdzIGp1c3QgZ2l2ZSB1cC4KKyAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7CiAKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoc3RydWN0dXJlLCBpZGVudC5p
bXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSksIG9m
ZnNldCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHko
b2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6Tm9uZSksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1
Y3R1cmUgfHwgIW5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAgICAgICAg
ICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgIC8vIElmIEpTT2JqZWN0OjpwdXQgaXMgb3ZlcnJpZGRlbiBieSBVc2VyT2Jq
ZWN0LCBVc2VyT2JqZWN0OjpwdXQgcGVyZm9ybXMgc2lkZS1lZmZlY3Qgb24gSlNPYmplY3Q6OnB1
dCwgYW5kIGl0IGZvcmdldCBtYWtpbmcgUHV0UHJvcGVydHlTbG90IG5vbi1jYWNoYWVibGUsCisg
ICAgICAgICAgICAgICAgLy8gdGhlbiBhcmJpdHJhcnkgc3RydWN0dXJlIHRyYW5zaXRpb25zIGNh
biBoYXBwZW4gZHVyaW5nIHRoZSBwdXQgb3BlcmF0aW9uLCBhbmQgdGhpcyBnZW5lcmF0ZXMgd3Jv
bmcgdHJhbnNpdGlvbiBpbmZvcm1hdGlvbiBoZXJlLCBvbGRTdHJ1Y3R1cmUgLT4gbmV3U3RydWN0
dXJlLAorICAgICAgICAgICAgICAgIC8vIHdoaWxlIHRoZSByZWFsaXR5IGlzIG9sZFN0cnVjdHVy
ZSAtPiBzb21ldGhpbmcgdW5rbm93biBzdHJ1Y3R1cmVzIC0+IGJhc2VWYWx1ZSdzIHN0cnVjdHVy
ZS4gV2Ugc2hvdWxkIGNoZWNrLCBhbmQgZ2l2ZSB1cCB0byBndWFyZCBhZ2FpbnN0IHRoZSBpbmNv
cnJlY3QgZW1iZWRkZXIncworICAgICAgICAgICAgICAgIC8vIFVzZXJPYmplY3Q6OnB1dCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkgIT0gbmV3U3RydWN0dXJlKTsKKworICAgICAgICAgICAgICAg
IEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAg
ICAgICAgCkBAIC02MzUsNyArNjQwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5l
d0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwg
c3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBz
bG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlQ3VzdG9tKCkpIHsKQEAgLTY1NywxNCArNjYyLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhp
dEN1c3RvbSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIHNs
b3QuYmFzZSgpLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25T
ZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgc2xvdC5pc0N1c3RvbUFjY2Vzc29yKCkg
PyBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nlc3NvclNldHRlciA6IEFjY2Vzc0Nhc2U6OkN1c3RvbVZh
bHVlU2V0dGVyLCBzdHJ1Y3R1cmUsIGlkZW50LAorICAgICAgICAgICAgICAgICAgICB2bSwgY29k
ZUJsb2NrLCBzbG90LmlzQ3VzdG9tQWNjZXNzb3IoKSA/IEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vz
c29yU2V0dGVyIDogQWNjZXNzQ2FzZTo6Q3VzdG9tVmFsdWVTZXR0ZXIsIG9sZFN0cnVjdHVyZSwg
aWRlbnQsCiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRPZmZzZXQsIGNvbmRpdGlvblNldCwg
V1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbiksIHNsb3QuY3VzdG9tU2V0dGVyKCksIHNsb3Qu
YmFzZSgpICE9IGJhc2VWYWx1ZSA/IHNsb3QuYmFzZSgpIDogbnVsbHB0cik7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNv
bmRpdGlvblNldDsKQEAgLTY4Niw3ICs2OTEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgb2xkU3RydWN0dXJlLCBzbG90
LmJhc2UoKSwgaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29u
ZGl0aW9uU2V0LmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKIApAQCAtNjk4LDE2ICs3MDMsMTYgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICB2bSwgY29k
ZUJsb2NrLCBBY2Nlc3NDYXNlOjpTZXR0ZXIsIHN0cnVjdHVyZSwgaWRlbnQsIG9mZnNldCwgY29u
ZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlNldHRlciwgb2xkU3RydWN0dXJlLCBp
ZGVudCwgb2Zmc2V0LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIExPR19JQygoSUNFdmVudDo6
UHV0QnlJZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlk
QWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFz
ZSgpID09IGJhc2VWYWx1ZSkpOwogICAgICAgICAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgaWRlbnQsIFdURk1vdmUobmV3Q2FzZSkp
OwogCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewotICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CisgICAgICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKQEAgLTcy
MCwxMSArNzI1LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgcmV0dXJuIHJlc3Vs
dC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9
CiAKLXZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQordm9p
ZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xv
dCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlm
ICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBP
bkNhY2hlKQorICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBw
dXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVH
ZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNWE2MTIxM2QzYjlhZGJkODBh
MjRlNTMwOTBkNzM5YmQyM2IzMTQ4MS4uM2UxNGY4YjZhMzNiZWRkY2NmMGViYTFkMmYyOTFiNzc1
ODc5NGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC03NTIsNiArNzUyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBjaGVja09mZnNl
dENvbnNpc3RlbmN5KCk7CiAgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKKyAgICBBU1NFUlQo
b2JqZWN0LT5zdHJ1Y3R1cmUodm0pID09IHRoaXMpOwogICAgIAogICAgIEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrLCB2bS5oZWFwKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388929</attachid>
            <date>2020-01-27 15:43:19 -0800</date>
            <delta_ts>2020-01-28 17:46:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206846-20200127154318.patch</filename>
            <type>text/plain</type>
            <size>12328</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTQxZTQwMDg3Y2EwYjczYjk1M2NhZGQ1YjBlZDhlYTczYjAzZjU1Li40NDA2NjNiNjg0ODhhNmZh
Y2MwMTk0ODZlMTgzZDUxMGJkMTg5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wMS0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEdpdmUgdXAgSUMgd2hlbiB1bmtub3duIHN0cnVjdHVyZSB0cmFu
c2l0aW9uIGhhcHBlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKToKKwogMjAyMC0wMS0yNyAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZW1vdmUgaW50ZXJuYWwgZmllbGRzIGluIHByb21pc2UgYXNzZXJ0aW9uIGZv
ciAzMmJpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGQxM2Q2ZDVm
N2ZkNzgwMTFkNzY2MjQyZWQ5OTAxMzNkOGRkZjUzZDIuLmVmZmVjZjNkMzdiZmE4M2ZhZDE2ODhi
YjFhYWZkZDEzNzE5MTQ2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIGFwcHJvcHJp
YXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wCiAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAotc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3N0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgcmVzdWx0OwpAQCAtNTU2LDEyICs1NTYsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydGVyIGhlcmUuLi4KLSAgICAgICAg
aWYgKGlzQ29weU9uV3JpdGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCisgICAgICAgIGlm
IChpc0NvcHlPbldyaXRlKG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIC8vIFdlIGNhbid0IGVuZCB1cCBzdG9y
aW5nIHRvIGEgQ29XIG9uIHRoZSBwcm90b3R5cGUgc2luY2UgaXQgc2hvdWxkbid0IG93biBwcm9w
ZXJ0aWVzLgogICAgICAgICBBU1NFUlQoIWlzQ29weU9uV3JpdGUoc2xvdC5iYXNlKCktPmluZGV4
aW5nTW9kZSgpKSk7CiAKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNB
cmVDYWNoZWFibGUoKSkKKyAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwpAQCAtNTc1LDQzICs1
NzUsNDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAvLyB0byBk
aXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJ
QyBkb2VzIG5vdAogICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5
cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQogICAgICAgICAg
ICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgPT0gc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSh2bSkgPT0gb2xkU3RydWN0dXJlKTsKIAotICAgICAgICAgICAgICAgIHN0cnVj
dHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNl
bWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAogICAgICAg
ICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmNhbkdlbmVyYXRlU2VsZlByb3BlcnR5UmVw
bGFjZShzdHViSW5mbywgc2xvdC5jYWNoZWRPZmZzZXQoKSkKLSAgICAgICAgICAgICAgICAgICAg
JiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICYmICFvbGRTdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgewogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBn
ZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJl
cGxhY2Uoc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2Vu
ZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGlu
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2Vs
ZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFz
ZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5
SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2Uo
KSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHBy
b3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKGNvZGVCbG9jaywg
c3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBBY2Nlc3NDYXNlOjpSZXBsYWNlLCBpZGVudCwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBj
b2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlJlcGxhY2UsIGlkZW50LCBzbG90LmNhY2hlZE9mZnNldCgp
LCBvbGRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgICAg
ICBpZiAoIW9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVu
RmxhdHRlbmVkQmVmb3JlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4oYmFzZVZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIG9sZCBzdHJ1Y3R1cmUgaXMgZGljdGlvbmFyeSwgaXQgbWVhbnMgdGhh
dCB0aGlzIGlzIG9uZS1vbi1vbmUgYmV0d2VlbiBhbiBvYmplY3QgYW5kIGEgc3RydWN0dXJlLgor
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgTmV3UHJvcGVydHkgb3BlcmF0aW9uLCBnZW5l
cmF0aW5nIElDIGZvciB0aGlzIGRvZXMgbm90IG9mZmVyIGFueSBiZW5lZml0IGJlY2F1c2UgdGhp
cyB0cmFuc2l0aW9uIG5ldmVyIGhhcHBlbnMgYWdhaW4uCisgICAgICAgICAgICAgICAgaWYgKG9s
ZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBS
ZXRyeUNhY2hlTGF0ZXI7Ci0gICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0OwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
Q29uY3VycmVudGx5KHN0cnVjdHVyZSwgaWRlbnQuaW1wbCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVjdHVyZSwgaWRlbnQuaW1wbCgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpLCBvZmZzZXQp
OwogICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlIHx8ICFuZXdTdHJ1Y3R1cmUtPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5w
cmV2aW91c0lEKCkgPT0gc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAvLyBJZiBKU09iamVj
dDo6cHV0IGlzIG92ZXJyaWRkZW4gYnkgVXNlck9iamVjdCwgVXNlck9iamVjdDo6cHV0IHBlcmZv
cm1zIHNpZGUtZWZmZWN0IG9uIEpTT2JqZWN0OjpwdXQsIGFuZCBpdCBmb3JnZXQgbWFraW5nIFB1
dFByb3BlcnR5U2xvdCBub24tY2FjaGFlYmxlLAorICAgICAgICAgICAgICAgIC8vIHRoZW4gYXJi
aXRyYXJ5IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyBjYW4gaGFwcGVuIGR1cmluZyB0aGUgcHV0IG9w
ZXJhdGlvbiwgYW5kIHRoaXMgZ2VuZXJhdGVzIHdyb25nIHRyYW5zaXRpb24gaW5mb3JtYXRpb24g
aGVyZSwgb2xkU3RydWN0dXJlIC0+IG5ld1N0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAvLyB3
aGlsZSB0aGUgcmVhbGl0eSBpcyBvbGRTdHJ1Y3R1cmUgLT4gc29tZXRoaW5nIHVua25vd24gc3Ry
dWN0dXJlcyAtPiBiYXNlVmFsdWUncyBzdHJ1Y3R1cmUuIFdlIHNob3VsZCBjaGVjaywgYW5kIGdp
dmUgdXAgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgaW5jb3JyZWN0IGVtYmVkZGVyJ3MKKyAgICAgICAg
ICAgICAgICAvLyBVc2VyT2JqZWN0OjpwdXQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pID09IG5l
d1N0cnVjdHVyZSk7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2
aW91c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW5ld1N0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIApAQCAtNjM1LDcgKzYzOSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
KHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBv
ZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7
CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC02NTcsMTQg
KzY2MSwxNCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVD
b25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNsb3Qu
YmFzZSgpLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6Tm9uZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgb2xkU3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRlbnQuaW1wbCgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIHZtLCBjb2Rl
QmxvY2ssIHNsb3QuaXNDdXN0b21BY2Nlc3NvcigpID8gQWNjZXNzQ2FzZTo6Q3VzdG9tQWNjZXNz
b3JTZXR0ZXIgOiBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZVNldHRlciwgc3RydWN0dXJlLCBpZGVu
dCwKKyAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgc2xvdC5pc0N1c3RvbUFjY2Vz
c29yKCkgPyBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nlc3NvclNldHRlciA6IEFjY2Vzc0Nhc2U6OkN1
c3RvbVZhbHVlU2V0dGVyLCBvbGRTdHJ1Y3R1cmUsIGlkZW50LAogICAgICAgICAgICAgICAgICAg
ICBpbnZhbGlkT2Zmc2V0LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pLCBzbG90LmN1c3RvbVNldHRlcigpLCBzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUgPyBzbG90
LmJhc2UoKSA6IG51bGxwdHIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CkBAIC02ODYsNyArNjkw
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0
aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRl
bnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIG9sZFN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTY5OCwx
NiArNzAyLDE2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6U2V0dGVy
LCBzdHJ1Y3R1cmUsIGlkZW50LCBvZmZzZXQsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBBY2Nl
c3NDYXNlOjpTZXR0ZXIsIG9sZFN0cnVjdHVyZSwgaWRlbnQsIG9mZnNldCwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRBZGRBY2Nlc3NDYXNlLCBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7Cisg
ICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAg
ICAgCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2Rl
QmxvY2ssIGlkZW50LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIAogICAgICAgICBpZiAocmVzdWx0Lmdl
bmVyYXRlZFNvbWVDb2RlKCkpIHsKLSAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJ
ZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFz
ZSgpID09IGJhc2VWYWx1ZSkpOworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlk
UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5i
YXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCkBAIC03MjAsMTEgKzcyNCwxMSBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jawogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZl
VXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3ZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90
LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICBpZiAodHJ5Q2FjaGVQ
dXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkK
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90
LCBwdXRLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDVhNjEyMTNkM2I5YWRiZDgwYTI0ZTUzMDkwZDczOWJkMjNiMzE0ODEuLjNl
MTRmOGI2YTMzYmVkZGNjZjBlYmExZDJmMjkxYjc3NTg3OTRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNzUyLDYgKzc1Miw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShWTSYgdm0sIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgIEFTU0VS
VChpc0RpY3Rpb25hcnkoKSk7CisgICAgQVNTRVJUKG9iamVjdC0+c3RydWN0dXJlKHZtKSA9PSB0
aGlzKTsKICAgICAKICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywg
dm0uaGVhcCk7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389096</attachid>
            <date>2020-01-28 17:46:37 -0800</date>
            <delta_ts>2020-01-28 18:23:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206846-20200128174636.patch</filename>
            <type>text/plain</type>
            <size>45712</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTk4ZDUzZmE5ZTA1MmQ1MTU5Y2E5Y2ZhY2U5NDdjOGViZGY2ZmRhLi5iOTE4ODMzYTU3ZjYzZTg5
NTM2YTRiMzdiNGYyNTc4MzlkZWNlMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMC0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEdpdmUgdXAgSUMgd2hlbiB1bmtub3duIHN0cnVjdHVyZSB0cmFu
c2l0aW9uIGhhcHBlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gd2UgYXJlIGNyZWF0aW5nIFB1dCBJQyBmb3IgbmV3IHByb3BlcnR5LCB3ZSBn
cmFiIG9sZCBTdHJ1Y3R1cmUgYmVmb3JlIHBlcmZvcm1pbmcgcHV0LgorICAgICAgICBPdXIgY3Vz
dG9tIDo6cHV0IGhhcyBjb252ZW50aW9uIHRoYXQgaW1wbGVtZW50ZWQgOjpwdXQgbWFyayBQdXRQ
cm9wZXJ0eVNsb3Qgbm9uLWNhY2hhYmxlCisgICAgICAgIGFwcHJvcHJpYXRlbHkgc28gdGhhdCBJ
QyBjYW4gd29yayBjb3JyZWN0bHkuIElmIHdlIG1pc3MgdGhpcywgc2VtYW50aWMgZmFpbHVyZSBj
YW4gaGFwcGVuLgorICAgICAgICBUaGlzIHBhdGNoIGhhcmRlbnMgdGhpcyBzZW1hbnRpYyBmYWls
dXJlIGNhc2UgYnkgZ2l2aW5nIHVwIElDIHdoZW4gbmV3U3RydWN0dXJlIGNhbGN1bGF0ZWQKKyAg
ICAgICAgZnJvbSBvbGRTdHJ1Y3R1cmUgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCB0aGUgYWN0dWFs
IHN0cnVjdHVyZS4KKworICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZU9i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyk6CisgICAgICAg
IChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNEb2xs
YXJWTTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5oOgorCiAy
MDIwLTAxLTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21l
IHdlYnNpdGUgbmVlZHMgbW9yZSBzdGFjayBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwODgxNzExOGEw
NzBjZjM1Y2I1ZDA2YWI1NThhZWU0MzE1OTBkZjdjLi4wMmE3ZGUyOGI2ZGE4NGM4ZjMyNWYzODJl
YTI1NjMzNGUzNzAwZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMjgg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBHaXZl
IHVwIElDIHdoZW4gdW5rbm93biBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBoYXBwZW5zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREwgQ29kZSBHZW5lcmF0
b3Igc2hvdWxkIHRhaW50IFB1dFByb3BlcnR5U2xvdCBvciB0YWludCBpbXBsZW1lbnRlZCBvYmpl
Y3QgdG8gYXZvaWQgUHV0IElDIGNhY2hpbmcKKyAgICAgICAgd2hlbiBpdCBpbXBsZW1lbnRzIGN1
c3RvbSA6OnB1dCBvcGVyYXRpb24gd2hpY2ggaGFzIHNpZGUtZWZmZWN0IHJlZ2FyZGxlc3Mgb2Yg
U3RydWN0dXJlLiBJQyBjb3VsZCBiZSBzZXR1cAorICAgICAgICBhbmQgSUMgY2FuIGRvIGZhc3Qg
cGF0aCB3aXRob3V0IGNvbnN1bHRpbmcgdG8gY3VzdG9tIDo6cHV0IG9wZXJhdGlvbi4KKworICAg
ICAgICBUZXN0OiBqcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorCiAyMDIwLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQjogc3BlZWQgdXAgaW5kZXggcmVjb3JkcyBkZWxl
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZDEzZDZkNWY3ZmQ3
ODAxMWQ3NjYyNDJlZDk5MDEzM2Q4ZGRmNTNkMi4uNGY0YTQyMTBmY2UwZmNjZmVjNTdlYzQyZjM3
NTk3NDg5YWRmNjM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01
MzksNyArNTM5LDcgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3AKICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCi1zdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQorc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCByZXN1bHQ7CkBAIC01NTYsMTIgKzU1NiwxMiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB0cnkgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZS4uLgotICAgICAgICBpZiAo
aXNDb3B5T25Xcml0ZShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgaWYgKGlz
Q29weU9uV3JpdGUob2xkU3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgLy8gV2UgY2FuJ3QgZW5kIHVwIHN0b3Jpbmcg
dG8gYSBDb1cgb24gdGhlIHByb3RvdHlwZSBzaW5jZSBpdCBzaG91bGRuJ3Qgb3duIHByb3BlcnRp
ZXMuCiAgICAgICAgIEFTU0VSVCghaXNDb3B5T25Xcml0ZShzbG90LmJhc2UoKS0+aW5kZXhpbmdN
b2RlKCkpKTsKIAotICAgICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZSgpKQorICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0Fy
ZUNhY2hlYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CkBAIC01NzUsNDMgKzU3NSw0
OSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIHRvIGRpc2Fi
bGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRv
ZXMgbm90CiAgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMg
b2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCiAgICAgICAgICAgICAg
ICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA9PSBzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKSA9PSBvbGRTdHJ1Y3R1cmUpOwogCi0gICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwor
ICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50
KHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0CiAgICAgICAgICAg
ICAgICAgICAgICYmIElubGluZUFjY2Vzczo6Y2FuR2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNl
KHN0dWJJbmZvLCBzbG90LmNhY2hlZE9mZnNldCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAh
c3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgJiYgIW9sZFN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFj
ZShzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZVNlbGZQcm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0
Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFs
dWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNl
bGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09
IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJp
YXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UoY29kZUJsb2NrLCBzdHJ1
Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNh
Y2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hl
TGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFj
Y2Vzc0Nhc2U6OlJlcGxhY2UsIGlkZW50LCBzbG90LmNhY2hlZE9mZnNldCgpLCBzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVC
bG9jaywgQWNjZXNzQ2FzZTo6UmVwbGFjZSwgaWRlbnQsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIG9s
ZFN0cnVjdHVyZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VS
VChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KTsKIAotICAgICAg
ICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgIGlm
ICghb2xkU3RydWN0dXJlLT5pc09iamVjdCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKIAotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0
dGVuZWRCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgb2xkIHN0cnVjdHVyZSBpcyBkaWN0aW9uYXJ5LCBpdCBtZWFucyB0aGF0IHRo
aXMgaXMgb25lLW9uLW9uZSBiZXR3ZWVuIGFuIG9iamVjdCBhbmQgYSBzdHJ1Y3R1cmUuCisgICAg
ICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBOZXdQcm9wZXJ0eSBvcGVyYXRpb24sIGdlbmVyYXRp
bmcgSUMgZm9yIHRoaXMgZG9lcyBub3Qgb2ZmZXIgYW55IGJlbmVmaXQgYmVjYXVzZSB0aGlzIHRy
YW5zaXRpb24gbmV2ZXIgaGFwcGVucyBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBpZiAob2xkU3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5
Q2FjaGVMYXRlcjsKLSAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25j
dXJyZW50bHkoc3RydWN0dXJlLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSksIG9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUgfHwgIW5ld1N0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKIAotICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSA9PSBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIC8vIElmIEpTT2JqZWN0Ojpw
dXQgaXMgb3ZlcnJpZGRlbiBieSBVc2VyT2JqZWN0LCBVc2VyT2JqZWN0OjpwdXQgcGVyZm9ybXMg
c2lkZS1lZmZlY3Qgb24gSlNPYmplY3Q6OnB1dCwgYW5kIGl0IGZvcmdldCBtYWtpbmcgUHV0UHJv
cGVydHlTbG90IG5vbi1jYWNoYWVibGUsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBhcmJpdHJh
cnkgc3RydWN0dXJlIHRyYW5zaXRpb25zIGNhbiBoYXBwZW4gZHVyaW5nIHRoZSBwdXQgb3BlcmF0
aW9uLCBhbmQgdGhpcyBnZW5lcmF0ZXMgd3JvbmcgdHJhbnNpdGlvbiBpbmZvcm1hdGlvbiBoZXJl
LCBvbGRTdHJ1Y3R1cmUgLT4gbmV3U3RydWN0dXJlLAorICAgICAgICAgICAgICAgIC8vIHdoaWxl
IHRoZSByZWFsaXR5IGlzIG9sZFN0cnVjdHVyZSAtPiBzb21ldGhpbmcgdW5rbm93biBzdHJ1Y3R1
cmVzIC0+IGJhc2VWYWx1ZSdzIHN0cnVjdHVyZS4gV2Ugc2hvdWxkIGNoZWNrLCBhbmQgZ2l2ZSB1
cCB0byBndWFyZCBhZ2FpbnN0IHRoZSBpbmNvcnJlY3QgZW1iZWRkZXIncworICAgICAgICAgICAg
ICAgIC8vIFVzZXJPYmplY3Q6OnB1dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICBB
U1NFUlQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pID09IG5ld1N0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSAh
PSBuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OworCisgICAgICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09
IG9sZFN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09i
amVjdCgpKTsKICAgICAgICAgICAgICAgICAKQEAgLTYzNSw3ICs2NDEsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJs
b2NrLCBpZGVudCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRT
dHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0Nh
Y2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAg
ICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpAQCAtNjU3LDE0ICs2NjMsMTQgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0Zv
clByb3RvdHlwZVByb3BlcnR5SGl0Q3VzdG9tKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRl
bnQuaW1wbCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIG9sZFN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBzbG90
LmlzQ3VzdG9tQWNjZXNzb3IoKSA/IEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yU2V0dGVyIDog
QWNjZXNzQ2FzZTo6Q3VzdG9tVmFsdWVTZXR0ZXIsIHN0cnVjdHVyZSwgaWRlbnQsCisgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHNsb3QuaXNDdXN0b21BY2Nlc3NvcigpID8gQWNj
ZXNzQ2FzZTo6Q3VzdG9tQWNjZXNzb3JTZXR0ZXIgOiBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZVNl
dHRlciwgb2xkU3RydWN0dXJlLCBpZGVudCwKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9m
ZnNldCwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSwgc2xvdC5j
dXN0b21TZXR0ZXIoKSwgc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlID8gc2xvdC5iYXNlKCkgOiBu
dWxscHRyKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwpAQCAtNjg2LDcgKzY5Miw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90
b3R5cGVQcm9wZXJ0eUhpdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0
LCBvbGRTdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC02OTgsMTYgKzcwNCwxNiBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIG5ld0Nhc2UgPSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCi0gICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlNldHRlciwgc3RydWN0dXJl
LCBpZGVudCwgb2Zmc2V0LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKTsKKyAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6U2V0
dGVyLCBvbGRTdHJ1Y3R1cmUsIGlkZW50LCBvZmZzZXQsIGNvbmRpdGlvblNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOworICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlB1dEJ5SWRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgIAogICAgICAg
ICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29kZUJsb2NrLCBpZGVu
dCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21l
Q29kZSgpKSB7Ci0gICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRSZXBsYWNlV2l0
aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNl
VmFsdWUpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFJlcGxhY2VXaXRo
SnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJh
c2VWYWx1ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKIApAQCAtNzIwLDExICs3MjYsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6
IFJldHJ5Q2FjaGVMYXRlcjsKIH0KIAotdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQ
dXRLaW5kIHB1dEtpbmQpCit2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAgICAgCi0gICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8s
IHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCisgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCBiOWQ3YWUyMzU0Y2VlNjAyYWU4YjBmMDlhMGUxNDU2MzBlYjZiY2FmLi4yMjU0ZmNj
NDI5NjE3Y2U4Mzk3ZDI0ZTU1MGUxYWNlYzY3YjYxNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTgzNyw2ICs4MzcsOCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIAogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSkgOiBudWxscHRyOwogICAgIGlmIChieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGly
ZWN0KQogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKICAgICBlbHNlCkBAIC04NDUsOCArODQ3LDgg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICAKICAgICBp
ZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxs
KCkKLSAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7Ci0KKyAgICAgICAgJiYgc2xv
dC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nl
c3Nlc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmVJRCkgewpAQCAtODY5LDM0ICs4NzEsNDQgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1
cmVDaGFpbi5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2Vs
bC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNl
Q2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCi0gICAgICAgIGlmICghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAg
ICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwotICAg
ICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsK
LQotICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGdsb2Jh
bE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFzYXdQb2x5UHJvdG8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNP
YmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlkKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5
SWRJc0RpcmVjdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYXNPYmpl
Y3QoYmFzZUNlbGwpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4u
c2V0KHZtLCBjb2RlQmxvY2ssIGNoYWluKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9m
TGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5w
cmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFz
YXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3
U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVj
b2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ld1N0cnVjdHVyZS0+cHJvdG90eXBl
Q2hhaW4oZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlQ2VsbCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2NrLCBjaGFp
bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2spOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmRpZENhY2hlUHJv
cGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBhc3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9y
Z2V0IHRvIGRpc2FibGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNp
dGlvbiB0aGVuIHN0b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBh
bW9uZworICAgICAgICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVz
LiBJZiB3ZSByZWlmeSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAg
IC8vIHRvIGRpc2FibGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBS
ZXBsYWNlIElDIGRvZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwg
dGhlc2UgdHlwZXMgb2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisg
ICAgICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgIG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZt
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5p
ZCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3
U3RydWN0dXJlLT5pZCgpOwogICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA1YTYxMjEzZDNiOWFkYmQ4MGEyNGU1MzA5MGQ3
MzliZDIzYjMxNDgxLi4zZTE0ZjhiNmEzM2JlZGRjY2YwZWJhMWQyZjI5MWI3NzU4Nzk0ZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTc1Miw2
ICs3NTIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1
cmUoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVu
Y3koKTsKICAgICBBU1NFUlQoaXNEaWN0aW9uYXJ5KCkpOworICAgIEFTU0VSVChvYmplY3QtPnN0
cnVjdHVyZSh2bSkgPT0gdGhpcyk7CiAgICAgCiAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2ssIHZtLmhlYXApOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGZlYzMwNzU2Y2I2NDc1NzNhNjM2NWEzNTJhY2NhYWNm
MDQ4Y2I0YWQuLmE4MzUzNWRmN2VjY2U0ODhhYjBhOGZjMzhhYmEwNjVlMjM1ODNkNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTY4Miw2ICs2ODIs
NDIgQEAgY2xhc3MgU3RhdGljQ3VzdG9tQWNjZXNzb3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgfQogfTsKIAorY2xhc3MgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENv
cnJlY3RTbG90U3RhdHVzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIHVzaW5nIEJh
c2UgPSBKU05vbkZpbmFsT2JqZWN0OworcHVibGljOgorICAgIE9iamVjdERvaW5nU2lkZUVmZmVj
dFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIE9iamVjdERvaW5n
U2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOworICAgICAgICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXMqIGFjY2Vzc29yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzPih2bS5oZWFwKSkgT2Jq
ZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBhY2Nlc3Nvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gYWNjZXNzb3I7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorICAgIHsKKyAgICAgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMq
PihjZWxsKTsKKyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICBhdXRvKiBzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
ZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc3RyaW5nLCBzbG90KSk7
CisgICAgfQorfTsKKwogY2xhc3MgRE9NSklUTm9kZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBET01KSVROb2RlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkBAIC0xMzA1LDYgKzEzNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gRE9NSklUQ2hlY2tTdWJDbGFz
c09iamVjdDo6c19pbmZvID0geyAiRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdAogY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZvID0geyAiSlNUZXN0Q3VzdG9t
R2V0dGVyU2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIpIH07CiAKIGNvbnN0IENsYXNzSW5m
byBTdGF0aWNDdXN0b21BY2Nlc3Nvcjo6c19pbmZvID0geyAiU3RhdGljQ3VzdG9tQWNjZXNzb3Ii
LCAmQmFzZTo6c19pbmZvLCAmc3RhdGljQ3VzdG9tQWNjZXNzb3JUYWJsZSwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShTdGF0aWNDdXN0b21BY2Nlc3NvcikgfTsKK2NvbnN0IENsYXNzSW5m
byBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OnNfaW5m
byA9IHsgIk9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyIs
ICZCYXNlOjpzX2luZm8sICZzdGF0aWNDdXN0b21BY2Nlc3NvclRhYmxlLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xv
dFN0YXR1cykgfTsKIAogRWxlbWVudEhhbmRsZU93bmVyKiBFbGVtZW50OjpoYW5kbGVPd25lcigp
CiB7CkBAIC0yMjU2LDYgKzIyOTMsMTkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvcihKU0dsb2JhbE8KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0
aG91dENvcnJlY3RTbG90U3RhdHVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKKworICAgIGF1dG8qIGRvbGxhclZNID0ganNEeW5hbWljQ2FzdDxKU0RvbGxhclZNKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZG9sbGFyVk0pCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworICAgIGF1dG8qIHJlc3VsdCA9IE9i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlKHZt
LCBkb2xsYXJWTS0+b2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3Rh
dHVzU3RydWN0dXJlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
Kwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVH
ZXR0ZXJEZWxlZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjgw
MCw2ICsyODUwLDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAg
ICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyIiwgZnVuY3Rpb25D
cmVhdGVXYXNtU3RyZWFtaW5nUGFyc2VyLCAwKTsKICNlbmRpZgogICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3JlYXRlU3RhdGljQ3VzdG9tQWNjZXNzb3IiLCBmdW5jdGlvbkNyZWF0ZVN0YXRpY0N1c3Rv
bUFjY2Vzc29yLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZU9iamVjdERvaW5nU2lk
ZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyIsIGZ1bmN0aW9uQ3JlYXRlT2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzLCAwKTsKICAgICBhZGRG
dW5jdGlvbih2bSwgImdldFByaXZhdGVQcm9wZXJ0eSIsIGZ1bmN0aW9uR2V0UHJpdmF0ZVByb3Bl
cnR5LCAyKTsKICAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwg
ZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CiAKQEAgLTI4NDYsNiArMjg5Nyw4
IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiAgICAgYWRkRnVu
Y3Rpb24odm0sICJpc1dhc21TdXBwb3J0ZWQiLCBmdW5jdGlvbklzV2FzbVN1cHBvcnRlZCwgMCk7
CiAgICAgYWRkRnVuY3Rpb24odm0sICJtYWtlMTZCaXRTdHJpbmdJZlBvc3NpYmxlIiwgZnVuY3Rp
b25NYWtlMTZCaXRTdHJpbmdJZlBvc3NpYmxlLCAxKTsKKworICAgIG1fb2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIAogdm9pZCBKU0RvbGxh
clZNOjphZGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVu
dHMpCkBAIC0yODYyLDYgKzI5MTUsMTMgQEAgdm9pZCBKU0RvbGxhclZNOjphZGRDb25zdHJ1Y3Rp
YmxlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2lj
LCBmdW5jdGlvbikpOwogfQogCit2b2lkIEpTRG9sbGFyVk06OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0RvbGxhclZNKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRG9sbGFyVk0qPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
b2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJl
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCmluZGV4IDFjOTI2YjljYzVkZWEwYzc3
NjkxYTJjYmY0ZTUxMDkzYTQ0NjY2MjUuLmM3NTg5ZTAyMDVjNGNmMDY2YTg3YTA1MDU0ZTllMzM2
MGY3NzRlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaApAQCAt
NTQsNiArNTQsOCBAQCBjbGFzcyBKU0RvbGxhclZNIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQorCisgICAgU3RydWN0dXJlKiBvYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBKU0RvbGxhclZNKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkBAIC02MiwxMCArNjQsMTMgQEAgY2xhc3MgSlNEb2xsYXJWTSBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKICAgICB9CiAKLQogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAg
ICB2b2lkIGFkZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBuYW1l
LCBOYXRpdmVGdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKTsKICAgICB2b2lkIGFkZENvbnN0
cnVjdGlibGVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogbmFtZSwg
TmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cyk7CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0
YXR1c1N0cnVjdHVyZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxNjJjYjg1
NzU0ZTAyZjZlZDkwYjc3NWIyNTJjZjFmNzdkNWYzYjE0Li42ZDcyMWE4ZGY4NzgyMjY1MzM0N2Rl
MmY4MmJhMjU1MjI1ZWM1OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjY3Niw2ICsyNjc2LDEwIEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsK
ICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Okhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVj
ayJ9ID0gMTsKICAgICB9CisKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UGx1Z2lufSB8fCBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKSkgeworICAg
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIn0gPSAx
OworICAgIH0KICAgICAKICAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5h
bWVzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpO1xuIik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDZiY2YxYzVmZDM3ZGZkN2YxZWQyYTc4MTBiZTg5
ZTUyZjAyMDAzMy4uYzY5ZTIzNGViNGFmOTE2YjI1MjA0ZDFhYjJlMTUyOWNhNzAzYjMzMCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIwLTAxLTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gR2l2ZSB1cCBJQyB3aGVuIHVua25vd24gc3RydWN0dXJlIHRyYW5zaXRp
b24gaGFwcGVucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGBjcmFzaCFgIGFubm90YXRpb24sIHdoaWNoIGFsbG93cyB1cyB0byB3cml0ZSBhIGNy
YXNoaW5nIEpTIHRlc3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3Rz
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRl
ZmF1bHQucmI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13
cml0ZXItcGxheXN0YXRpb24ucmI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC13cml0ZXItcnVieS5yYjoKKwogMjAyMC0wMS0yOCAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREI6IHNwZWVkIHVwIGluZGV4IHJl
Y29yZHMgZGVsZXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGRmYzIwYWE2
MmMyYWRmZmEwYjM2MTA1NzVlMTFlZmM5ZjRlODY3MjkuLmJkYjFhM2I3ZTZjYTYyZjBiNDc5MzJl
MjNmOWNjMzljN2QxZjYwNWIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjEy
LDYgKzYxMiwxMCBAQCBkZWYgc2xvdyEKICAgICAkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10g
PSB0cnVlCiBlbmQKIAorZGVmIGNyYXNoIQorICAgICRydW5Db21tYW5kT3B0aW9uc1s6c2hvdWxk
Q3Jhc2hdID0gdHJ1ZQorZW5kCisKIGRlZiByZXF1aXJlT3B0aW9ucygqb3B0aW9ucykKICAgICAk
dGVzdFNwZWNpZmljUmVxdWlyZWRPcHRpb25zICs9IG9wdGlvbnMKIGVuZApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5y
YiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1
bHQucmIKaW5kZXggYzE3NGIxYWMwNjU3MjI2ZGEzZWQyMzg0ZmU3MjNlZDk5NTczNjlmOS4uMDRk
NDNjODA0YmIxMGI5ZWVmYTljZGVkMGRhYjQ5YzIwZWIyZDQ1MiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0
LnJiCkBAIC0yMjYsNiArMjI2LDcgQEAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVu
dHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQogICAgICAgICBA
b3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKICAgICAgICAgQGVycm9ySGFuZGxlciA9IGVy
cm9ySGFuZGxlcgogICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xv
d10KKyAgICAgICAgQHNob3VsZENyYXNoID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOnNob3VsZENy
YXNoXQogICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCiAgICAgZW5kCiAgICAgCkBAIC0yMzMs
NyArMjM0LDcgQEAgZGVmIHNoZWxsQ29tbWFuZAogICAgICAgICAjIEl0J3MgaW1wb3J0YW50IHRv
IHJlbWVtYmVyIHRoYXQgdGhlIHRlc3QgaXMgYWN0dWFsbHkgcnVuIGluIGEgc3Vic2hlbGwsIHNv
IGlmIHdlIGNoYW5nZSBkaXJlY3RvcnkKICAgICAgICAgIyBpbiB0aGUgc3Vic2hlbGwgd2hlbiB3
ZSByZXR1cm4gd2Ugd2lsbCBiZSBpbiBvdXIgb3JpZ2luYWwgZGlyZWN0b3J5LiBUaGlzIGlzIG5p
Y2UgYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAjIGhhdmUgdG8gYmVuZCBvdmVyIGJhY2t3YXJk
cyB0byBkbyB0aGluZ3MgcmVsYXRpdmUgdG8gdGhlIHJvb3QuCi0gICAgICAgIHNjcmlwdCA9ICIo
Y2QgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmICgiCisg
ICAgICAgIHNjcmlwdCA9ICIoY2QgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3Rv
cnkudG9fcyl9ICYmICN7QHNob3VsZENyYXNoID8gIiEiIDogIiJ9KCIKICAgICAgICAgKCRlbnZW
YXJzICsgYWRkaXRpb25hbEVudikuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwg
dmFyIDw8ICI7ICIgfQogICAgICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxsKEBh
cmd1bWVudHMpICsgIikpIgogICAgICAgICByZXR1cm4gc2NyaXB0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5y
YiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlz
dGF0aW9uLnJiCmluZGV4IDgyYTExNWMxMWQ2MDVkYzJlOWY2MGZkN2RmYzE1ZmQwMjdhYzM3ZTku
Ljg5NjI0ZTQ4ODUyZmQ5ZjVjNzAxMDM0MWQ0MWQwY2VhMzU0ZjBjMTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9u
LnJiCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVy
LXBsYXlzdGF0aW9uLnJiCkBAIC0yNzIsNiArMjcyLDcgQEAgZGVmIGluaXRpYWxpemUoZGlyZWN0
b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVy
KQogICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKICAgICAgICAgQGVycm9y
SGFuZGxlciA9IGVycm9ySGFuZGxlcgogICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9w
dGlvbnNbOmlzU2xvd10KKyAgICAgICAgQHNob3VsZENyYXNoID0gISEkcnVuQ29tbWFuZE9wdGlv
bnNbOnNob3VsZENyYXNoXQogICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCiAgICAgZW5kCiAK
QEAgLTI4Nyw2ICsyODgsOSBAQCBkZWYgc2hlbGxDb21tYW5kCiAgICAgICAgIHNjcmlwdCArPSAi
aWYgKHN0YXR1cyA9PSAwKVxuIgogICAgICAgICBzY3JpcHQgKz0gIiAgc3VjY2VzcyA9IHRydWVc
biIKICAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJpZiAoI3tA
c2hvdWxkQ3Jhc2h9KVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgc3VjY2VzcyA9ICFzdWNjZXNz
XG4iCisgICAgICAgIHNjcmlwdCArPSAiZW5kXG4iCiAKICAgICAgICAgc2NyaXB0ICs9ICJvdXQg
PSBGaWxlLm9wZW4oXCIje259LXN0ZG91dFwiLCBcInJcIikucmVhZFxuIgogICAgICAgICBzY3Jp
cHQgKz0gImVyciA9IEZpbGUub3BlbihcIiN7bn0tc3RkZXJyXCIsIFwiclwiKS5yZWFkXG4iCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRl
ci1ydWJ5LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItcnVieS5yYgppbmRleCA2ZTk3ZTg4ODk2OGE1MTE1MDMyZjc0MWZhMjYyYTU5MTNhNTQ5MDc5
Li5lMjFlNmI0Y2IxNjE2ZWRkNDg4YTZhYTAzZTdiYzMxYjk2ZTJhYWViIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1Ynku
cmIKQEAgLTcwLDcgKzcwLDcgQEAgZGVmIG5vaXN5T3V0cHV0SGFuZGxlcgogZGVmIHNpbXBsZUVy
cm9ySGFuZGxlcgogICAgIFByb2MubmV3IHsKICAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAg
ICAgb3V0cC5wdXRzICJpZiAhc3RhdHVzLnN1Y2Nlc3M/XG4iCisgICAgICAgIG91dHAucHV0cyAi
aWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsg
cHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhp
dHN0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAg
ICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAogICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKQEAg
LTgzLDcgKzgzLDcgQEAgZGVmIHNpbXBsZUVycm9ySGFuZGxlcgogZGVmIGV4cGVjdGVkRmFpbEVy
cm9ySGFuZGxlcgogICAgIFByb2MubmV3IHsKICAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAg
ICAgb3V0cC5wdXRzICJpZiBzdGF0dXMuc3VjY2Vzcz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJp
ZiBzdWNjZXNzKHN0YXR1cylcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwiIiwgcGxhbi5u
YW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21t
YW5kCiAgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgpAQCAtOTcsNyArOTcsNyBAQCBkZWYgZXhw
ZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCiBkZWYgbm9pc3lFcnJvckhhbmRsZXIKICAgICBQcm9jLm5l
dyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN0YXR1
cy5zdWNjZXNzP1xuIgorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIK
ICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxh
bi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9
XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiAr
IHBsYW4uZmFpbENvbW1hbmQKQEAgLTE2Miw3ICsxNjIsNyBAQCBkZWYgZGlmZkVycm9ySGFuZGxl
cihleHBlY3RlZEZpbGVuYW1lKQogICAgICAgICB8IG91dHAsIHBsYW4gfAogICAgICAgICBvdXRw
dXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBs
YW4ubmFtZSArICIub3V0IikpLnRvX3MpCiAgICAgICAgIAotICAgICAgICBvdXRwLnB1dHMgImlm
ICFzdGF0dXMuc3VjY2Vzcz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0
dXMpXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91
dCIsIHBsYW4ubmFtZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBw
cmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0
c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTE4OCw3ICsxODgsNyBAQCBkZWYgZGlmZkVycm9ySGFu
ZGxlcihleHBlY3RlZEZpbGVuYW1lKQogZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKICAgICBQcm9j
Lm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN0
YXR1cy5zdWNjZXNzP1xuIgorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylc
biIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0
dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTIwNyw3ICsyMDcsNyBAQCBkZWYgbW96aWxsYUVycm9y
SGFuZGxlcgogZGVmIG1vemlsbGFGYWlsRXJyb3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAg
ICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdGF0dXMuc3VjY2Vz
cz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCiAgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCiAgICAgICAgIG91dHAucHV0
cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiAr
IHBsYW4uc3VjY2Vzc0NvbW1hbmQKQEAgLTIyMyw3ICsyMjMsNyBAQCBkZWYgbW96aWxsYUZhaWxF
cnJvckhhbmRsZXIKIGRlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7
CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgc3RhdHVzLnN1
Y2Nlc3M/XG4iCisgICAgICAgIG91dHAucHV0cyAiaWYgc3VjY2VzcyhzdGF0dXMpXG4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFt
ZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
IlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxs
eVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIg
KyBwbGFuLmZhaWxDb21tYW5kCkBAIC0yNDYsNyArMjQ2LDcgQEAgZGVmIG1vemlsbGFFeGl0M0Vy
cm9ySGFuZGxlcgogZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICAgUHJvYy5uZXcg
ewogICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdGF0dXMu
c3VjY2Vzcz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCiAg
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4u
bmFtZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxc
blwiIiwgcGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKQEAgLTI3Miw2ICsyNzIsNyBAQCBkZWYgaW5pdGlhbGl6ZShkaXJlY3Rvcnks
IGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCiAg
ICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgogICAgICAgICBAZXJyb3JIYW5k
bGVyID0gZXJyb3JIYW5kbGVyCiAgICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9u
c1s6aXNTbG93XQorICAgICAgICBAc2hvdWxkQ3Jhc2ggPSAhISRydW5Db21tYW5kT3B0aW9uc1s6
c2hvdWxkQ3Jhc2hdCiAgICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KICAgICBlbmQKICAgICAK
QEAgLTI5Nyw2ICsyOTgsMTIgQEAgZGVmIHJlcHJvU2NyaXB0SGVscGVyCiAgICAgICAgIHNjcmlw
dCA9ICJkZWYgZXJyb3Jfc2NyaXB0X2NvbnRlbnRzXG4iCiAgICAgICAgIHNjcmlwdCArPSAiICAg
IDw8LUVORF9PRl9TQ1JJUFRcbiIKICAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIHJlcXVpcmUg
J29wZW4zJ1xuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgZGVmIHN1Y2Nlc3Moc3RhdHVz
KVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGlmICgje0BzaG91bGRDcmFzaH0p
XG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgICAgICFzdGF0dXMuc3VjY2Vzcz9c
biIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBlbHNlXG4iCisgICAgICAgIHNjcmlw
dCArPSAiICAgICAgICAgICAgICAgIHN0YXR1cy5zdWNjZXNzP1xuIgorICAgICAgICBzY3JpcHQg
Kz0gIiAgICAgICAgZW5kXG4iCiAgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBzY3JpcHRfbG9j
YXRpb24gPSBGaWxlLmV4cGFuZF9wYXRoKEZpbGUuZGlybmFtZShfX0ZJTEVfXykpXG4iCiAgICAg
ICAgIHNjcmlwdCArPSAiICAgICAgICBEaXIuY2hkaXIoXCJcXFwje3NjcmlwdF9sb2NhdGlvbn0i
CiAgICAgICAgIFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2ZpbGVuYW1lIHsKQEAg
LTMwOSw3ICszMTYsNyBAQCBkZWYgcmVwcm9TY3JpcHRIZWxwZXIKIAogICAgICAgICBzY3JpcHQg
Kz0gIiAgICAgICAgICAgICN7c2hlbGxDb21tYW5kfSIKICAgICAgICAgc2NyaXB0ICs9ICIgICAg
ICAgICAgICBwcmludCBvdXRcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBpZiAo
IXN0YXR1cy5zdWNjZXNzPylcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3Moc3RhdHVzKSlcbiIKICAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICAgICAg
ZXhpdCgxKVxuIgogICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGVuZFxuIgogICAgICAg
ICBzY3JpcHQgKz0gIiAgICAgICAgZW5kXG4iCkBAIC0zNTEsNyArMzU4LDcgQEAgZGVmIGZhaWxG
aWxlCiAKICAgICBkZWYgc3RhdHVzV3JpdGUKICAgICAgICAgPDwtRU5EX1NUQVRVU19XUklURQot
ICAgICAgICAgICAgaWYgIXN0YXR1cy5zdWNjZXNzPworICAgICAgICAgICAgaWYgIXN1Y2Nlc3Mo
c3RhdHVzKQogICAgICAgICAgICAgICAgIEZpbGUub3BlbigiI3tmYWlsRmlsZX0iLCAidyIpIGRv
IHxjb2RlX2ZpbGV8CiAgICAgICAgICAgICAgICAgICAgIGNvZGVfZmlsZS5wdXRzIHN0YXR1cy5l
eGl0c3RhdHVzCiAgICAgICAgICAgICAgICAgZW5kCkBAIC0zNjcsNiArMzc0LDEyIEBAIGRlZiB3
cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkKICAgICAgICAgICAgIG91dHAucHV0cyAiYmVnaW4iCiAg
ICAgICAgICAgICBvdXRwLnB1dHMgInJlcXVpcmUgJ29wZW4zJyIKICAgICAgICAgICAgIG91dHAu
cHV0cyAicmVxdWlyZSAnZmlsZXV0aWxzJyIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZGVmIHN1
Y2Nlc3Moc3RhdHVzKSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiICAgIGlmICgje0BzaG91bGRD
cmFzaH0pIgorICAgICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICFzdGF0dXMuc3VjY2Vzcz8i
CisgICAgICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgorICAgICAgICAgICAgb3V0cC5wdXRz
ICIgICAgICAgIHN0YXR1cy5zdWNjZXNzPyIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZW5kIgog
CiAgICAgICAgICAgICBjbWQgPSBzaGVsbENvbW1hbmQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFkZmNhZTlkNmQyZDlh
MzY2NWI1NmU1NzU5NmU4ZTA3M2I0ZTIwYmQuLmE2NzcwNThlODJmNWU3MDc3ZWNiZDdmMDBiMjAw
MjZlMmMxOGE4MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yOCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEdpdmUgdXAgSUMgd2hl
biB1bmtub3duIHN0cnVjdHVyZSB0cmFuc2l0aW9uIGhhcHBlbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjg0NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvZG9tL3B1dC1vdmVycmlkZS1zaG91
bGQtbm90LXVzZS1pYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9wdXQt
b3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbDogQWRkZWQuCisKIDIwMjAtMDEtMjggIFRy
dWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3d1cCB0byBy
MjU1MjY0IHRvIGJldHRlciBzcGVjaWZ5IGV4cGVjdGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNDU2NTcyMTdlY2JlN2U1ZWUzZWExMzgzOGM2YjA4NDFjOWFk
NjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1z
aG91bGQtbm90LXVzZS1pYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRE9N
IG9iamVjdCBvdmVycmlkaW5nIDo6cHV0IG9wZXJhdGlvbiBzaG91bGQgbm90IGFsbG93IElDIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3Qt
dXNlLWljLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3Qt
dXNlLWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJiODNmM2JlMDMzODdjNTc1M2Y4Yjg5NmU1ZGI0OWVi
MGYxYWFjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJp
ZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbmVkKCkg
eworICAgICAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykuc3R5bGU7
CisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgICAgICAg
ICBzdHlsZVsncCcraV0gPSBpOworICAgICAgICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gcHV0dGVyKG8pIHsKKyAgICAgICAgICAgIG8uX3Vuc3VwcG9y
dGVkQ1NTUHJvcGVydHkgPSBub3Rfc3RyaW5nOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNv
dW50ID0gMDsKKyAgICAgICAgdmFyIGV4cGVjdGVkQ291bnQgPSA1MDsKKyAgICAgICAgdmFyIG5v
dF9zdHJpbmcgPSB7CisgICAgICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICAr
K2NvdW50OworICAgICAgICAgICAgICAgIHJldHVybiAiSGVsbG8iOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRDb3VudDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gdHJhbnNpdGlvbmVkKCk7CisgICAgICAg
ICAgICBwdXR0ZXIob2JqZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydF9lcXVhbHMo
Y291bnQsIGV4cGVjdGVkQ291bnQpOworICAgIH0sICJET00gb2JqZWN0IG92ZXJyaWRpbmcgOjpw
dXQgb3BlcmF0aW9uIHNob3VsZCBub3QgYWxsb3cgSUMiKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YzhjMjNjMWY0ZjcyNDJhZDNjZTg4YWM1OTFjM2JlNDljZGQ0ZWVlLi44YmNjZjg3
OWRjM2Y1NjY3OTdmYTdiZTY2MDUzYmY2MTYwNTdmMTNkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAx
LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
R2l2ZSB1cCBJQyB3aGVuIHVua25vd24gc3RydWN0dXJlIHRyYW5zaXRpb24gaGFwcGVucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZW5z
dXJlLWNyYXNoLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3Vs
ZC1nZW5lcmF0ZS1pbnZhbGlkLWljLWJ1dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3It
YmFkLXRyYW5zaXRpb24tZGVidWcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAocHV0dGVyKToKKyAgICAgICAgKG5vdF9zdHJpbmcudG9TdHJpbmcpOgorICAgICAgICAq
IHN0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMtYnV0LXN0aWxs
LW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1iYWQtdHJhbnNpdGlvbi5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChwdXR0ZXIpOgorICAgICAgICAobm90X3N0cmluZy50
b1N0cmluZyk6CisgICAgICAgICogc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUt
aW52YWxpZC1pYy1idXQtc3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHB1dHRlcik6CisgICAgICAgIChub3Rfc3Ry
aW5nLnRvU3RyaW5nKToKKyAgICAgICAgKiBzdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5l
cmF0ZS1pbnZhbGlkLWljLWludm9sdmluZy1kaWN0aW9uYXJ5LWZsYXR0ZW4uanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZGljdGlvbmFyeSk6CisgICAgICAgIChwdXR0
ZXIpOgorICAgICAgICAobm90X3N0cmluZy50b1N0cmluZyk6CisKIDIwMjAtMDEtMjggIFBhdWxv
IE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2tpcCB0ZXN0IG51bWJlcmlu
Z1N5c3RlbXNGb3JMb2NhbGUtY2FjaGVkLXN0cmluZ3Mtc2hvdWxkLWJlLWltbW9ydGFsLWFuZC1z
YWZlLWZvci1jb25jdXJyZW50LWFjY2Vzcy5qcyBpbiBhcm0gYW5kIG1pcHMKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2Vuc3VyZS1jcmFzaC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Vuc3VyZS1j
cmFzaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZjg2MzI3ZjljZmUzMmVmN2E2NDg0ZWI2NTM3MTY0ZDQ5YzM4
ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZW5zdXJlLWNyYXNoLmpzCkBA
IC0wLDAgKzEsMyBAQAorLy9AIGNyYXNoIQorCiskdm0uY3Jhc2goKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1idXQt
c3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLWJhZC10cmFuc2l0aW9uLWRlYnVnLmpzIGIv
SlNUZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZhbGlkLWljLWJ1
dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3ItYmFkLXRyYW5zaXRpb24tZGVidWcuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGQ1NDMyMDBmMmVmODRkMDk5ZWY1MGRmYzkxMjZjN2E4YzdlOTFhMQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJh
dGUtaW52YWxpZC1pYy1idXQtc3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLWJhZC10cmFu
c2l0aW9uLWRlYnVnLmpzCkBAIC0wLDAgKzEsMzAgQEAKKy8vQCBza2lwIGlmICRidWlsZFR5cGUg
IT0gImRlYnVnIgorLy9AIGNyYXNoIQorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBwdXR0ZXIgPSBmdW5jdGlvbihv
KSB7CisgICAgby5fdW5zdXBwb3J0ZWQgPSBub3Rfc3RyaW5nOworfQorCit2YXIgb2JqZWN0Owor
dmFyIGNvdW50ZXIgPSAwOwordmFyIG5vdF9zdHJpbmcgPSB7CisgICAgdG9TdHJpbmcoKSB7Cisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgb2JqZWN0Lm9rID0gNDI7CisgICAgICAgIHJldHVy
biAiSGV5IjsKKyAgICB9Cit9OworCitvYmplY3QgPSAkdm0uY3JlYXRlT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKCk7CitvYmplY3QuX3Vuc3VwcG9ydGVk
ID0gNTA7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgb2JqZWN0ID0g
JHZtLmNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1
cygpOworICAgIHB1dHRlcihvYmplY3QpOworICAgIHNob3VsZEJlKG9iamVjdC5fdW5zdXBwb3J0
ZWQsICJIZXkiKTsKK30KK3Nob3VsZEJlKGNvdW50ZXIsIDEwMDApOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZhbGlkLWljLWJ1dC1z
dGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3ItYmFkLXRyYW5zaXRpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMtYnV0LXN0aWxs
LW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1iYWQtdHJhbnNpdGlvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NGU3NTllOTY0YjYyYzNhZDJkY2U4NzE3ZTdlMjdjNzllMDM5YzlmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZhbGlkLWlj
LWJ1dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3ItYmFkLXRyYW5zaXRpb24uanMKQEAg
LTAsMCArMSwzMyBAQAorLy9AIHNraXAgaWYgJGJ1aWxkVHlwZSA9PSAiZGVidWciCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KwordmFyIHB1dHRlciA9IGZ1bmN0aW9uKG8pIHsKKyAgICBvLl91bnN1cHBvcnRlZCA9IG5vdF9z
dHJpbmc7Cit9CisKK3ZhciBvYmplY3Q7Cit2YXIgY291bnRlciA9IDA7Cit2YXIgbm90X3N0cmlu
ZyA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICBvYmpl
Y3Qub2sgPSA0MjsKKyAgICAgICAgcmV0dXJuICJIZXkiOworICAgIH0KK307CisKK29iamVjdCA9
ICR2bS5jcmVhdGVPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXMoKTsKK29iamVjdC5fdW5zdXBwb3J0ZWQgPSA1MDsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwOyArK2kpIHsKKyAgICBvYmplY3QgPSAkdm0uY3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0
UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKCk7CisgICAgcHV0dGVyKG9iamVjdCk7CisgICAg
c2hvdWxkQmUob2JqZWN0Ll91bnN1cHBvcnRlZCwgIkhleSIpOworICAgIC8vIEF0IHNvbWUgcG9p
bnQsIHNlbWFudGljYWxseSBpbmNvcnJlY3QgcmVzdWx0IGFwcGVhcnMuIGBvYmplY3Qub2sgPSA0
MmAgZG9lcyBub3QgaW52b2tlIDo6cHV0LgorICAgIC8vIEJ1dCB0aGUgc3RydWN0dXJlIGlzIHN0
aWxsIGNvcnJlY3QuCisgICAgaWYgKG9iamVjdC5vayAhPT0gNDIgJiYgb2JqZWN0Lm9rICE9PSAi
NDIiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImluY29ycmVjdCIpOworfQorc2hvdWxkQmUo
Y291bnRlciwgMTAwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0
LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMtYnV0LXN0aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhh
dmlvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52
YWxpZC1pYy1idXQtc3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE5OTZmMmY0NDRmMGUxYmMwMTE2YzUyYjc3ZGVjODRkYjc4YjVkMzUKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQt
aWMtYnV0LXN0aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci5qcwpAQCAtMCwwICsxLDI0IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKwordmFyIHB1dHRlciA9IGZ1bmN0aW9uKG8pIHsKKyAgICBvLl91bnN1cHBvcnRl
ZCA9IG5vdF9zdHJpbmc7Cit9CisKK3ZhciBvYmplY3Q7Cit2YXIgY291bnRlciA9IDA7Cit2YXIg
bm90X3N0cmluZyA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAgY291bnRlcisrOworICAg
ICAgICBvYmplY3Qub2sgPSA0MjsKKyAgICAgICAgcmV0dXJuICJIZXkiOworICAgIH0KK307CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgb2JqZWN0ID0gJHZtLmNyZWF0
ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cygpOworICAg
IHB1dHRlcihvYmplY3QpOworfQorc2hvdWxkQmUoY291bnRlciwgMTAwMCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMt
aW52b2x2aW5nLWRpY3Rpb25hcnktZmxhdHRlbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2luY29ycmVj
dC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1pbnZvbHZpbmctZGljdGlvbmFyeS1mbGF0
dGVuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3OGUxOWZjMTc4OTI5ZjY3ZGQwYjQ5ZmQwNjc2NGNlYWFhZjI0
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxk
LWdlbmVyYXRlLWludmFsaWQtaWMtaW52b2x2aW5nLWRpY3Rpb25hcnktZmxhdHRlbi5qcwpAQCAt
MCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gZGljdGlvbmFyeSgpIHsKKyAgICB2YXIg
b2JqZWN0ID0gJHZtLmNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0
U2xvdFN0YXR1cygpOworICAgIGZvcih2YXIgaSA9IDA7IGkgPCA2NjsgaSsrKQorICAgICAgICBv
YmplY3RbJ3AnK2ldID0gaTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitmdW5jdGlvbiBwdXR0
ZXIobykgeworICAgIG8uX3Vuc3VwcG9ydGVkID0gbm90X3N0cmluZzsKK30KKwordmFyIGQ7Cit2
YXIgbm90X3N0cmluZyA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAgZm9yKHZhciBpID0g
MzsgaSA8IDY2OyBpKyspCisgICAgICAgICAgICBkZWxldGUgZFsncCcraV07CisgICAgICAgIGZv
cihpIGluIE9iamVjdC5jcmVhdGUoZCkpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgZCA9IGRpY3Rpb25hcnko
KTsKKyAgICBwdXR0ZXIoZCk7CisgICAgc2hvdWxkQmUoJ3AzJyBpbiBkLCBmYWxzZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389099</attachid>
            <date>2020-01-28 18:23:57 -0800</date>
            <delta_ts>2020-01-28 20:26:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206846-20200128182356.patch</filename>
            <type>text/plain</type>
            <size>63096</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTk4ZDUzZmE5ZTA1MmQ1MTU5Y2E5Y2ZhY2U5NDdjOGViZGY2ZmRhLi5iOTE4ODMzYTU3ZjYzZTg5
NTM2YTRiMzdiNGYyNTc4MzlkZWNlMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMC0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEdpdmUgdXAgSUMgd2hlbiB1bmtub3duIHN0cnVjdHVyZSB0cmFu
c2l0aW9uIGhhcHBlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gd2UgYXJlIGNyZWF0aW5nIFB1dCBJQyBmb3IgbmV3IHByb3BlcnR5LCB3ZSBn
cmFiIG9sZCBTdHJ1Y3R1cmUgYmVmb3JlIHBlcmZvcm1pbmcgcHV0LgorICAgICAgICBPdXIgY3Vz
dG9tIDo6cHV0IGhhcyBjb252ZW50aW9uIHRoYXQgaW1wbGVtZW50ZWQgOjpwdXQgbWFyayBQdXRQ
cm9wZXJ0eVNsb3Qgbm9uLWNhY2hhYmxlCisgICAgICAgIGFwcHJvcHJpYXRlbHkgc28gdGhhdCBJ
QyBjYW4gd29yayBjb3JyZWN0bHkuIElmIHdlIG1pc3MgdGhpcywgc2VtYW50aWMgZmFpbHVyZSBj
YW4gaGFwcGVuLgorICAgICAgICBUaGlzIHBhdGNoIGhhcmRlbnMgdGhpcyBzZW1hbnRpYyBmYWls
dXJlIGNhc2UgYnkgZ2l2aW5nIHVwIElDIHdoZW4gbmV3U3RydWN0dXJlIGNhbGN1bGF0ZWQKKyAg
ICAgICAgZnJvbSBvbGRTdHJ1Y3R1cmUgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCB0aGUgYWN0dWFs
IHN0cnVjdHVyZS4KKworICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZU9i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyk6CisgICAgICAg
IChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNEb2xs
YXJWTTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5oOgorCiAy
MDIwLTAxLTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21l
IHdlYnNpdGUgbmVlZHMgbW9yZSBzdGFjayBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwODgxNzExOGEw
NzBjZjM1Y2I1ZDA2YWI1NThhZWU0MzE1OTBkZjdjLi5jMDQ5MDYyMzgwZjJjMmUzN2Q2N2RiMjY5
OGZkMjg4MWEyMmNmOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDEtMjgg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBHaXZl
IHVwIElDIHdoZW4gdW5rbm93biBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBoYXBwZW5zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREwgQ29kZSBHZW5lcmF0
b3Igc2hvdWxkIHRhaW50IFB1dFByb3BlcnR5U2xvdCBvciB0YWludCBpbXBsZW1lbnRlZCBvYmpl
Y3QgdG8gYXZvaWQgUHV0IElDIGNhY2hpbmcKKyAgICAgICAgd2hlbiBpdCBpbXBsZW1lbnRzIGN1
c3RvbSA6OnB1dCBvcGVyYXRpb24gd2hpY2ggaGFzIHNpZGUtZWZmZWN0IHJlZ2FyZGxlc3Mgb2Yg
U3RydWN0dXJlLiBJQyBjb3VsZCBiZSBzZXR1cAorICAgICAgICBhbmQgSUMgY2FuIGRvIGZhc3Qg
cGF0aCB3aXRob3V0IGNvbnN1bHRpbmcgdG8gY3VzdG9tIDo6cHV0IG9wZXJhdGlvbi4KKworICAg
ICAgICBUZXN0OiBqcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDoKKwogMjAyMC0wMS0yOCAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREI6IHNwZWVk
IHVwIGluZGV4IHJlY29yZHMgZGVsZXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IGQxM2Q2ZDVmN2ZkNzgwMTFkNzY2MjQyZWQ5OTAxMzNkOGRkZjUzZDIuLjRmNGE0
MjEwZmNlMGZjY2ZlYzU3ZWM0MmYzNzU5NzQ4OWFkZjYzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBWX0pJVE9wZXJhdGlv
bl9HU3NpSkpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQ
cm9wCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAot
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0
S2luZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQ
dXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OwpAQCAtNTU2LDEyICs1NTYsMTIgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydGVy
IGhlcmUuLi4KLSAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoc3RydWN0dXJlLT5pbmRleGluZ01v
ZGUoKSkpCisgICAgICAgIGlmIChpc0NvcHlPbldyaXRlKG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdN
b2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIC8vIFdl
IGNhbid0IGVuZCB1cCBzdG9yaW5nIHRvIGEgQ29XIG9uIHRoZSBwcm90b3R5cGUgc2luY2UgaXQg
c2hvdWxkbid0IG93biBwcm9wZXJ0aWVzLgogICAgICAgICBBU1NFUlQoIWlzQ29weU9uV3JpdGUo
c2xvdC5iYXNlKCktPmluZGV4aW5nTW9kZSgpKSk7CiAKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKKyAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1
cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlOwpAQCAtNTc1LDQzICs1NzUsNDkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAg
ICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBw
YXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAogICAgICAgICAgICAgICAgIC8vIGtub3cgaG93
IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0
cnVjdHVyZQogICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4K
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZSh2bSkgPT0gc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgPT0gb2xkU3RydWN0dXJlKTsKIAotICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUtPmRpZENh
Y2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVU
eXBlOjpVbnNldAogICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmNhbkdlbmVy
YXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgc2xvdC5jYWNoZWRPZmZzZXQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgICYmICFvbGRTdHJ1Y3R1cmUtPm5lZWRJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5l
cmF0ZVNlbGZQcm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRT
dHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
Z2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
c2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwg
cHV0S2luZCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRS
ZXBsYWNlKGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShjb2RlQmxvY2ss
IG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpSZXBsYWNlLCBpZGVudCwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlJlcGxhY2UsIGlkZW50LCBz
bG90LmNhY2hlZE9mZnNldCgpLCBvbGRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpO
ZXdQcm9wZXJ0eSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNPYmplY3Qo
KSkKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5oYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4oYmFzZVZh
bHVlKSk7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9sZCBzdHJ1Y3R1cmUgaXMgZGljdGlv
bmFyeSwgaXQgbWVhbnMgdGhhdCB0aGlzIGlzIG9uZS1vbi1vbmUgYmV0d2VlbiBhbiBvYmplY3Qg
YW5kIGEgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgTmV3UHJvcGVy
dHkgb3BlcmF0aW9uLCBnZW5lcmF0aW5nIElDIGZvciB0aGlzIGRvZXMgbm90IG9mZmVyIGFueSBi
ZW5lZml0IGJlY2F1c2UgdGhpcyB0cmFuc2l0aW9uIG5ldmVyIGhhcHBlbnMgYWdhaW4uCisgICAg
ICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7Ci0gICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwotICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgaWRlbnQuaW1wbCgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpLCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVj
dHVyZSwgaWRlbnQuaW1wbCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6Ok5vbmUpLCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlIHx8
ICFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgICAgICAgICBBU1NF
UlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgPT0gc3RydWN0dXJlKTsKKyAgICAgICAgICAg
ICAgICAvLyBJZiBKU09iamVjdDo6cHV0IGlzIG92ZXJyaWRkZW4gYnkgVXNlck9iamVjdCwgVXNl
ck9iamVjdDo6cHV0IHBlcmZvcm1zIHNpZGUtZWZmZWN0IG9uIEpTT2JqZWN0OjpwdXQsIGFuZCBp
dCBmb3JnZXQgbWFraW5nIFB1dFByb3BlcnR5U2xvdCBub24tY2FjaGFlYmxlLAorICAgICAgICAg
ICAgICAgIC8vIHRoZW4gYXJiaXRyYXJ5IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyBjYW4gaGFwcGVu
IGR1cmluZyB0aGUgcHV0IG9wZXJhdGlvbiwgYW5kIHRoaXMgZ2VuZXJhdGVzIHdyb25nIHRyYW5z
aXRpb24gaW5mb3JtYXRpb24gaGVyZSwgb2xkU3RydWN0dXJlIC0+IG5ld1N0cnVjdHVyZSwKKyAg
ICAgICAgICAgICAgICAvLyB3aGlsZSB0aGUgcmVhbGl0eSBpcyBvbGRTdHJ1Y3R1cmUgLT4gc29t
ZXRoaW5nIHVua25vd24gc3RydWN0dXJlcyAtPiBiYXNlVmFsdWUncyBzdHJ1Y3R1cmUuIFdlIHNo
b3VsZCBjaGVjaywgYW5kIGdpdmUgdXAgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgaW5jb3JyZWN0IGVt
YmVkZGVyJ3MKKyAgICAgICAgICAgICAgICAvLyBVc2VyT2JqZWN0OjpwdXQgaW1wbGVtZW50YXRp
b24uCisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKSA9PSBuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkgIT0gbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIEFT
U0VSVCghbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgCkBAIC02MzUs
NyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgc3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwor
ICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9j
aywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxl
U2V0dGVyKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsK
QEAgLTY1NywxNCArNjYzLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nl
c3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQg
PSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdEN1c3RvbSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0s
IGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVu
dC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbmV3
Q2FzZSA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgdm0sIGNvZGVCbG9jaywgc2xvdC5pc0N1c3RvbUFjY2Vzc29yKCkgPyBBY2Nlc3NDYXNlOjpD
dXN0b21BY2Nlc3NvclNldHRlciA6IEFjY2Vzc0Nhc2U6OkN1c3RvbVZhbHVlU2V0dGVyLCBzdHJ1
Y3R1cmUsIGlkZW50LAorICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBzbG90Lmlz
Q3VzdG9tQWNjZXNzb3IoKSA/IEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yU2V0dGVyIDogQWNj
ZXNzQ2FzZTo6Q3VzdG9tVmFsdWVTZXR0ZXIsIG9sZFN0cnVjdHVyZSwgaWRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgIGludmFsaWRPZmZzZXQsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbiksIHNsb3QuY3VzdG9tU2V0dGVyKCksIHNsb3QuYmFzZSgpICE9IGJhc2VW
YWx1ZSA/IHNsb3QuYmFzZSgpIDogbnVsbHB0cik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKQEAg
LTY4Niw3ICs2OTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlE
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hh
aW4gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2Vu
ZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNsb3Qu
YmFzZSgpLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBj
b2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgb2xkU3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRlbnQu
aW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
IApAQCAtNjk4LDE2ICs3MDQsMTYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBBY2Nlc3ND
YXNlOjpTZXR0ZXIsIHN0cnVjdHVyZSwgaWRlbnQsIG9mZnNldCwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgICAgIHZtLCBjb2Rl
QmxvY2ssIEFjY2Vzc0Nhc2U6OlNldHRlciwgb2xkU3RydWN0dXJlLCBpZGVudCwgb2Zmc2V0LCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZEFkZEFjY2Vz
c0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNl
VmFsdWUpKTsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkQWRkQWNjZXNzQ2FzZSwg
b2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1
ZSkpOwogICAgICAgICAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShs
b2NrZXIsIGNvZGVCbG9jaywgaWRlbnQsIFdURk1vdmUobmV3Q2FzZSkpOwogCiAgICAgICAgIGlm
IChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewotICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpQdXRCeUlkUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OlB1dEJ5SWRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlk
ZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKQEAgLTcyMCwxMSArNzI2LDExIEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBO
b3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRj
aFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQordm9pZCByZXBhdGNoUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNW
YWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmICh0cnlDYWNoZVB1dEJ5
SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlm
ICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xk
U3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZl
VXBPbkNhY2hlKQogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYjlkN2FlMjM1NGNlZTYwMmFlOGIwZjA5YTBl
MTQ1NjMwZWI2YmNhZi4uMjI1NGZjYzQyOTYxN2NlODM5N2QyNGU1NTBlMWFjZWM2N2I2MTQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC04MzcsNiArODM3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9p
ZCkKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX2Jhc2UpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKwor
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKICAgICBpZiAoYnl0ZWNvZGUu
bV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXRE
aXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgaWRl
bnQsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKSwgc2xvdCk7CiAgICAg
ZWxzZQpAQCAtODQ1LDggKzg0Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpCiAgICAgCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAg
ICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCi0gICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQo
KSkgewotCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBvbGRT
dHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewogICAgICAgICB7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKQEAgLTg2OSwzNCAr
ODcxLDQ0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAg
ICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAotICAg
ICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpICYmIGJhc2VDZWxsID09
IHNsb3QuYmFzZSgpKSB7CisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgewogICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKICAg
ICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrLCB2bS5oZWFwKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
PT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5
UHJvdG8gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxp
emVQcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAm
JiAhc2F3UG9seVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pZCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1
cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5
dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFp
bihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VDZWxsKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGNoYWluKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3N0cnVjdHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2NrLCBjaGFpbik7CisgICAgICAg
ICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0
dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9p
bnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNh
d1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFs
aWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+
aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBu
ZXdTdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZUNl
bGwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5z
ZXQodm0sIGNvZGVCbG9jaywgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxv
Y2spOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3Mg
aWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAg
ICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9w
ZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0
IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBm
b3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21l
IGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAorICAgICAgICAgICAgICAg
IC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9u
cyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRo
YXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUg
PT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hl
UHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNWE2MTIx
M2QzYjlhZGJkODBhMjRlNTMwOTBkNzM5YmQyM2IzMTQ4MS4uM2UxNGY4YjZhMzNiZWRkY2NmMGVi
YTFkMmYyOTFiNzc1ODc5NGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC03NTIsNiArNzUyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZs
YXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsK
KyAgICBBU1NFUlQob2JqZWN0LT5zdHJ1Y3R1cmUodm0pID09IHRoaXMpOwogICAgIAogICAgIEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrLCB2bS5oZWFwKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBmZWMzMDc1NmNi
NjQ3NTczYTYzNjVhMzUyYWNjYWFjZjA0OGNiNGFkLi5hODM1MzVkZjdlY2NlNDg4YWIwYThmYzM4
YWJhMDY1ZTIzNTgzZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCkBAIC02ODIsNiArNjgyLDQyIEBAIGNsYXNzIFN0YXRpY0N1c3RvbUFjY2Vzc29yIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIH0KIH07CiAKK2NsYXNzIE9iamVjdERvaW5n
U2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKK3B1YmxpYzoKKyAg
ICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXMqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICAgICAgT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKiBhY2Nlc3NvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xv
dFN0YXR1cz4odm0uaGVhcCkpIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0
U2xvdFN0YXR1cyh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgYWNjZXNzb3ItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGFjY2Vzc29yOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKKyAgICB7CisgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAg
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0
aG91dENvcnJlY3RTbG90U3RhdHVzKj4oY2VsbCk7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgYXV0byog
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHN0cmluZywgc2xvdCkpOworICAgIH0KK307CisKIGNsYXNzIERPTUpJVE5vZGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgRE9NSklUTm9kZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTMwNSw2ICsxMzQxLDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OnNfaW5mbyA9IHsgIkRPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OnNf
aW5mbyA9IHsgIkpTVGVzdEN1c3RvbUdldHRlclNldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
KSB9OwogCiBjb25zdCBDbGFzc0luZm8gU3RhdGljQ3VzdG9tQWNjZXNzb3I6OnNfaW5mbyA9IHsg
IlN0YXRpY0N1c3RvbUFjY2Vzc29yIiwgJkJhc2U6OnNfaW5mbywgJnN0YXRpY0N1c3RvbUFjY2Vz
c29yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU3RhdGljQ3VzdG9tQWNjZXNz
b3IpIH07Citjb25zdCBDbGFzc0luZm8gT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENv
cnJlY3RTbG90U3RhdHVzOjpzX2luZm8gPSB7ICJPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRo
b3V0Q29ycmVjdFNsb3RTdGF0dXMiLCAmQmFzZTo6c19pbmZvLCAmc3RhdGljQ3VzdG9tQWNjZXNz
b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmplY3REb2luZ1NpZGVFZmZl
Y3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMpIH07CiAKIEVsZW1lbnRIYW5kbGVPd25lciog
RWxlbWVudDo6aGFuZGxlT3duZXIoKQogewpAQCAtMjI1Niw2ICsyMjkzLDE5IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9tQWNj
ZXNzb3IoSlNHbG9iYWxPCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZU9iamVj
dERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBhdXRvKiBkb2xsYXJWTSA9IGpzRHlu
YW1pY0Nhc3Q8SlNEb2xsYXJWTSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIWRvbGxhclZNKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
KyAgICBhdXRvKiByZXN1bHQgPSBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXM6OmNyZWF0ZSh2bSwgZG9sbGFyVk0tPm9iamVjdERvaW5nU2lkZUVmZmVjdFB1
dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29w
ZSBhc3NlcnRTY29wZTsKQEAgLTI4MDAsNiArMjg1MCw3IEBAIHZvaWQgSlNEb2xsYXJWTTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlV2FzbVN0cmVh
bWluZ1BhcnNlciIsIGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ1BhcnNlciwgMCk7CiAjZW5k
aWYKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yIiwgZnVu
Y3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvciwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0s
ICJjcmVhdGVPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMi
LCBmdW5jdGlvbkNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xv
dFN0YXR1cywgMCk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRQcml2YXRlUHJvcGVydHkiLCBm
dW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eSwgMik7CiAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJ
bXB1cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIp
OwogCkBAIC0yODQ2LDYgKzI4OTcsOCBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNXYXNtU3VwcG9ydGVkIiwgZnVuY3Rp
b25Jc1dhc21TdXBwb3J0ZWQsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAibWFrZTE2Qml0U3Ry
aW5nSWZQb3NzaWJsZSIsIGZ1bmN0aW9uTWFrZTE2Qml0U3RyaW5nSWZQb3NzaWJsZSwgMSk7CisK
KyAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3Jy
ZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgp
KSk7CiB9CiAKIHZvaWQgSlNEb2xsYXJWTTo6YWRkRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQpAQCAtMjg2Miw2ICsyOTE1LDEzIEBAIHZvaWQgSlNE
b2xsYXJWTTo6YWRkQ29uc3RydWN0aWJsZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCks
IGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKIH0KIAordm9pZCBKU0RvbGxhclZN
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNEb2xsYXJWTSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RvbGxhclZNKj4oY2VsbCk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3Jy
ZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBJR05P
UkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaApp
bmRleCAxYzkyNmI5Y2M1ZGVhMGM3NzY5MWEyY2JmNGU1MTA5M2E0NDY2NjI1Li5jNzU4OWUwMjA1
YzRjZjA2NmE4N2EwNTA1NGU5ZTMzNjBmNzc0ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmgKQEAgLTU0LDYgKzU0LDggQEAgY2xhc3MgSlNEb2xsYXJWTSBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KKworICAgIFN0cnVj
dHVyZSogb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgSlNEb2xs
YXJWTShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNjIsMTAgKzY0LDEzIEBAIGNs
YXNzIEpTRG9sbGFyVk0gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgfQogCi0KICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cyk7CiAgICAgdm9pZCBhZGRDb25zdHJ1Y3RpYmxlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMp
OworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQ
dXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMTYyY2I4NTc1NGUwMmY2ZWQ5MGI3NzViMjUyY2YxZjc3ZDVmM2IxNC4u
NmQ3MjFhOGRmODc4MjI2NTMzNDdkZTJmODJiYTI1NTIyNWVjNTk3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI2NzYs
NiArMjY3NiwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCBkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpIYXNQ
dXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sifSA9IDE7CiAgICAgfQorCisgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gfHwgR2V0TmFtZWRTZXR0ZXJPcGVyYXRp
b24oJGludGVyZmFjZSkpIHsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OlByb2hpYml0
c1Byb3BlcnR5Q2FjaGluZyJ9ID0gMTsKKyAgICB9CiAgICAgCiAgICAgaWYgKEluc3RhbmNlT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcygkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTtcbiIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5oCmluZGV4IDBmNWM2YWFiMzg5YmJmMjE5NjZkMTlkOTNlODIxMTcxNWE5OGU3MmUuLmZkZDdi
MDNlYzJmZTVhMTFkZTMyOWQ2ZTM1YzIzZjI4OGFjMWMxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTU3LDcg
KzU3LDcgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRBbmQKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9y
UHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggYTQ2MmVkNjVkYzgwNmU1ZjMzODQz
OTJjMTJkYTljNjdmYzllNDk0ZC4uMTk3NTc5NmY4NjY4NzI1ZWQwMmY2ZDRlNGZiMDIyNWM1OTcx
NGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3ROYW0KICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5oCmluZGV4IGU5MDQ0ZjVlNTFlN2Y1MDNjY2M5NmY3MDc5NzY2N2FlZGFiOWYw
NDEuLmNhMjAxZTA3ODc0MzEzMDU1YWFjZjdiMjIxZTFkOWViNmU0MTdiMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRBCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2Ug
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogcHJv
dGVjdGVkOgogICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaAppbmRleCAzOWI4NzVmMjFkNzA2NDA5ZjZiYzc5NWFlZjY1YTI5NzRl
Zjg1Y2JjLi5jMTE0ZDI4YWQ1N2FiYTYxNjdkYTk2YWVmMDIyMjQyZTU5NDk3MjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTcsNyArNTcsNyBA
QCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXI8VGVzdE5hbWVkU2V0dGVyTm9JZGVudAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0
eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blBy
b3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj4mJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDZkMjU0NWM0NmJh
OTI2MjFmNzA2NmVkOTBlMTBlYWFjNDhhNjMyOGYuLjQ3OWYxNjFkOTg4NjEwNDc4YWViMjEzMTlk
N2IwNDI5NzEyNzQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJU
aAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuaAppbmRleCBiOWYyMDBjNmE0ZmIxNGE5M2IyZWI4ODNjOTI1M2Qw
N2I2NTdlYmFmLi5kMTUzNWNkZmE4YzQ5NjMxNGY5NTlkYzY0OTg5ZTBkM2UyOTg0NDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU3LDcg
KzU3LDcgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA6IHB1YmxpYyBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9y
UHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiYmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXgg
ZmQyYzZhYTFhNGYwNGI2YjAwOGZmOGViMWU5YzA0Yzg2OTZkNzMwZC4uM2U4MmVhZjZlZmQyYzEx
YmI2ZjliNjc2ODgzZWE5MGE4Y2QzYmI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RO
YW1lZFNldHRlcldpCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCmlu
ZGV4IGQ4NTcwNTQzODhiMjRkZGIxY2E0YjI4MDE4ZmQ2M2UyZDc0ZTY0YTIuLmViMzdkMjNkODU5
ZDVlN2JjZDUwNzdmZDE1YTE4MjJkZWRiMDhlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaApAQCAtNTcs
NyArNTcsNyBAQCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZQogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAg
ICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCA3NmIyNWQwNGIyZjMyOGU2OWU1NTkzNGI5
NjhlYjY2ZGYxZDIyZGE1Li43ZGU1MWRmOWQ1NDA2MWIyNzI3ZTJkYjUzZmQ0ZWVmMTIwMDk1YTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGUKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3Bl
cnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jiwg
UmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMu
aAppbmRleCA5Y2RhZWFhOWVlNTZmZGJlMTgyODdmYTczY2FmMGMyZjJkMTFjMmEyLi5hMDE0M2Q3
NGY5NTZjNmE1N2E4YTJhZTUyMWU4NmQ1N2QxOTBkOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaApAQCAtNTcs
NyArNTcsNyBAQCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkUwogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUgfCBKU0M6Oklu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8g
fCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJl
Rm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoK
ICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyhKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcz4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMuaAppbmRleCBhMTQ3NzQyOTcwOGM1Y2NhNjQ1NjM5NTg4Y2FlY2JjYWYyM2Q0
MTI0Li5mODU2NDZmZWFmMjhhZDY0ODMzYWEwYmFjZDEwNDg5ZGU0MzYzN2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCkBAIC01Nyw3ICs1Nyw3
IEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6
SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5
VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
OwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKaW5kZXggYjhkZTNl
NTYxNjQ5MDk1MmM1OWQzYWVlNDc2MzI1NmQyMTUwZjczYi4uYmZkOTU2NWIwODMyNTgxZDMyNjY5
ODkwNDU1NzZlNjMwNjNkMzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaApAQCAt
NTgsNyArNTgsNyBAQCBjbGFzcyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UgOiBwdWJsaWMgSlNET01X
cmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+IHsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBS
ZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNmJjZjFjNWZkMzdkZmQ3ZjFlZDJhNzgxMGJlODll
NTJmMDIwMDMzLi5jNjllMjM0ZWI0YWY5MTZiMjUyMDRkMWFiMmUxNTI5Y2E3MDNiMzMwIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjAtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBHaXZlIHVwIElDIHdoZW4gdW5rbm93biBzdHJ1Y3R1cmUgdHJhbnNpdGlv
biBoYXBwZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYGNyYXNoIWAgYW5ub3RhdGlvbiwgd2hpY2ggYWxsb3dzIHVzIHRvIHdyaXRlIGEgY3Jh
c2hpbmcgSlMgdGVzdC4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVm
YXVsdC5yYjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdy
aXRlci1wbGF5c3RhdGlvbi5yYjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0
cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiOgorCiAyMDIwLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQjogc3BlZWQgdXAgaW5kZXggcmVj
b3JkcyBkZWxldGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10
ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggZGZjMjBhYTYy
YzJhZGZmYTBiMzYxMDU3NWUxMWVmYzlmNGU4NjcyOS4uYmRiMWEzYjdlNmNhNjJmMGI0NzkzMmUy
M2Y5Y2MzOWM3ZDFmNjA1YiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVz
cy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC02MTIs
NiArNjEyLDEwIEBAIGRlZiBzbG93IQogICAgICRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XSA9
IHRydWUKIGVuZAogCitkZWYgY3Jhc2ghCisgICAgJHJ1bkNvbW1hbmRPcHRpb25zWzpzaG91bGRD
cmFzaF0gPSB0cnVlCitlbmQKKwogZGVmIHJlcXVpcmVPcHRpb25zKCpvcHRpb25zKQogICAgICR0
ZXN0U3BlY2lmaWNSZXF1aXJlZE9wdGlvbnMgKz0gb3B0aW9ucwogZW5kCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJi
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVs
dC5yYgppbmRleCBjMTc0YjFhYzA2NTcyMjZkYTNlZDIzODRmZTcyM2VkOTk1NzM2OWY5Li4wNGQ0
M2M4MDRiYjEwYjllZWZhOWNkZWQwZGFiNDljMjBlYjJkNDUyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQu
cmIKQEAgLTIyNiw2ICsyMjYsNyBAQCBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50
cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCiAgICAgICAgIEBv
dXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgogICAgICAgICBAZXJyb3JIYW5kbGVyID0gZXJy
b3JIYW5kbGVyCiAgICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93
XQorICAgICAgICBAc2hvdWxkQ3Jhc2ggPSAhISRydW5Db21tYW5kT3B0aW9uc1s6c2hvdWxkQ3Jh
c2hdCiAgICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KICAgICBlbmQKICAgICAKQEAgLTIzMyw3
ICsyMzQsNyBAQCBkZWYgc2hlbGxDb21tYW5kCiAgICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8g
cmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28g
aWYgd2UgY2hhbmdlIGRpcmVjdG9yeQogICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdl
IHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmlj
ZSBiZWNhdXNlIHdlIGRvbid0CiAgICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRz
IHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KLSAgICAgICAgc2NyaXB0ID0gIihj
ZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgKCIKKyAg
ICAgICAgc2NyaXB0ID0gIihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9y
eS50b19zKX0gJiYgI3tAc2hvdWxkQ3Jhc2ggPyAiISIgOiAiIn0oIgogICAgICAgICAoJGVudlZh
cnMgKyBhZGRpdGlvbmFsRW52KS5lYWNoIHsgfHZhcnwgc2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2
YXIgPDwgIjsgIiB9CiAgICAgICAgIHNjcmlwdCArPSAiXCIkQFwiICIgKyBlc2NhcGVBbGwoQGFy
Z3VtZW50cykgKyAiKSkiCiAgICAgICAgIHJldHVybiBzY3JpcHQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJi
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0
YXRpb24ucmIKaW5kZXggODJhMTE1YzExZDYwNWRjMmU5ZjYwZmQ3ZGZjMTVmZDAyN2FjMzdlOS4u
ODk2MjRlNDg4NTJmZDlmNWM3MDEwMzQxZDQxZDBjZWEzNTRmMGMxMyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0YXRpb24u
cmIKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXIt
cGxheXN0YXRpb24ucmIKQEAgLTI3Miw2ICsyNzIsNyBAQCBkZWYgaW5pdGlhbGl6ZShkaXJlY3Rv
cnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIp
CiAgICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgogICAgICAgICBAZXJyb3JI
YW5kbGVyID0gZXJyb3JIYW5kbGVyCiAgICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0
aW9uc1s6aXNTbG93XQorICAgICAgICBAc2hvdWxkQ3Jhc2ggPSAhISRydW5Db21tYW5kT3B0aW9u
c1s6c2hvdWxkQ3Jhc2hdCiAgICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KICAgICBlbmQKIApA
QCAtMjg3LDYgKzI4OCw5IEBAIGRlZiBzaGVsbENvbW1hbmQKICAgICAgICAgc2NyaXB0ICs9ICJp
ZiAoc3RhdHVzID09IDApXG4iCiAgICAgICAgIHNjcmlwdCArPSAiICBzdWNjZXNzID0gdHJ1ZVxu
IgogICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgorICAgICAgICBzY3JpcHQgKz0gImlmICgje0Bz
aG91bGRDcmFzaH0pXG4iCisgICAgICAgIHNjcmlwdCArPSAiICBzdWNjZXNzID0gIXN1Y2Nlc3Nc
biIKKyAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIKIAogICAgICAgICBzY3JpcHQgKz0gIm91dCA9
IEZpbGUub3BlbihcIiN7bn0tc3Rkb3V0XCIsIFwiclwiKS5yZWFkXG4iCiAgICAgICAgIHNjcmlw
dCArPSAiZXJyID0gRmlsZS5vcGVuKFwiI3tufS1zdGRlcnJcIiwgXCJyXCIpLnJlYWRcbiIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVy
LXJ1YnkucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRl
ci1ydWJ5LnJiCmluZGV4IDZlOTdlODg4OTY4YTUxMTUwMzJmNzQxZmEyNjJhNTkxM2E1NDkwNzku
LmUyMWU2YjRjYjE2MTZlZGQ0ODhhNmFhMDNlN2JjMzFiOTZlMmFhZWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1YnkucmIKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcnVieS5y
YgpAQCAtNzAsNyArNzAsNyBAQCBkZWYgbm9pc3lPdXRwdXRIYW5kbGVyCiBkZWYgc2ltcGxlRXJy
b3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAg
ICBvdXRwLnB1dHMgImlmICFzdGF0dXMuc3VjY2Vzcz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJp
ZiAhc3VjY2VzcyhzdGF0dXMpXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBw
cmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0
c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCiAgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgpAQCAt
ODMsNyArODMsNyBAQCBkZWYgc2ltcGxlRXJyb3JIYW5kbGVyCiBkZWYgZXhwZWN0ZWRGYWlsRXJy
b3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAg
ICBvdXRwLnB1dHMgImlmIHN0YXR1cy5zdWNjZXNzP1xuIgorICAgICAgICBvdXRwLnB1dHMgImlm
IHN1Y2Nlc3Moc3RhdHVzKVxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSAwXFxuXCIiLCBwbGFuLm5h
bWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCkBAIC05Nyw3ICs5Nyw3IEBAIGRlZiBleHBl
Y3RlZEZhaWxFcnJvckhhbmRsZXIKIGRlZiBub2lzeUVycm9ySGFuZGxlcgogICAgIFByb2MubmV3
IHsKICAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3RhdHVz
LnN1Y2Nlc3M/XG4iCisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgog
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFu
Lm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3Ry
aW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31c
XG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZApAQCAtMTYyLDcgKzE2Miw3IEBAIGRlZiBkaWZmRXJyb3JIYW5kbGVy
KGV4cGVjdGVkRmlsZW5hbWUpCiAgICAgICAgIHwgb3V0cCwgcGxhbiB8CiAgICAgICAgIG91dHB1
dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxh
bi5uYW1lICsgIi5vdXQiKSkudG9fcykKICAgICAgICAgCi0gICAgICAgIG91dHAucHV0cyAiaWYg
IXN0YXR1cy5zdWNjZXNzP1xuIgorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1
cylcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0
IiwgcGxhbi5uYW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRz
dGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMTg4LDcgKzE4OCw3IEBAIGRlZiBkaWZmRXJyb3JIYW5k
bGVyKGV4cGVjdGVkRmlsZW5hbWUpCiBkZWYgbW96aWxsYUVycm9ySGFuZGxlcgogICAgIFByb2Mu
bmV3IHsKICAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3Rh
dHVzLnN1Y2Nlc3M/XG4iCisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxu
IgogICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBw
bGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4
U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1
c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMjA3LDcgKzIwNyw3IEBAIGRlZiBtb3ppbGxhRXJyb3JI
YW5kbGVyCiBkZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAg
ICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN0YXR1cy5zdWNjZXNz
P1xuIgorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKICAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRz
ICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5zdWNjZXNzQ29tbWFuZApAQCAtMjIzLDcgKzIyMyw3IEBAIGRlZiBtb3ppbGxhRmFpbEVy
cm9ySGFuZGxlcgogZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgogICAgIFByb2MubmV3IHsK
ICAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiBzdGF0dXMuc3Vj
Y2Vzcz9cbiIKKyAgICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKICAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1l
KSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
XCJFUlJPUjogVGVzdCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5
XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiAr
IHBsYW4uZmFpbENvbW1hbmQKQEAgLTI0Niw3ICsyNDYsNyBAQCBkZWYgbW96aWxsYUV4aXQzRXJy
b3JIYW5kbGVyCiBkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7
CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN0YXR1cy5z
dWNjZXNzP1xuIgorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKICAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5u
YW1lKSArICJcbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxu
XCIiLCBwbGFuLm5hbWUpICsgIlxuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZApAQCAtMjcyLDYgKzI3Miw3IEBAIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwg
YXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKICAg
ICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCiAgICAgICAgIEBlcnJvckhhbmRs
ZXIgPSBlcnJvckhhbmRsZXIKICAgICAgICAgQGlzU2xvdyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25z
Wzppc1Nsb3ddCisgICAgICAgIEBzaG91bGRDcmFzaCA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpz
aG91bGRDcmFzaF0KICAgICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQogICAgIGVuZAogICAgIApA
QCAtMjk3LDYgKzI5OCwxMiBAQCBkZWYgcmVwcm9TY3JpcHRIZWxwZXIKICAgICAgICAgc2NyaXB0
ID0gImRlZiBlcnJvcl9zY3JpcHRfY29udGVudHNcbiIKICAgICAgICAgc2NyaXB0ICs9ICIgICAg
PDwtRU5EX09GX1NDUklQVFxuIgogICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgcmVxdWlyZSAn
b3BlbjMnXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBkZWYgc3VjY2VzcyhzdGF0dXMp
XG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgaWYgKCN7QHNob3VsZENyYXNofSlc
biIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICAgICAgIXN0YXR1cy5zdWNjZXNzP1xu
IgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGVsc2VcbiIKKyAgICAgICAgc2NyaXB0
ICs9ICIgICAgICAgICAgICAgICAgc3RhdHVzLnN1Y2Nlc3M/XG4iCisgICAgICAgIHNjcmlwdCAr
PSAiICAgICAgICBlbmRcbiIKICAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIHNjcmlwdF9sb2Nh
dGlvbiA9IEZpbGUuZXhwYW5kX3BhdGgoRmlsZS5kaXJuYW1lKF9fRklMRV9fKSlcbiIKICAgICAg
ICAgc2NyaXB0ICs9ICIgICAgICAgIERpci5jaGRpcihcIlxcXCN7c2NyaXB0X2xvY2F0aW9ufSIK
ICAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1lLmVhY2hfZmlsZW5hbWUgewpAQCAt
MzA5LDcgKzMxNiw3IEBAIGRlZiByZXByb1NjcmlwdEhlbHBlcgogCiAgICAgICAgIHNjcmlwdCAr
PSAiICAgICAgICAgICAgI3tzaGVsbENvbW1hbmR9IgogICAgICAgICBzY3JpcHQgKz0gIiAgICAg
ICAgICAgIHByaW50IG91dFxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGlmICgh
c3RhdHVzLnN1Y2Nlc3M/KVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGlmICgh
c3VjY2VzcyhzdGF0dXMpKVxuIgogICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgICAgICBl
eGl0KDEpXG4iCiAgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgZW5kXG4iCiAgICAgICAg
IHNjcmlwdCArPSAiICAgICAgICBlbmRcbiIKQEAgLTM1MSw3ICszNTgsNyBAQCBkZWYgZmFpbEZp
bGUKIAogICAgIGRlZiBzdGF0dXNXcml0ZQogICAgICAgICA8PC1FTkRfU1RBVFVTX1dSSVRFCi0g
ICAgICAgICAgICBpZiAhc3RhdHVzLnN1Y2Nlc3M/CisgICAgICAgICAgICBpZiAhc3VjY2Vzcyhz
dGF0dXMpCiAgICAgICAgICAgICAgICAgRmlsZS5vcGVuKCIje2ZhaWxGaWxlfSIsICJ3IikgZG8g
fGNvZGVfZmlsZXwKICAgICAgICAgICAgICAgICAgICAgY29kZV9maWxlLnB1dHMgc3RhdHVzLmV4
aXRzdGF0dXMKICAgICAgICAgICAgICAgICBlbmQKQEAgLTM2Nyw2ICszNzQsMTIgQEAgZGVmIHdy
aXRlUnVuU2NyaXB0KGZpbGVuYW1lKQogICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKICAg
ICAgICAgICAgIG91dHAucHV0cyAicmVxdWlyZSAnb3BlbjMnIgogICAgICAgICAgICAgb3V0cC5w
dXRzICJyZXF1aXJlICdmaWxldXRpbHMnIgorICAgICAgICAgICAgb3V0cC5wdXRzICJkZWYgc3Vj
Y2VzcyhzdGF0dXMpIgorICAgICAgICAgICAgb3V0cC5wdXRzICIgICAgaWYgKCN7QHNob3VsZENy
YXNofSkiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIXN0YXR1cy5zdWNjZXNzPyIK
KyAgICAgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisgICAgICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgc3RhdHVzLnN1Y2Nlc3M/IgorICAgICAgICAgICAgb3V0cC5wdXRzICJlbmQiCiAK
ICAgICAgICAgICAgIGNtZCA9IHNoZWxsQ29tbWFuZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWRmY2FlOWQ2ZDJkOWEz
NjY1YjU2ZTU3NTk2ZThlMDczYjRlMjBiZC4uYTY3NzA1OGU4MmY1ZTcwNzdlY2JkN2YwMGIyMDAy
NmUyYzE4YTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTI4ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gR2l2ZSB1cCBJQyB3aGVu
IHVua25vd24gc3RydWN0dXJlIHRyYW5zaXRpb24gaGFwcGVucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vcHV0LW92ZXJyaWRlLXNob3Vs
ZC1ub3QtdXNlLWljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL3B1dC1v
dmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sOiBBZGRlZC4KKwogMjAyMC0wMS0yOCAgVHJ1
aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvd3VwIHRvIHIy
NTUyNjQgdG8gYmV0dGVyIHNwZWNpZnkgZXhwZWN0YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0NTY1NzIxN2VjYmU3ZTVlZTNlYTEzODM4YzZiMDg0MWM5YWQ2
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNo
b3VsZC1ub3QtdXNlLWljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBET00g
b2JqZWN0IG92ZXJyaWRpbmcgOjpwdXQgb3BlcmF0aW9uIHNob3VsZCBub3QgYWxsb3cgSUMgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11
c2UtaWMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11
c2UtaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmI4M2YzYmUwMzM4N2M1NzUzZjhiODk2ZTVkYjQ5ZWIw
ZjFhYWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlk
ZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
KyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBmdW5jdGlvbiB0cmFuc2l0aW9uZWQoKSB7
CisgICAgICAgICAgICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKS5zdHlsZTsK
KyAgICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICAgICAgICAg
IHN0eWxlWydwJytpXSA9IGk7CisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBwdXR0ZXIobykgeworICAgICAgICAgICAgby5fdW5zdXBwb3J0
ZWRDU1NQcm9wZXJ0eSA9IG5vdF9zdHJpbmc7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY291
bnQgPSAwOworICAgICAgICB2YXIgZXhwZWN0ZWRDb3VudCA9IDUwOworICAgICAgICB2YXIgbm90
X3N0cmluZyA9IHsKKyAgICAgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgICsr
Y291bnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuICJIZWxsbyI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZENvdW50OyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBvYmplY3QgPSB0cmFuc2l0aW9uZWQoKTsKKyAgICAgICAg
ICAgIHB1dHRlcihvYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudCwgZXhwZWN0ZWRDb3VudCk7CisgICAgfSwgIkRPTSBvYmplY3Qgb3ZlcnJpZGluZyA6OnB1
dCBvcGVyYXRpb24gc2hvdWxkIG5vdCBhbGxvdyBJQyIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDdjOGMyM2MxZjRmNzI0MmFkM2NlODhhYzU5MWMzYmU0OWNkZDRlZWUuLjhiY2NmODc5
ZGMzZjU2Njc5N2ZhN2JlNjYwNTNiZjYxNjA1N2YxM2QgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDEt
MjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBH
aXZlIHVwIElDIHdoZW4gdW5rbm93biBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBoYXBwZW5zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9lbnN1
cmUtY3Jhc2guanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxk
LWdlbmVyYXRlLWludmFsaWQtaWMtYnV0LXN0aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1i
YWQtdHJhbnNpdGlvbi1kZWJ1Zy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChwdXR0ZXIpOgorICAgICAgICAobm90X3N0cmluZy50b1N0cmluZyk6CisgICAgICAgICog
c3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1idXQtc3RpbGwt
bm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLWJhZC10cmFuc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHB1dHRlcik6CisgICAgICAgIChub3Rfc3RyaW5nLnRv
U3RyaW5nKToKKyAgICAgICAgKiBzdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1p
bnZhbGlkLWljLWJ1dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3IuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocHV0dGVyKToKKyAgICAgICAgKG5vdF9zdHJp
bmcudG9TdHJpbmcpOgorICAgICAgICAqIHN0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVy
YXRlLWludmFsaWQtaWMtaW52b2x2aW5nLWRpY3Rpb25hcnktZmxhdHRlbi5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChkaWN0aW9uYXJ5KToKKyAgICAgICAgKHB1dHRl
cik6CisgICAgICAgIChub3Rfc3RyaW5nLnRvU3RyaW5nKToKKwogMjAyMC0wMS0yOCAgUGF1bG8g
TWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBTa2lwIHRlc3QgbnVtYmVyaW5n
U3lzdGVtc0ZvckxvY2FsZS1jYWNoZWQtc3RyaW5ncy1zaG91bGQtYmUtaW1tb3J0YWwtYW5kLXNh
ZmUtZm9yLWNvbmN1cnJlbnQtYWNjZXNzLmpzIGluIGFybSBhbmQgbWlwcwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZW5zdXJlLWNyYXNoLmpzIGIvSlNUZXN0cy9zdHJlc3MvZW5zdXJlLWNy
YXNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFmODYzMjdmOWNmZTMyZWY3YTY0ODRlYjY1MzcxNjRkNDljMzg4
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9lbnN1cmUtY3Jhc2guanMKQEAg
LTAsMCArMSwzIEBACisvL0AgY3Jhc2ghCisKKyR2bS5jcmFzaCgpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZhbGlkLWljLWJ1dC1z
dGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3ItYmFkLXRyYW5zaXRpb24tZGVidWcuanMgYi9K
U1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMtYnV0
LXN0aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1iYWQtdHJhbnNpdGlvbi1kZWJ1Zy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZDU0MzIwMGYyZWY4NGQwOTllZjUwZGZjOTEyNmM3YThjN2U5MWExCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0
ZS1pbnZhbGlkLWljLWJ1dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3ItYmFkLXRyYW5z
aXRpb24tZGVidWcuanMKQEAgLTAsMCArMSwzMCBAQAorLy9AIHNraXAgaWYgJGJ1aWxkVHlwZSAh
PSAiZGVidWciCisvL0AgY3Jhc2ghCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHB1dHRlciA9IGZ1bmN0aW9uKG8p
IHsKKyAgICBvLl91bnN1cHBvcnRlZCA9IG5vdF9zdHJpbmc7Cit9CisKK3ZhciBvYmplY3Q7Cit2
YXIgY291bnRlciA9IDA7Cit2YXIgbm90X3N0cmluZyA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAg
ICAgICAgY291bnRlcisrOworICAgICAgICBvYmplY3Qub2sgPSA0MjsKKyAgICAgICAgcmV0dXJu
ICJIZXkiOworICAgIH0KK307CisKK29iamVjdCA9ICR2bS5jcmVhdGVPYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoKTsKK29iamVjdC5fdW5zdXBwb3J0ZWQg
PSA1MDsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBvYmplY3QgPSAk
dm0uY3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVz
KCk7CisgICAgcHV0dGVyKG9iamVjdCk7CisgICAgc2hvdWxkQmUob2JqZWN0Ll91bnN1cHBvcnRl
ZCwgIkhleSIpOworfQorc2hvdWxkQmUoY291bnRlciwgMTAwMCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMtYnV0LXN0
aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1iYWQtdHJhbnNpdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1idXQtc3RpbGwt
bm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLWJhZC10cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
ZTc1OWU5NjRiNjJjM2FkMmRjZTg3MTdlN2UyN2M3OWUwMzljOWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbmNvcnJlY3QtcHV0LWNvdWxkLWdlbmVyYXRlLWludmFsaWQtaWMt
YnV0LXN0aWxsLW5vdC1jYXVzaW5nLWJhZC1iZWhhdmlvci1iYWQtdHJhbnNpdGlvbi5qcwpAQCAt
MCwwICsxLDMzIEBACisvL0Agc2tpcCBpZiAkYnVpbGRUeXBlID09ICJkZWJ1ZyIKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
Cit2YXIgcHV0dGVyID0gZnVuY3Rpb24obykgeworICAgIG8uX3Vuc3VwcG9ydGVkID0gbm90X3N0
cmluZzsKK30KKwordmFyIG9iamVjdDsKK3ZhciBjb3VudGVyID0gMDsKK3ZhciBub3Rfc3RyaW5n
ID0geworICAgIHRvU3RyaW5nKCkgeworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIG9iamVj
dC5vayA9IDQyOworICAgICAgICByZXR1cm4gIkhleSI7CisgICAgfQorfTsKKworb2JqZWN0ID0g
JHZtLmNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1
cygpOworb2JqZWN0Ll91bnN1cHBvcnRlZCA9IDUwOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDA7ICsraSkgeworICAgIG9iamVjdCA9ICR2bS5jcmVhdGVPYmplY3REb2luZ1NpZGVFZmZlY3RQ
dXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMoKTsKKyAgICBwdXR0ZXIob2JqZWN0KTsKKyAgICBz
aG91bGRCZShvYmplY3QuX3Vuc3VwcG9ydGVkLCAiSGV5Iik7CisgICAgLy8gQXQgc29tZSBwb2lu
dCwgc2VtYW50aWNhbGx5IGluY29ycmVjdCByZXN1bHQgYXBwZWFycy4gYG9iamVjdC5vayA9IDQy
YCBkb2VzIG5vdCBpbnZva2UgOjpwdXQuCisgICAgLy8gQnV0IHRoZSBzdHJ1Y3R1cmUgaXMgc3Rp
bGwgY29ycmVjdC4KKyAgICBpZiAob2JqZWN0Lm9rICE9PSA0MiAmJiBvYmplY3Qub2sgIT09ICI0
MiIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiaW5jb3JyZWN0Iik7Cit9CitzaG91bGRCZShj
b3VudGVyLCAxMDAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQt
Y291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1idXQtc3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2
aW9yLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW5jb3JyZWN0LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZh
bGlkLWljLWJ1dC1zdGlsbC1ub3QtY2F1c2luZy1iYWQtYmVoYXZpb3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTk5NmYyZjQ0NGYwZTFiYzAxMTZjNTJiNzdkZWM4NGRiNzhiNWQzNQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1p
Yy1idXQtc3RpbGwtbm90LWNhdXNpbmctYmFkLWJlaGF2aW9yLmpzCkBAIC0wLDAgKzEsMjQgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCit2YXIgcHV0dGVyID0gZnVuY3Rpb24obykgeworICAgIG8uX3Vuc3VwcG9ydGVk
ID0gbm90X3N0cmluZzsKK30KKwordmFyIG9iamVjdDsKK3ZhciBjb3VudGVyID0gMDsKK3ZhciBu
b3Rfc3RyaW5nID0geworICAgIHRvU3RyaW5nKCkgeworICAgICAgICBjb3VudGVyKys7CisgICAg
ICAgIG9iamVjdC5vayA9IDQyOworICAgICAgICByZXR1cm4gIkhleSI7CisgICAgfQorfTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBvYmplY3QgPSAkdm0uY3JlYXRl
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKCk7CisgICAg
cHV0dGVyKG9iamVjdCk7Cit9CitzaG91bGRCZShjb3VudGVyLCAxMDAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQtZ2VuZXJhdGUtaW52YWxpZC1pYy1p
bnZvbHZpbmctZGljdGlvbmFyeS1mbGF0dGVuLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW5jb3JyZWN0
LXB1dC1jb3VsZC1nZW5lcmF0ZS1pbnZhbGlkLWljLWludm9sdmluZy1kaWN0aW9uYXJ5LWZsYXR0
ZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTc4ZTE5ZmMxNzg5MjlmNjdkZDBiNDlmZDA2NzY0Y2VhYWFmMjQy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2luY29ycmVjdC1wdXQtY291bGQt
Z2VuZXJhdGUtaW52YWxpZC1pYy1pbnZvbHZpbmctZGljdGlvbmFyeS1mbGF0dGVuLmpzCkBAIC0w
LDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBkaWN0aW9uYXJ5KCkgeworICAgIHZhciBv
YmplY3QgPSAkdm0uY3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RT
bG90U3RhdHVzKCk7CisgICAgZm9yKHZhciBpID0gMDsgaSA8IDY2OyBpKyspCisgICAgICAgIG9i
amVjdFsncCcraV0gPSBpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK2Z1bmN0aW9uIHB1dHRl
cihvKSB7CisgICAgby5fdW5zdXBwb3J0ZWQgPSBub3Rfc3RyaW5nOworfQorCit2YXIgZDsKK3Zh
ciBub3Rfc3RyaW5nID0geworICAgIHRvU3RyaW5nKCkgeworICAgICAgICBmb3IodmFyIGkgPSAz
OyBpIDwgNjY7IGkrKykKKyAgICAgICAgICAgIGRlbGV0ZSBkWydwJytpXTsKKyAgICAgICAgZm9y
KGkgaW4gT2JqZWN0LmNyZWF0ZShkKSk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK307
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBkID0gZGljdGlvbmFyeSgp
OworICAgIHB1dHRlcihkKTsKKyAgICBzaG91bGRCZSgncDMnIGluIGQsIGZhbHNlKTsKK30K
</data>
<flag name="review"
          id="404788"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>