<?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>173662</bug_id>
          
          <creation_ts>2017-06-21 10:36:47 -0700</creation_ts>
          <short_desc>Web Inspector: move Inspector::Protocol::Array&lt;T&gt; to JSON namespace</short_desc>
          <delta_ts>2017-12-01 15:46:30 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>173793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321544</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-06-21 10:36:47 -0700</bug_when>
    <thetext>This is really the parametric version of JSON::Array. It should be alongside that so we can improve both to have more consistent API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321627</commentid>
    <comment_count>1</comment_count>
      <attachid>313550</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-06-21 14:19:19 -0700</bug_when>
    <thetext>Created attachment 313550
Patch

Depends on earlier renaming, so it won&apos;t build. I&apos;ll attach a combined patch when I&apos;m done with this series.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321629</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-21 14:21:34 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321630</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-21 14:21:50 -0700</bug_when>
    <thetext>Attachment 313550 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/InspectorProtocolTypes.h:156:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 56 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323718</commentid>
    <comment_count>4</comment_count>
      <attachid>313550</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-28 16:20:31 -0700</bug_when>
    <thetext>Comment on attachment 313550
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Move the parametric JSON array type to the JSON namespace, alongside JSON::Array.
&gt; +        Rename it to ArrayOf&lt;T&gt; so that it reads well in most cases. This also avoids
&gt; +        overloading the term &quot;typed array&quot; or similar concepts in the code base.

This patch seems out of date. It introduces JSON::TypedArray&lt;T&gt; but the changelog says it wants to introduce JSON::ArrayOf&lt;T&gt;.

Is this just an outdated patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376518</commentid>
    <comment_count>5</comment_count>
      <attachid>328030</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-30 14:31:53 -0800</bug_when>
    <thetext>Created attachment 328030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376653</commentid>
    <comment_count>6</comment_count>
      <attachid>328058</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-30 16:56:19 -0800</bug_when>
    <thetext>Created attachment 328058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376930</commentid>
    <comment_count>7</comment_count>
      <attachid>328124</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-01 11:15:46 -0800</bug_when>
    <thetext>Created attachment 328124
Fix Mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376939</commentid>
    <comment_count>8</comment_count>
      <attachid>328124</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-01 11:28:47 -0800</bug_when>
    <thetext>Comment on attachment 328124
Fix Mac builds

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

Looks good, but fix the test then I&apos;ll re-review.

&gt; Source/WTF/wtf/JSONValues.h:435
&gt; +    Array&amp; openAccessors()
&gt; +    {
&gt; +        COMPILE_ASSERT(sizeof(Array) == sizeof(ArrayOf&lt;T&gt;), cannot_cast);
&gt; +        return *static_cast&lt;Array*&gt;(static_cast&lt;ArrayBase*&gt;(this));
&gt; +    }

I&apos;ve never like the name `openAccessors()`. Maybe something like `asArray()`? Moot point though since it is only used right here.

&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:256
&gt; +    array-&gt;addItem(1);
&gt; +    EXPECT_EQ(array-&gt;length(), 3U);
&gt; +    value = array-&gt;get(2);
&gt; +    EXPECT_TRUE(value-&gt;type() == JSON::Value::Type::Integer);
&gt; +    int integerValue;
&gt; +    EXPECT_TRUE(value-&gt;asInteger(integerValue));
&gt; +    EXPECT_EQ(integerValue, 1);

I&apos;d expect the length to be 2 here, not 3. So the get should be `-&gt;get(1)`. The array only has the null added above. Maybe given the comment about booleans everything shifted a number.

&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:259
&gt; +    EXPECT_EQ(array-&gt;length(), 4U);

3U and so on...

&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:299
&gt; +    value = it-&gt;get();
&gt; +    EXPECT_TRUE(value-&gt;type() == JSON::Value::Type::Boolean);
&gt; +    ++it;
&gt; +    EXPECT_FALSE(it == array-&gt;end());

Yeah, there is no boolean in the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377002</commentid>
    <comment_count>9</comment_count>
      <attachid>328124</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-01 13:07:26 -0800</bug_when>
    <thetext>Comment on attachment 328124
Fix Mac builds

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:256
&gt;&gt; +    EXPECT_EQ(integerValue, 1);
&gt; 
&gt; I&apos;d expect the length to be 2 here, not 3. So the get should be `-&gt;get(1)`. The array only has the null added above. Maybe given the comment about booleans everything shifted a number.

Yep, forgot to double check.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:259
&gt;&gt; +    EXPECT_EQ(array-&gt;length(), 4U);
&gt; 
&gt; 3U and so on...

Gah. Fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377036</commentid>
    <comment_count>10</comment_count>
      <attachid>328151</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-01 13:53:48 -0800</bug_when>
    <thetext>Created attachment 328151
Take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377065</commentid>
    <comment_count>11</comment_count>
      <attachid>328151</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-01 14:19:04 -0800</bug_when>
    <thetext>Comment on attachment 328151
Take 2

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

r=me. Watch the bots closely!

&gt; Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:240
&gt; +    Ref&lt;JSON::ArrayOf&lt;JSON::Value&gt;&gt; array = JSON::ArrayOf&lt;JSON::Value&gt;::create();

You normally auto these =)

This test actually brings to mind that JSON doesn&apos;t allow cyclic references but a programmer could create a cyclic reference.

It is certainly a programmer error to do so. But what happens in this case?

    auto array = JSON::ArrayOf&lt;JSON::Value&gt;::create();
    array-&gt;addItem(array);
    array-&gt;toJSONString();

It seems we would infinite loop. Since there is no cycle detection.

I wonder if we should have any kind of mitigations / detection with assertions. Certainly not part of this patch but something to think about. A straightforward approach would be:

    String toJSONString()
    {
    #ifndef NDEBUG
        assertValidity();
    #endif
        StringBuilder result;
        result.reserveCapacity(512);
        writeJSON(result);
        return result.toString();
    }

But catching issues would be even better if the moment an item is added and a cycle is detected that we catch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377107</commentid>
    <comment_count>12</comment_count>
      <attachid>328151</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 15:45:55 -0800</bug_when>
    <thetext>Comment on attachment 328151
Take 2

Clearing flags on attachment: 328151

Committed r225425: &lt;https://trac.webkit.org/changeset/225425&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377108</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 15:45:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377110</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-01 15:46:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/35807927&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313550</attachid>
            <date>2017-06-21 14:19:19 -0700</date>
            <delta_ts>2017-11-28 15:41:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173662-20170621141918.patch</filename>
            <type>text/plain</type>
            <size>165305</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2QzNWNlYTgwNTViMTc0OGVlNjEzYjljNGRhODFlODY4MWNjYTFmLi4wYTNjZTA2ZmNhZGE4ZWE1
ZjhhMmNkZWYyNWMyMzI3MGYzNDBmNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMTctMDYtMjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxU
PiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgcGFyYW1ldHJpYyBKU09OIGFycmF5IHR5cGUgdG8gdGhlIEpT
T04gbmFtZXNwYWNlLCBhbG9uZ3NpZGUgSlNPTjo6QXJyYXkuCisgICAgICAgIFJlbmFtZSBpdCB0
byBBcnJheU9mPFQ+IHNvIHRoYXQgaXQgcmVhZHMgd2VsbCBpbiBtb3N0IGNhc2VzLiBUaGlzIGFs
c28gYXZvaWRzCisgICAgICAgIG92ZXJsb2FkaW5nIHRoZSB0ZXJtICJ0eXBlZCBhcnJheSIgb3Ig
c2ltaWxhciBjb25jZXB0cyBpbiB0aGUgY29kZSBiYXNlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlByb3RvY29sOjpQcmltaXRpdmVCaW5kaW5nVHJhaXRzOjphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPEpTT046
OkFycmF5T2Y8VD4+OjpydW50aW1lQ2FzdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlByb3RvY29s
OjpCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8VD4+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPEpTT046
OlZhbHVlPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0OjpPcHRPdXRwdXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0OjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0Ojppc0Fzc2lnbmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDo6Z2V0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk6OkFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5OjpvcGVuQWNjZXNzb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5OjphZGRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCB0byBJbnNwZWN0b3JW
YWx1ZXMuaCwgc29vbiB0byBiZSBKU09OVmFsdWVzLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAgIChKU09OOjpBcnJheU9mOjpBcnJheU9mKToKKyAg
ICAgICAgKEpTT046OkFycmF5T2Y6Om9wZW5BY2Nlc3NvcnMpOgorICAgICAgICAoSlNPTjo6QXJy
YXlPZjo6YWRkSXRlbSk6CisgICAgICAgIChKU09OOjpBcnJheU9mOjpjcmVhdGUpOgorICAgICAg
ICBNb3ZlZCB0byBoZXJlIGFuZCByZW5hbWVkLgorCisgICAgICAgIFRoZSByZW1haW5kZXIgb2Yg
dGhlc2UgY2hhbmdlcyBhcmUgbWVjaGFuaWNhbCByZW5hbWluZ3MuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVz
OjpzZWFyY2hJblRleHRCeUxpbmVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxpdGllcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRDb2xsZWN0aW9uRW50
cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1l
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VF
dmFsQ2FsbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZTo6c2VuZFN1Y2Nlc3MpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
ZGlzcGF0Y2gpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJl
c3BvbnNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5k
aW5nRXJyb3JzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldFBy
b3BlcnR5VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpjYXN0VG9JbnRlZ2VyKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6Y2FzdFRvTnVtYmVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OmdldEludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OmdldFN0cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRCb29sZWFuKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldE9i
amVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheSk6
CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaDoKKworICAgICAgICAqIGluc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3Rh
Y2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFp
bnMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNv
bnRlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW50Q2FsbEZyYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zm
c2V0cyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFz
aWNCbG9ja3MpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRTYW1wbGVzKToKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHk6CisgICAgICAgIChD
cHBHZW5lcmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9yX3R5cGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5w
eToKKyAgICAgICAgKF9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluLkpTT04pOgorICAgICAg
ICAoX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21haW4uSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5OgorICAg
ICAgICAoT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKToKKyAgICAgICAgKE9i
akNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9leHBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNo
YXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0
Lmg6CisKIDIwMTctMDYtMjAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogdXNlIEpTT046OntBcnJheSxPYmplY3QsVmFsdWV9IGluc3RlYWQg
b2YgSW5zcGVjdG9ye0FycmF5LE9iamVjdCxWYWx1ZX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjdjZmZlYmE1
OWI4ZWQ0Y2FjYjljMGIyMTk5OTQ3MTEwYmQ3ZDY2Li5hMjJjZjNmMzFkMGU0OGQwYWZhYzkzM2Q3
Nzg1MDE0YTY1ZTk5MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDE3LTA2LTIx
ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8VD4gdG8gSlNPTiBuYW1lc3BhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY29uc2lz
dHMgb2YgbWVjaGFuaWNhbCByZW5hbWluZ3MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6
aW5zcGVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxl
Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBv
cnRlZENTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFp
bmVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JQc2V1ZG9FbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZh
bGlkYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGll
cmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmNvbGxlY3RTYW1wbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hP
dGhlclJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2VhcmNoSW5SZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9y
UmVuZGVyZXJGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JFbGVt
ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZEhpZ2hs
aWdodE9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZUlucHV0
VG9KU09ORnVuY3Rvcjo6U2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0QXZhaWxhYmxlU2Vzc2lvbnMpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RD
aGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNv
bXB1dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0
aFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckhl
bHBlcik6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9y
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
QXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjphZGRSZWNvcmRUb1RpbWVs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVu
dCk6CisKIDIwMTctMDYtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBjb25zb2xlIG1lc3NhZ2VzIGZvciBXZWJHTCBzaGFk
ZXIgY29tcGlsZSBhbmQgcHJvZ3JhbSBsaW5rIGVycm9ycy93YXJuaW5ncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDczODlmNTg0ZTk2YTc0OGI0MDVmNDhkNGI1NTZiNTkxOGY0OTRkODAuLjJiNTlhMjhmODZmNTBl
NmFiN2ExYzg5MGMyMTQ4YWU3ZDMzNDk1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0wNi0yMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFQ+IHRvIEpTT04gbmFt
ZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dHMpOgorICAg
ICAgICAoV2ViS2l0OjpidWlsZEFycmF5Rm9yQ29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKwogMjAxNy0wNi0yMCAgTWF0dCBM
ZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTg1MzAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwCmluZGV4IGVmMDlmY2MxZThiNmJlMWNjNjgyNjUxOTQzNGQ4YmQ5NzUw
YzVhZjQuLmNkYmU5MmY5M2U1YzkwY2YzN2VmMjNjZGExODA5YzkyNmFhZTk1YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBA
IC0xODksNyArMTg5LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXMKICAgICBpZiAobV9hcmd1
bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4g
anNvbkFyZ3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZjxKU09O
OjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+
IGpzb25BcmdzID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gTWVz
c2FnZVR5cGU6OlRhYmxlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2FyZ3VtZW50cy0+YXJndW1l
bnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdGFi
bGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKICAgICAgICAgICAgICAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+
IDEgPyBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgxKSA6IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCA3ZjQ1MDQyMzU2YmQ0ZGM1M2ZkOGQwZDc5NDgx
ZDgwZDQ5ZGNjZmNlLi5mZGU2MTEzOTc0NTZhNDZlM2QwZDZkOTM4ZjA1YzgyM2E2NWU1Yzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVu
dFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBpbnQgY291bnRSZWd1bGFy
RXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVn
ZXgsIGNvbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4g
c2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQorUmVmPEpT
T046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkK
IHsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gcmVzdWx0ID0gSlNPTjo6VHlwZWRBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7
CiAKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJj
aFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVn
ZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5oCmluZGV4IDdjMDFiOTBkYTE5MzdhZTViZTlhMjM2NDQ4MzE1ZmJlZjAzMGFmZDkuLmNiYmFh
NzRjODUwOGYyNTc2NTZlZWVlNGVhMmI0NDBhMDI4NTlhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbGl0aWVzIHsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hS
ZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdl
eCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0cmluZyYpOwotSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVz
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEpT
T046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7
CiBKU19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChz
aXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogSlNfRVhQ
T1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhj
b25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBmNzY5MWFmYTQ0YzdjYjA5YzBmOTU1NTgxZmFmOWZi
MmUxNDY1YjY5Li5kZWNkYzE5MjI0YjQ5MjQwZjdkMzk3NzBjYmU4MzNmYzQ1M2VmYWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTsKLQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNj
cmlwdCgpCkBAIC0xMDYsNyArMTA0LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rp
b25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgKnJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdURk1v
dmUocmVzdWx0VmFsdWUpKTsKKyAgICAqcmVzdWx0ID0gUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVD
YXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCkBA
IC0xMjMsMTAgKzEyMSwxMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpmdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgKnJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVz
dWx0VmFsdWUpKTsKKyAgICAqcmVzdWx0ID0gUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0VmFsdWUpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVy
dGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJv
b2wgb3duUHJvcGVydGllcywgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGll
cykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsKICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwpAQCAtMTQwLDEwICsxMzgsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0
czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IFByb3Rv
Y29sOjpCaW5kaW5nVHJhaXRzPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0
KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4q
IHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0RGlzcGxheWFibGVQ
cm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTU2LDEwICsx
NTQsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShy
ZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IFByb3RvY29sOjpCaW5kaW5nVHJhaXRzPEpTT046
OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiogcHJvcGVydGllcykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQog
ewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldEludGVybmFsUHJvcGVydGllcyIpLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE3MiwxMSArMTcwLDExIEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGFycmF5
ID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwor
ICAgIGF1dG8gYXJyYXkgPSBQcm90b2NvbDo6QmluZGluZ1RyYWl0czxKU09OOjpUeXBlZEFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiAgICAgKnByb3BlcnRpZXMgPSBhcnJh
eS0+bGVuZ3RoKCkgPiAwID8gYXJyYXkgOiBudWxscHRyOwogfQogCi12b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGludCBzdGFydElu
ZGV4LCBpbnQgbnVtYmVyVG9GZXRjaCwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4qIGVudHJpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGludCBzdGFydEluZGV4
LCBpbnQgbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8UHJvdG9jb2w6OlJ1
bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+KiBlbnRyaWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxp
dGVyYWwoImdldENvbGxlY3Rpb25FbnRyaWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0
SWQpOwpAQCAtMTkxLDcgKzE4OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rp
b25FbnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICAqZW50cmllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8UHJv
dG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJl
c3VsdCkpOworICAgICplbnRyaWVzID0gUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8SlNPTjo6VHlw
ZWRBcnJheTxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj46OnJ1bnRpbWVDYXN0
KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04s
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KQpA
QCAtMjExLDcgKzIwOSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1CiAgICAgICAgICpzYXZl
ZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleEludDsKIH0KIAotUmVmPEFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cENhbGxGcmFtZXMoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMpIGNvbnN0CitSZWY8SlNPTjo6VHlw
ZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3
cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwpAQCAtMjIwLDEzICsyMTgsMTMgQEAgUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmEKICAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0g
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAg
IGlmICghY2FsbEZyYW1lc1ZhbHVlKQotICAgICAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4g
SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2Fs
bEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6
OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUo
cmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpCaW5k
aW5nVHJhaXRzPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpLnJlbGVhc2VOb25OdWxs
KCk7CiAKLSAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNh
bGxGcmFtZT46OmNyZWF0ZSgpOworICAgIHJldHVybiBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KIAogUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CkBAIC0yNDcsNyArMjQ1LDcgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBPYmplY3QoSlMKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZh
bHVlKCpzY3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCi0gICAgcmV0dXJuIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6
cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGlt
ZUNhc3QocmVzdWx0T2JqZWN0KTsKIH0KIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0M6OkpTVmFs
dWUgdGFibGUsIEpTQzo6SlNWYWx1ZSBjb2x1bW5zKSBjb25zdApAQCAtMjcwLDcgKzI2OCw3IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwVGFibGUoSlNDCiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNw
ZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAotICAgIHJl
dHVybiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CisgICAgcmV0dXJuIFByb3RvY29sOjpC
aW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CiB9CiAKIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVl
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29uc3QKQEAgLTI4OCw3ICsyODYsNyBAQCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4gSW5qZWN0ZWRTY3JpcHQ6
OnByZXZpZXdWYWx1ZQogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUo
KnNjcmlwdFN0YXRlKCksIHIpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKLSAgICByZXR1cm4gQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pjo6cnVu
dGltZUNhc3QocmVzdWx0T2JqZWN0KTsKKyAgICByZXR1cm4gUHJvdG9jb2w6OkJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz46OnJ1bnRpbWVD
YXN0KHJlc3VsdE9iamVjdCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNldEV4Y2VwdGlv
blZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0ZDIyNzExNGU4ODQyMmMyZWM0ZjYwNDlm
ODM0ZmI4MTIwODIyMDkzLi5kNzc2ZjQ4OTgzOTdiMWU3YWJmNjI4OTkzYzI5MTg1NGJjNTA0ZmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyYsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcm
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJl
c3VsdEluZGV4KTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2Ny
aXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcj4+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBpbnQgc3RhcnRJbmRleCwgaW50IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxQcm90b2NvbDo6QXJy
YXk8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+KiBlbnRyaWVzKTsKKyAgICB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBi
b29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7
CisgICAgdm9pZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOwor
ICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5
PFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQp
OworICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwg
aW50IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PFByb3RvY29sOjpSdW50
aW1lOjpDb2xsZWN0aW9uRW50cnk+PiogZW50cmllcyk7CiAgICAgdm9pZCBzYXZlUmVzdWx0KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRKU09OLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICBSZWY8UHJv
dG9jb2w6OkFycmF5PFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gd3JhcENhbGxGcmFt
ZXMoSlNDOjpKU1ZhbHVlKSBjb25zdDsKKyAgICBSZWY8SlNPTjo6VHlwZWRBcnJheTxQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSkgY29u
c3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmpl
Y3QoSlNDOjpKU1ZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcgPSBmYWxzZSkgY29uc3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IHdyYXBUYWJsZShKU0M6OkpTVmFsdWUgdGFibGUsIEpTQzo6SlNWYWx1ZSBjb2x1
bW5zKSBjb25zdDsKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+
IHByZXZpZXdWYWx1ZShKU0M6OkpTVmFsdWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IDljYWE0
ZWI5M2ZlN2Y5ZTMyOGRkMzI5OTAyMTM5NWNjMzJhNDlhZDQuLmFhYTE3NzMzNzkzY2NmNzk0MDBj
OTc1NWE2M2JiOWJmYTc1NmI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgRGVwcmVjYXRlZDo6U2NyaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKm9i
amVjdFJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CisgICAgKm9iamVjdFJlc3VsdCA9IFByb3Rv
Y29sOjpCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50
aW1lQ2FzdChyZXN1bHRPYmplY3QpOwogICAgICp3YXNUaHJvd24gPSB3YXNUaHJvd25WYWx1ZTsK
IAogICAgIGlmIChzYXZlZFJlc3VsdEluZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
CmluZGV4IGIxOTg0YTgzNTU2Mzg2ZGY5NzdlOGY1NGYyOGE1NjgzYTNhOTMzZTIuLjhjZDAzYzFm
MTI1ZTFkYzYzMjJjYzRjN2Q3OTYxYjAwZGEzZjkzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZTo6c2VuZEZhaWx1cmUoY29uc3QgRXJyb3JTdHJpbmcmIGVycm9yKQogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnNlbmRQZW5kaW5nRXJyb3JzKCk7CiB9CiAKLXZvaWQgQmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
JiBwYXJ0aWFsTWVzc2FnZSkKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6
c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJ0aWFsTWVzc2FnZSkKIHsKICAg
ICBpZiAobV9hbHJlYWR5U2VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDE1ICsxMDksMTUg
QEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogICAgIEFTU0VSVCghbV9wcm90b2NvbEVycm9ycy5zaXplKCkpOwogCiAgICAgbG9uZyByZXF1
ZXN0SWQgPSAwOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2VPYmplY3Q7Cisg
ICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbWVzc2FnZU9iamVjdDsKIAogICAgIHsKICAgICAgICAg
Ly8gSW4gY2FzZSB0aGlzIGlzIGEgcmUtZW50cmFudCBjYWxsIGZyb20gYSBuZXN0ZWQgcnVuIGxv
b3AsIHdlIGRvbid0IHdhbnQgdG8gbG9zZQogICAgICAgICAvLyB0aGUgb3V0ZXIgcmVxdWVzdCdz
IGlkIGp1c3QgYmVjYXVzZSB0aGUgaW5uZXIgcmVxdWVzdCBpcyBib2d1cy4KICAgICAgICAgU2V0
Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJl
cXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHBhcnNlZE1lc3NhZ2U7Ci0gICAgICAgIGlmICghSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTiht
ZXNzYWdlLCBwYXJzZWRNZXNzYWdlKSkgeworICAgICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHBh
cnNlZE1lc3NhZ2U7CisgICAgICAgIGlmICghSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihtZXNzYWdl
LCBwYXJzZWRNZXNzYWdlKSkgewogICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihQYXJz
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIk1lc3NhZ2UgbXVzdCBiZSBpbiBKU09OIGZvcm1hdCIpKTsK
ICAgICAgICAgICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXF1ZXN0SWRWYWx1ZTsKKyAgICAgICAgUmVmUHRy
PEpTT046OlZhbHVlPiByZXF1ZXN0SWRWYWx1ZTsKICAgICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0
LT5nZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIHJlcXVlc3RJZFZhbHVlKSkgewogICAgICAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCIn
aWQnIHByb3BlcnR5IHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vy
cm9ycygpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgLy8gV2UgY291bGQgYmUgY2FsbGVk
IHJlLWVudHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRoZSBwcmV2
aW91cyBpZC4KICAgICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxsb25nPj4gc2NvcGVk
UmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwgcmVxdWVzdElkKTsKIAotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IG1ldGhvZFZhbHVlOworICAgICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IG1ldGhvZFZhbHVlOwogICAgICAgICBpZiAoIW1lc3NhZ2VPYmplY3QtPmdldFZhbHVlKEFT
Q0lJTGl0ZXJhbCgibWV0aG9kIiksIG1ldGhvZFZhbHVlKSkgewogICAgICAgICAgICAgcmVwb3J0
UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgQVNDSUlMaXRlcmFsKCInbWV0aG9kJyBwcm9w
ZXJ0eSB3YXNuJ3QgZm91bmQiKSk7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwpA
QCAtMTg1LDEzICsxODUsMTMgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIH0KIAotdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6
c2VuZFJlc3BvbnNlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJl
c3VsdCkKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIHJlcXVlc3RJ
ZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFtX3Byb3Rv
Y29sRXJyb3JzLnNpemUoKSk7CiAKICAgICAvLyBUaGUgSlNPTi1SUEMgMi4wIHNwZWNpZmljYXRp
b24gcmVxdWlyZXMgdGhhdCB0aGUgImVycm9yIiBtZW1iZXIgaGF2ZSB0aGUgdmFsdWUgJ251bGwn
CiAgICAgLy8gaWYgbm8gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGFuIGludm9jYXRpb24sIGJ1dCB3
ZSBkbyBub3QgaW5jbHVkZSBpdCBhdCBhbGwuCi0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
cG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNPTjo6
T2JqZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJl
c3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIFdURk1vdmUo
cmVzdWx0KSk7CiAgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgi
aWQiKSwgcmVxdWVzdElkKTsKICAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UocmVz
cG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBC
YWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgIC8vIGJ1dCBvbmx5IG9u
ZSB0b3AtbGV2ZWwgRXJyb3Igb2JqZWN0IHNob3VsZCBiZSBzZW50IHBlciByZXF1ZXN0LgogICAg
IENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUgPSBJbnRlcm5hbEVycm9yOwogICAgIFN0cmluZyBl
cnJvck1lc3NhZ2U7Ci0gICAgUmVmPEluc3BlY3RvckFycmF5PiBwYXlsb2FkID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOworICAgIFJlZjxKU09OOjpBcnJheT4gcGF5bG9hZCA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBtX3Byb3RvY29sRXJy
b3JzKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IHN0ZDo6Z2V0PDA+KGRhdGEpOwpAQCAtMjIzLDI0
ICsyMjMsMjQgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQog
ICAgICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgKHVuc2lnbmVkKWVycm9yQ29kZSA8IFdURl9B
UlJBWV9MRU5HVEgoZXJyb3JDb2RlcykpOwogICAgICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwg
ZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKIAotICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBl
cnJvciA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IGVycm9yID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZXJyb3ItPnNldElu
dGVnZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAgICAg
ICAgIGVycm9yLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXNzYWdlIiksIGVycm9yTWVzc2Fn
ZSk7CiAgICAgICAgIHBheWxvYWQtPnB1c2hPYmplY3QoV1RGTW92ZShlcnJvcikpOwogICAgIH0K
IAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHRvcExldmVsRXJyb3IgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOworICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvcExldmVsRXJyb3IgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHRvcExldmVsRXJyb3ItPnNldEludGVnZXIoQVNDSUlM
aXRlcmFsKCJjb2RlIiksIGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAgICAgdG9wTGV2ZWxFcnJv
ci0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWVzc2FnZSIpLCBlcnJvck1lc3NhZ2UpOwogICAg
IHRvcExldmVsRXJyb3ItPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiZGF0YSIpLCBXVEZNb3ZlKHBh
eWxvYWQpKTsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgIFJlZjxKU09OOjpPYmplY3Q+IG1lc3NhZ2UgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIG1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImVy
cm9yIiksIFdURk1vdmUodG9wTGV2ZWxFcnJvcikpOwogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0
SWQpCiAgICAgICAgIG1lc3NhZ2UtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCBtX2N1
cnJlbnRSZXF1ZXN0SWQudmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSAnbnVs
bCcgdmFsdWUgZm9yIGFuIHVua25vd24gaWQgaXMgc3BlY2lmaWVkIGluIEpTT04tUlBDIDIuMCwg
U2VjdGlvbiA1LgotICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiks
IEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJ
SUxpdGVyYWwoImlkIiksIEpTT046OlZhbHVlOjpudWxsKCkpOwogICAgIH0KIAogICAgIG1fZnJv
bnRlbmRSb3V0ZXItPnNlbmRSZXNwb25zZShtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CkBAIC0y
NDgsNyArMjQ4LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMo
KQogICAgIG1fcHJvdG9jb2xFcnJvcnMuY2xlYXIoKTsKICAgICBtX2N1cnJlbnRSZXF1ZXN0SWQg
PSBzdGQ6Om51bGxvcHQ7CiB9Ci0gICAgCisKIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9y
dFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7CiAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihtX2N1cnJlbnRSZXF1ZXN0
SWQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKFdURjo6RGVwcmVjYXRlZE9wdGlv
bmFsPGxvbmc+IHJlbGF0ZQogI2VuZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIEJhY2tl
bmREaXNwYXRjaGVyOjpnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dF9vcHRpb25hbFZhbHVlRm91bmQsIFQgZGVmYXVs
dFZhbHVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2woSW5zcGVjdG9yVmFsdWUmLCBUJik+IGFzTWV0aG9k
LCBjb25zdCBjaGFyKiB0eXBlTmFtZSkKK1QgQmFja2VuZERpc3BhdGNoZXI6OmdldFByb3BlcnR5
VmFsdWUoSlNPTjo6T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0
X29wdGlvbmFsVmFsdWVGb3VuZCwgVCBkZWZhdWx0VmFsdWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbChK
U09OOjpWYWx1ZSYsIFQmKT4gYXNNZXRob2QsIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQogewogICAg
IFQgcmVzdWx0KGRlZmF1bHRWYWx1ZSk7CiAgICAgLy8gb3V0X29wdGlvbmFsVmFsdWVGb3VuZCBz
aWduYWxzIHRvIHRoZSBjYWxsZXIgd2hldGhlciBhbiBvcHRpb25hbCBwcm9wZXJ0eSB3YXMgZm91
bmQuCkBAIC0zMDgsNDIgKzMwOCw0MiBAQCBUIEJhY2tlbmREaXNwYXRjaGVyOjpnZXRQcm9wZXJ0
eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBib29sIGNhc3RUb0ludGVnZXIoSW5zcGVjdG9yVmFs
dWUmIHZhbHVlLCBpbnQmIHJlc3VsdCkgeyByZXR1cm4gdmFsdWUuYXNJbnRlZ2VyKHJlc3VsdCk7
IH0KLXN0YXRpYyBib29sIGNhc3RUb051bWJlcihJbnNwZWN0b3JWYWx1ZSYgdmFsdWUsIGRvdWJs
ZSYgcmVzdWx0KSB7IHJldHVybiB2YWx1ZS5hc0RvdWJsZShyZXN1bHQpOyB9CitzdGF0aWMgYm9v
bCBjYXN0VG9JbnRlZ2VyKEpTT046OlZhbHVlJiB2YWx1ZSwgaW50JiByZXN1bHQpIHsgcmV0dXJu
IHZhbHVlLmFzSW50ZWdlcihyZXN1bHQpOyB9CitzdGF0aWMgYm9vbCBjYXN0VG9OdW1iZXIoSlNP
Tjo6VmFsdWUmIHZhbHVlLCBkb3VibGUmIHJlc3VsdCkgeyByZXR1cm4gdmFsdWUuYXNEb3VibGUo
cmVzdWx0KTsgfQogCi1pbnQgQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9y
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCkKK2lu
dCBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihKU09OOjpPYmplY3QqIG9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKQogewogICAgIHJldHVybiBnZXRQcm9w
ZXJ0eVZhbHVlPGludD4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCAwLCAmY2FzdFRvSW50ZWdl
ciwgIkludGVnZXIiKTsKIH0KIAotZG91YmxlIEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUo
SW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVG
b3VuZCkKK2RvdWJsZSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEpTT046Ok9iamVjdCog
b2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpCiB7CiAgICAgcmV0
dXJuIGdldFByb3BlcnR5VmFsdWU8ZG91YmxlPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIDAs
ICZjYXN0VG9OdW1iZXIsICJOdW1iZXIiKTsKIH0KIAotU3RyaW5nIEJhY2tlbmREaXNwYXRjaGVy
OjpnZXRTdHJpbmcoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCogdmFsdWVGb3VuZCkKK1N0cmluZyBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKEpT
T046Ok9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQp
CiB7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8U3RyaW5nPihvYmplY3QsIG5hbWUsIHZh
bHVlRm91bmQsICIiLCAmSW5zcGVjdG9yVmFsdWU6OmFzU3RyaW5nLCAiU3RyaW5nIik7CisgICAg
cmV0dXJuIGdldFByb3BlcnR5VmFsdWU8U3RyaW5nPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQs
ICIiLCAmSlNPTjo6VmFsdWU6OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAKLWJvb2wgQmFja2Vu
ZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCkKK2Jvb2wgQmFja2VuZERpc3BhdGNoZXI6Omdl
dEJvb2xlYW4oSlNPTjo6T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCog
dmFsdWVGb3VuZCkKIHsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxib29sPihvYmplY3Qs
IG5hbWUsIHZhbHVlRm91bmQsIGZhbHNlLCAmSW5zcGVjdG9yVmFsdWU6OmFzQm9vbGVhbiwgIkJv
b2xlYW4iKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxib29sPihvYmplY3QsIG5hbWUs
IHZhbHVlRm91bmQsIGZhbHNlLCAmSlNPTjo6VmFsdWU6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsK
IH0KIAotUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVj
dChJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1
ZUZvdW5kKQorUmVmUHRyPEpTT046Ok9iamVjdD4gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVj
dChKU09OOjpPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kKQogewotICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+PihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIG51bGxwdHIsICZJbnNwZWN0b3JWYWx1ZTo6
YXNPYmplY3QsICJPYmplY3QiKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxSZWZQdHI8
SlNPTjo6T2JqZWN0Pj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBudWxscHRyLCAmSlNPTjo6
VmFsdWU6OmFzT2JqZWN0LCAiT2JqZWN0Iik7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JBcnJheT4g
QmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpCitSZWZQdHI8SlNPTjo6QXJyYXk+IEJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShKU09OOjpPYmplY3QqIG9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKQogewotICAgIHJldHVybiBnZXRQcm9wZXJ0eVZh
bHVlPFJlZlB0cjxJbnNwZWN0b3JBcnJheT4+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgbnVs
bHB0ciwgJkluc3BlY3RvclZhbHVlOjphc0FycmF5LCAiQXJyYXkiKTsKKyAgICByZXR1cm4gZ2V0
UHJvcGVydHlWYWx1ZTxSZWZQdHI8SlNPTjo6QXJyYXk+PihvYmplY3QsIG5hbWUsIHZhbHVlRm91
bmQsIG51bGxwdHIsICZKU09OOjpWYWx1ZTo6YXNBcnJheSwgIkFycmF5Iik7CiB9CiAKLVJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpCitSZWZQ
dHI8SlNPTjo6VmFsdWU+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShKU09OOjpPYmplY3Qq
IG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKQogewotICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+KG9iamVjdCwgbmFt
ZSwgdmFsdWVGb3VuZCwgbnVsbHB0ciwgJkluc3BlY3RvclZhbHVlOjphc1ZhbHVlLCAiVmFsdWUi
KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxSZWZQdHI8SlNPTjo6VmFsdWU+PihvYmpl
Y3QsIG5hbWUsIHZhbHVlRm91bmQsIG51bGxwdHIsICZKU09OOjpWYWx1ZTo6YXNWYWx1ZSwgIlZh
bHVlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oCmluZGV4IDliNjBlZTFmOGE0NjhmYjU4NTExOGMyNzFkZDNjMzMxMjc5NDRjY2UuLjhjMTcw
ZmMyODcxNTI1MjFiYjEwN2Q0NGUyMjE1MDg3NDhiMjRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXBwbGUKIHB1YmxpYzoK
ICAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYpOwog
ICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVm
PEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEpTT046Ok9iamVj
dD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZGlzYWJsZSgpIHsgbV9h
bHJlYWR5U2VudCA9IHRydWU7IH0KIAotICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYpOworICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYpOwogICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5n
Jik7CiAKICAgICBwcml2YXRlOgpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIFN1cHBsZW1l
bnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCBkaXNwYXRjaChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwogCi0gICAgdm9pZCBzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0KTsKKyAgICB2b2lkIHNlbmRSZXNwb25zZShsb25n
IHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiByZXN1bHQpOwogICAgIHZvaWQgc2Vu
ZFBlbmRpbmdFcnJvcnMoKTsKIAogICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25F
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKQEAgLTkzLDE1ICs5MywxNSBA
QCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdURl9ISURERU5fREVD
TEFSQVRJT04KLSAgICBUIGdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiBvdXRfb3B0aW9uYWxWYWx1ZUZvdW5kLCBUIGRlZmF1bHRWYWx1
ZSwgc3RkOjpmdW5jdGlvbjxib29sKEluc3BlY3RvclZhbHVlJiwgVCYpPiwgY29uc3QgY2hhciog
dHlwZU5hbWUpOwotCi0gICAgaW50IGdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKTsKLSAgICBkb3VibGUgZ2V0RG91YmxlKElu
c3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7Ci0g
ICAgU3RyaW5nIGdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQpOwotICAgIGJvb2wgZ2V0Qm9vbGVhbihJbnNwZWN0b3JPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gZ2V0VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sKiB2YWx1ZUZvdW5kKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5k
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7CisgICAgVCBnZXRQcm9wZXJ0
eVZhbHVlKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0X29wdGlv
bmFsVmFsdWVGb3VuZCwgVCBkZWZhdWx0VmFsdWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbChKU09OOjpW
YWx1ZSYsIFQmKT4sIGNvbnN0IGNoYXIqIHR5cGVOYW1lKTsKKworICAgIGludCBnZXRJbnRlZ2Vy
KEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7Cisg
ICAgZG91YmxlIGdldERvdWJsZShKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wqIHZhbHVlRm91bmQpOworICAgIFN0cmluZyBnZXRTdHJpbmcoSlNPTjo6T2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKTsKKyAgICBib29sIGdldEJvb2xlYW4o
SlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kKTsKKyAg
ICBSZWZQdHI8SlNPTjo6VmFsdWU+IGdldFZhbHVlKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCk7CisgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gZ2V0
T2JqZWN0KEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5PiBnZXRBcnJheShKU09OOjpPYmplY3QqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQpOwogCiBwcml2YXRlOgogICAgIEJhY2tl
bmREaXNwYXRjaGVyKFJlZjxGcm9udGVuZFJvdXRlcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCmluZGV4
IDI0OGU1OGE5NmM5NzliZTY4ZWQ5MGE1YzIxMTc5ZjdiZTIyZjFjYjIuLmY4ZTM4YzAwZGE0ZGQ1
OTBiNWYzYzlkNGEwMjMzMjZiOWMwOTM1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjksNDcgKzI5LDE3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLW5hbWVzcGFjZSBQcm90b2NvbCB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBCaW5kaW5nVHJhaXRzOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY2xhc3MgT3B0T3V0cHV0IHsKLXB1YmxpYzoKLSAgICBPcHRPdXRwdXQoKSA6IG1f
YXNzaWduZWQoZmFsc2UpIHsgfQotCi0gICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgbV9hc3NpZ25lZCA9IHRydWU7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0Fzc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3NpZ25lZDsg
fQotCi0gICAgVCBnZXRWYWx1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgp
KTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFQgbV92
YWx1ZTsKLSAgICBib29sIG1fYXNzaWduZWQ7Ci0KLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShP
cHRPdXRwdXQpOwotfTsKK25hbWVzcGFjZSBKU09OIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNsYXNzIEFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7CitjbGFzcyBUeXBlZEFy
cmF5IDogcHVibGljIEpTT046OkFycmF5QmFzZSB7CiBwcml2YXRlOgotICAgIEFycmF5KCkgeyB9
CisgICAgVHlwZWRBcnJheSgpIHsgfQogCi0gICAgSW5zcGVjdG9yQXJyYXkmIG9wZW5BY2Nlc3Nv
cnMoKQorICAgIEpTT046OkFycmF5JiBvcGVuQWNjZXNzb3JzKCkKICAgICB7Ci0gICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwg
Y2Fubm90X2Nhc3QpOwotICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5
Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOworICAgICAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoSlNPTjo6QXJyYXkpID09IHNpemVvZihKU09OOjpUeXBlZEFycmF5
PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEpTT046OkFy
cmF5Kj4oc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlCYXNlKj4odGhpcykpOwogICAgIH0KIAogcHVi
bGljOgpAQCAtODIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBvcGVuQWNjZXNz
b3JzKCkucHVzaFZhbHVlKFdURk1vdmUodmFsdWUpKTsKICAgICB9Ci0gICAgCisKICAgICB2b2lk
IGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIG9wZW5BY2Nlc3Nv
cnMoKS5wdXNoU3RyaW5nKHZhbHVlKTsKQEAgLTk4LDMxICs2OCwzNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmPEFycmF5PFQ+PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8SlNPTjo6VHlwZWRBcnJh
eTxUPj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5
PFQ+KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU09OOjpUeXBlZEFycmF5PFQ+
KCkpOwogICAgIH0KIH07CiAKK30gLy8gbmFtZXNwYWNlIEpTT04KKwogLy8gSGVscGVyIG1ldGhv
ZHMgZm9yIFByb3RvY29sIGFuZCBvdGhlciBJbnNwZWN0b3IgdHlwZXMgYXJlIHByb3ZpZGVkIGJ5
CiAvLyBzcGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBhcmUgZ2VuZXJh
dGVkIGZvciBwcm90b2NvbCB0eXBlcy4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK25hbWVz
cGFjZSBQcm90b2NvbCB7CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQmluZGluZ1Ry
YWl0cyB7CiAgICAgdHlwZWRlZiBUIEJpbmRpbmdUeXBlOwogCi0gICAgc3RhdGljIHZvaWQgcHVz
aChJbnNwZWN0b3JBcnJheSYsIEJpbmRpbmdUeXBlJik7Ci0gICAgc3RhdGljIEluc3BlY3RvclZh
bHVlOjpUeXBlIHR5cGVUYWcoKTsKLSAgICBzdGF0aWMgUmVmUHRyPFQ+IHJ1bnRpbWVDYXN0KFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYpOworICAgIHN0YXRpYyB2b2lkIHB1c2goSlNPTjo6QXJy
YXkmLCBCaW5kaW5nVHlwZSYpOworICAgIHN0YXRpYyBKU09OOjpWYWx1ZTo6VHlwZSB0eXBlVGFn
KCk7CisgICAgc3RhdGljIFJlZlB0cjxUPiBydW50aW1lQ2FzdChSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqKTsKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRW
YWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwogI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKIH07CiAKLXRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+Cit0ZW1wbGF0
ZTxKU09OOjpWYWx1ZTo6VHlwZSBUWVBFPgogc3RydWN0IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHMg
ewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUgJiYgdmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKICAgICB9
CkBAIC0xMzAsMjUgKzEwNiwyNSBAQCBzdHJ1Y3QgUHJpbWl0aXZlQmluZGluZ1RyYWl0cyB7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6
OkFycmF5PFQ+PiB7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheTxUPj4gcnVudGltZUNhc3QoUmVm
UHRyPEluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQorc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6
VHlwZWRBcnJheTxUPj4geworICAgIHN0YXRpYyBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxUPj4g
cnVudGltZUNhc3QoUmVmUHRyPEpTT046OlZhbHVlPiYmIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGFycmF5OworICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAgICAgICBib29s
IGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS5nZXQoKSk7CiAjZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJy
YXk8VD4pID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9y
QXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KEpTT046OlR5cGVkQXJyYXk8VD4pID09IHNpemVvZihKU09OOjpBcnJheSksIHR5cGVfY2FzdF9w
cm9ibGVtKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT046OlR5cGVkQXJyYXk8VD4q
PihzdGF0aWNfY2FzdDxKU09OOjpBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwogICAgIH0KIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVj
dGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNT
RVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFy
cmF5OworICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNh
c3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7IGkrKykKQEAgLTE1OCwyMyArMTM0LDQ4IEBAIHN0
cnVjdCBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewogfTsKIAogdGVtcGxhdGU8
Pgotc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU+IHsKK3N0cnVjdCBCaW5kaW5n
VHJhaXRzPEpTT046OlZhbHVlPiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHN0YXRpYyB2
b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKikKKyAgICBzdGF0
aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopCiAgICAgewog
ICAgIH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPEluc3BlY3RvckFycmF5PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5n
VHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpBcnJheT4geyB9OwotdGVtcGxhdGU8PiBzdHJ1
Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JPYmplY3Q+IDogcHVibGljIFByaW1pdGl2ZUJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6Ok9iamVjdD4geyB9OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czxTdHJpbmc+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OlN0cmluZz4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QmluZGluZ1RyYWl0czxib29sPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3Bl
Y3RvclZhbHVlOjpUeXBlOjpCb29sZWFuPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5n
VHJhaXRzPGRvdWJsZT4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JW
YWx1ZTo6VHlwZTo6RG91YmxlPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRz
PGludD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZTo6SW50ZWdlcj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxKU09OOjpB
cnJheT4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6
QXJyYXk+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SlNPTjo6T2JqZWN0
PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpPYmpl
Y3Q+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8U3RyaW5nPiA6IHB1Ymxp
YyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmc+IHsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8Ym9vbD4gOiBwdWJsaWMgUHJpbWl0aXZl
QmluZGluZ1RyYWl0czxKU09OOjpWYWx1ZTo6VHlwZTo6Qm9vbGVhbj4geyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxkb3VibGU+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdU
cmFpdHM8SlNPTjo6VmFsdWU6OlR5cGU6OkRvdWJsZT4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QmluZGluZ1RyYWl0czxpbnQ+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SlNPTjo6
VmFsdWU6OlR5cGU6OkludGVnZXI+IHsgfTsKIAotfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKKy8v
IEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBkZWxldGVkLiBVc2Ugc3RkOjpvcHRpb25hbCBp
bnN0ZWFkLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9wdE91dHB1dCB7CitwdWJsaWM6
CisgICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KKworICAgIHZvaWQgb3Bl
cmF0b3I9KFQgdmFsdWUpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAg
IG1fYXNzaWduZWQgPSB0cnVlOworICAgIH0KIAotdXNpbmcgUHJvdG9jb2w6OkJpbmRpbmdUcmFp
dHM7CisgICAgYm9vbCBpc0Fzc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3NpZ25lZDsgfQor
CisgICAgVCBnZXRWYWx1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV92YWx1
ZTsKKyAgICBib29sIG1fYXNzaWduZWQ7CisKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcHRP
dXRwdXQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5jcHAKaW5kZXggNjEyYzQ0OGM0MGZmNWIwYWVjMTIzYjZiOGVhYWM4ODIwMzJk
YjNiYi4uMTliYTM0YjJjMDBmZjQ5OGRjNDdkNDRhNDgxZDhiYzQ2NjE4MzkzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcApA
QCAtMTA1LDkgKzEwNSw5IEBAIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENh
bGxTdGFjayogbykgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+
IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6
VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3Jp
cHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gZnJh
bWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpUeXBl
ZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAg
ICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgp
KTsKICAgICByZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKaW5kZXggMGY1ZTMzMjQ5NDI1ZDk5NjBhNjExMmNkMjU1
ZTExMDNmNjE3MzEwMy4uNjc3YTc4Y2MzMDVmYTlkNTE3ZDVlOTllZmY5ODBiYjgwMWYyNzY1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRD
YWxsU3RhY2sqKSBjb25zdDsKIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFy
cmF5KCkgY29uc3Q7CisgICAgUmVmPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIFNjcmlwdENhbGxTdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGY2
NGJhZjNkMzA3NzdiZjc5NmYzNTc0YWZiNGQ4ODgxYWJhZTA1MWUuLjk4Y2I3ZGY0MGRkOTJlNTZi
MTM0NjQ4YWVhY2Y5ODU0MDUyMWM3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTExNiwxMiAr
MTE2LDEyIEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lKQogewogICAgIGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgIGlm
ICghbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0YSkKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJh
RG9tYWluc0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEgPSBKU09OOjpUeXBlZEFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRh
LT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0
ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVz
KSk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVF
eHRyYURvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dHJhRG9tYWlucykKICAgICBpZiAo
ZXh0cmFEb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkb21h
aW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwor
ICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgIGZvciAoYXV0byBkb21haW5OYW1lIDogZXh0cmFEb21haW5zKQogICAgICAgICBkb21h
aW5OYW1lcy0+YWRkSXRlbShkb21haW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggYTliMDM5
MjA3YTMyMjk5ZGNlYWU5NDUyZGU1NjkyOWY5YTI4NmE3Yy4uMGFiN2VmZTY2MTcyZmIzMDNkZTRl
Y2MwNjI0Y2VhODg1OWI5NjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7
CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOwogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhOworICAg
IFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PFN0cmluZz4+IG1fcGVuZGluZ0V4dHJhRG9tYWluc0Rh
dGE7CiAjZW5kaWYKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NTRlNjZkODEwOWYwOTEyZmVjZWM2NDVhNzBm
ODE2MTdhMTM1YWI5Li4wNDY4NGU4Y2I0MDllN2VmZjBlZGExYmY4ZTlkZWQxNDlhZWRiOWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNDI5LDkgKzQyOSw5IEBAIHN0
YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIGxvY2F0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRp
b25hbENvbHVtbk51bWJlciwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1
bW5OdW1iZXIsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJl
ZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4+JiBsb2NhdGlvbnMpCiB7Ci0gICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRl
KCk7CisgICAgbG9jYXRpb25zID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09
ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiIpOwogICAgICAgICBy
ZXR1cm47CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
b250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXIuY29udGludWVQcm9ncmFtKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0
SURTdHIsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3Vs
dHMpCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNjcmlwdElEU3RyLnRvSW50UHRy
KCk7CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKQEAgLTg2MCwxMSAr
ODYwLDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxv
Y2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgICAgIGJyZWFrUHJvZ3JhbShE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9sYXRpb24sIGJ1aWxkQ1NQ
VmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOwogfQogCi1SZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVj
dGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCkKK1JlZjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpjdXJyZW50Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQp
CiB7CiAgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogICAgIGlmIChp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDZmODEzMmFjMjI5NTJkMDk1NjkxYTQ2ZTQ2NTZi
NTFhMWI2YmQ1MzAuLjgwZDRjMDc4ZjI5ZmUxZDY0Nzc0Njk0OWZmZjY4ODhmYjIxNjUyMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTY3LDEyICs2NywxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRBc3lu
Y1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAgdm9p
ZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5hbDsK
LSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9w
dGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlv
bnMpIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVt
bk51bWJlciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRp
b25zKSBmaW5hbDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4mIGFjdHVhbExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAg
IHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0JiBsb2NhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZvaWQg
c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpUeXBlZEFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZp
bmFsOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5h
bDsKICAgICB2b2lkIHBhdXNlKEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC0xMzMsNyArMTMzLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkQ2xlYXJHbG9iYWxPYmplY3QoKTsKIAogcHJpdmF0
ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVk
U2NyaXB0Jik7CisgICAgUmVmPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2Ny
aXB0Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNj
cmlwdCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcAppbmRleCBkNDJjODk2OGM4Mjk1YWUxNWU2MTM4M2E2NmU1M2FhYWFmZTRkYjg2Li43
Y2E2MTZiMDFhNjkwZmFlNjkyYmZhNmRjOWUwNDNkZWYwNWRiOTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBj
b25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1
bHQsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKIHsKICAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZl
ciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9i
amVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3Bs
YXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGMKICAgICBzZXRQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xs
ZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJbmRleCwg
Y29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJp
ZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVy
VG9GZXRjaCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KSB7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVs
ZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplYwogICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJs
ZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYgdHlwZURl
c2NyaXB0aW9ucykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNG
b3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+JiB0eXBlRGVz
Y3JpcHRpb25zKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAot
ICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKKyAgICB0
eXBlRGVzY3JpcHRpb25zID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpUeXBlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW1fdm0udHlwZVBy
b2ZpbGVyKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBk
b2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBUeXBlIEluZm9ybWF0aW9uLiIpOwogICAgICAgICByZXR1
cm47CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldENv
bnRyb2xGbG93UHJvZmlsZXJFbmFibGVkU3RhdGUoYm9vbCBpc0NvbnRyb2xGbG8KICAgICB9KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5nLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291
cmNlSURBc1N0cmluZywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBpZiAoIW1fdm0u
Y29udHJvbEZsb3dQcm9maWxlcigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJUaGUgVk0gZG9lcyBub3QgY3VycmVudGx5IGhhdmUgYSBDb250cm9sIEZsb3cgUHJvZmls
ZXIuIik7CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dEJhc2ljQmxvY2tzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICBp
bnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkp
OwogICAgIEFTU0VSVChva2F5KTsKICAgICBjb25zdCBWZWN0b3I8QmFzaWNCbG9ja1JhbmdlPiYg
YmFzaWNCbG9ja1JhbmdlcyA9IG1fdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5nZXRCYXNpY0Js
b2Nrc0ZvclNvdXJjZUlEKHNvdXJjZUlELCBtX3ZtKTsKLSAgICBiYXNpY0Jsb2NrcyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2lj
QmxvY2s+OjpjcmVhdGUoKTsKKyAgICBiYXNpY0Jsb2NrcyA9IEpTT046OlR5cGVkQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgpOwogICAgIGZv
ciAoY29uc3QgQmFzaWNCbG9ja1JhbmdlJiBibG9jayA6IGJhc2ljQmxvY2tSYW5nZXMpIHsKICAg
ICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+IGxvY2F0
aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jazo6Y3JlYXRlKCkK
ICAgICAgICAgICAgIC5zZXRTdGFydE9mZnNldChibG9jay5tX3N0YXJ0T2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAyZDJmNjI2ZWNmMmFlMzc1YWYzODE4ZjdlZDk1NTg3
ZmU2YmVhNjQ0Li5hZDQyMTM4NDZkZTUzMTY4MmY5ZjBlNDJhMGEwNDcxYTY2OWRlNjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNjIsMTcgKzYyLDE3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBjb25zdCBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0
IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJl
dmlldywgY29uc3QgYm9vbCogY29uc3Qgc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2b2lkIGNhbGxGdW5jdGlv
bk9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBvcHRpb25hbEFyZ3Vt
ZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBn
ZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBj
b25zdCBFcnJvclN0cmluZyYgb2JqZWN0SWQpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGll
cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0
IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFs
UHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0
R3JvdXAsIGNvbnN0IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1i
ZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAg
IHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldERpc3BsYXlh
YmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwg
UmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAg
ICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgaW50KiBjb25z
dCBzdGFydEluZGV4LCBjb25zdCBpbnQqIGNvbnN0IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09O
OjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+JiBlbnRyaWVzKSBmaW5hbDsKICAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBpbnQq
IGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdy
b3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgZmluYWw7Ci0gICAg
dm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVz
Y3JpcHRpb24+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFi
bGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxl
VHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlw
ZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9s
Rmxvd1Byb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29u
dHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFz
aWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFz
aWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8
SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCBjMjY2ZjQzMDk5YjIxMDg5NDZmN2Q3MjA5MmQ2OGExMjRiYWNm
MmNhLi4yODNmZmJjYjJhZjA1OGVlYjc1YmY4MjQxYzQ0OGIzZjAxYjcyNGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMTY1LDkgKzE2NSw5IEBA
IHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6YWRkRXZlbnQoZG91YmxlIHN0YXJ0
VGltZSwgZG91YmxlIGVuZFRpbWUsIFByCiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQog
c3RhdGljIFJlZjxQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlNhbXBsZXM+IGJ1aWxkU2FtcGxl
cyhWTSYgdm0sIFZlY3RvcjxTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja1RyYWNlPiYmIHNhbXBsaW5n
UHJvZmlsZXJTdGFja1RyYWNlcykKIHsKLSAgICBSZWY8UHJvdG9jb2w6OkFycmF5PFByb3RvY29s
OjpTY3JpcHRQcm9maWxlcjo6U3RhY2tUcmFjZT4+IHN0YWNrVHJhY2VzID0gUHJvdG9jb2w6OkFy
cmF5PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tUcmFjZT46OmNyZWF0ZSgpOworICAg
IFJlZjxKU09OOjpUeXBlZEFycmF5PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tUcmFj
ZT4+IHN0YWNrVHJhY2VzID0gSlNPTjo6VHlwZWRBcnJheTxQcm90b2NvbDo6U2NyaXB0UHJvZmls
ZXI6OlN0YWNrVHJhY2U+OjpjcmVhdGUoKTsKICAgICBmb3IgKFNhbXBsaW5nUHJvZmlsZXI6OlN0
YWNrVHJhY2UmIHN0YWNrVHJhY2UgOiBzYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMpIHsKLSAg
ICAgICAgUmVmPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlN0YWNr
RnJhbWU+PiBmcmFtZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVy
OjpTdGFja0ZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZjxKU09OOjpUeXBlZEFycmF5PFBy
b3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZT4+IGZyYW1lcyA9IEpTT046OlR5cGVk
QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGZvciAoU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZSYgc3RhY2tGcmFtZSA6IHN0
YWNrVHJhY2UuZnJhbWVzKSB7CiAgICAgICAgICAgICBSZWY8UHJvdG9jb2w6OlNjcmlwdFByb2Zp
bGVyOjpTdGFja0ZyYW1lPiBmcmFtZSA9IFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tG
cmFtZTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAuc2V0U291cmNlSUQoU3RyaW5nOjpudW1i
ZXIoc3RhY2tGcmFtZS5zb3VyY2VJRCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5
CmluZGV4IDA0ZGRmY2I4ZGE4OTA1Y2Q2NjE1N2MxM2UwYzQxNzU5ZjE1ZTE5MzAuLjkxZGU2YWM5
N2U3OGMyZjgzMzY1OTBmMjIzZTEyZTNiMWU3YmUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weQpAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICAgICAgcmV0dXJuICdKU09OOjpPYmplY3QnCiAgICAgICAgIGlmIGlzaW5z
dGFuY2UoX3R5cGUsIEFycmF5VHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5yYXdfbmFtZSgp
IGlzIE5vbmU6ICAjIE90aGVyd2lzZSwgZmFsbCB0aHJvdWdoIGFuZCB1c2UgdHlwZWRlZidkIG5h
bWUuCi0gICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwl
cz4nICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlLmVsZW1l
bnRfdHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0pTT046OlR5cGVkQXJyYXk8JXM+JyAl
IENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5
cGUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlhc2VkVHlw
ZSwgRW51bVR5cGUsIEFycmF5VHlwZSkpOgogICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6
OlByb3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90
eXBlLnJhd19uYW1lKCkpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5
cGUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggYjk1MDU2NWQxMTQ1ZGY1NGZjNmQ2NDY2ODIxZWJl
ZTUzYzdjNjAyYS4uNGYwM2Q4MDE1NjNmZTZjZWI0NjA2ZGI5YTg0ZWJiYmU3YmIxMDA0MCAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xf
dHlwZXNfaGVhZGVyLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBl
c0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgdHlwZWRlZl9saW5l
cyA9IFtdCiAgICAgICAgICAgICBpZiBsZW4oZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoK
ICAgICAgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZGVjbGFy
YXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlw
ZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwlcz4gJXM7JyAlIChlbGVtZW50X3R5cGUs
IGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVu
ZCgndHlwZWRlZiBKU09OOjpUeXBlZEFycmF5PCVzPiAlczsnICUgKGVsZW1lbnRfdHlwZSwgZGVj
bGFyYXRpb24udHlwZV9uYW1lKSkKICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpv
aW4odHlwZWRlZl9saW5lcykpCiAKICAgICAgICAgbGluZXMgPSBbXQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0
b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvci5weQppbmRleCA5NDRkMmU2MTQxNDMxODlhYmJiYzhiNjNiNzIxYzIwYmU0
NzJlYjcyLi4xODdhMWRlZmI4NDE0YWQ5NmM2MWQ4Y2M4M2ZmYjEzZjNmMWE0NmUyIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIE9i
akNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQ
cm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlw
ZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKSk6
CiAgICAgICAgICAgICBzdWJfdHlwZSA9IE9iakNHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9mb3Jf
dHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PCVzPicgJSBzdWJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICdKU09O
OjpUeXBlZEFycmF5PCVzPicgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAg
QHN0YXRpY21ldGhvZApAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2Vu
ZXJhdG9yKToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToK
ICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVf
Zm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFzcyA9
IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAg
ICAgICBpZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+JzoKKyAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgPT0gJ0pTT046OlR5cGVkQXJyYXk8
U3RyaW5nPic6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0b3JTdHJpbmdBcnJheUFy
cmF5KCVzKScgJSB2YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBpcyAnU3Ry
aW5nJyBhbmQgb2JqY19jbGFzcyBpcyAnTlNTdHJpbmcnOgogICAgICAgICAgICAgICAgIHJldHVy
biAnaW5zcGVjdG9yU3RyaW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IGZiODExMzg0N2Y5NzMwYTNhM2ZhZWJhMTEy
YzhjOWZmYmRlZDc2NzkuLmM3M2Q5NGI5MTliNmI2ZTRlNWEyOWI1ODhmZGQwMTBlZWZiMzQxYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0yMTQsOSAr
MjE0LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdAogICAg
IHJldHVybiBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3RvcihtX3N0cnVjdHVyZUhp
c3RvcnkpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1
Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAorUmVmPEpTT046OlR5cGVkQXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0Ojph
bGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAogewotICAgIGF1dG8gZGVzY3JpcHRp
b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIGF1dG8gZGVzY3JpcHRp
b24gPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHNoYXBlIDogbV9z
dHJ1Y3R1cmVIaXN0b3J5KQogICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShzaGFwZS0+aW5z
cGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CkBAIC01MDEsOCArNTAxLDggQEAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFw
ZTo6aW5zcGVjdG8KICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1cnJlbnRTaGFwZSh0aGlz
KTsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUpIHsKLSAgICAgICAgYXV0byBmaWVsZHMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKLSAgICAgICAgYXV0
byBvcHRpb25hbEZpZWxkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9IEpTT046OlR5cGVkQXJyYXk8U3RyaW5nPjo6
Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxGaWVsZHMgPSBKU09OOjpUeXBlZEFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8gZmllbGQgOiBjdXJyZW50U2hh
cGUtPm1fZmllbGRzKQogICAgICAgICAgICAgZmllbGRzLT5hZGRJdGVtKGZpZWxkLmdldCgpKTsK
ICAgICAgICAgZm9yIChhdXRvIGZpZWxkIDogY3VycmVudFNoYXBlLT5tX29wdGlvbmFsRmllbGRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCmluZGV4IDBjMzcwMDNhNzcy
Y2QzNzZiYzgxMDU2NjQ2MzFhNGY2NTQyMjEwZTUuLjJlNWJiZjg0YzNjZGU5NTAxZTRmMjA4ZTVl
NDUzODRiZjliMTQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgK
QEAgLTM0LDE1ICszNCwxNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1uYW1lc3BhY2Ug
UHJvdG9jb2wgIHsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5OworbmFtZXNwYWNl
IEpTT04gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZWRBcnJheTsKK30KIAorbmFt
ZXNwYWNlIEluc3BlY3RvciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogbmFtZXNwYWNlIFJ1bnRp
bWUgewogY2xhc3MgU3RydWN0dXJlRGVzY3JpcHRpb247CiBjbGFzcyBUeXBlU2V0OwogfQotCiB9
CiB9CiAKQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hl
KCk7CiAgICAgU3RyaW5nIGR1bXBUeXBlcygpIGNvbnN0OwogICAgIFN0cmluZyBkaXNwbGF5TmFt
ZSgpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4+IGFsbFN0cnVjdHVyZVJl
cHJlc2VudGF0aW9ucygpIGNvbnN0OworICAgIFJlZjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJl
UmVwcmVzZW50YXRpb25zKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0
OwogICAgIGJvb2wgaXNPdmVyZmxvd24oKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcmZsb3duOyB9
CiAgICAgU3RyaW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggNWIyZTMxMTU4M2I0
M2FjOWQ3ZjliZmUwNjllOTNmOWY1NTgzNjJiOS4uYTQ0NTg5NmM5MTgxNzY2ZGI4ZDQ5ZWMzYmFl
YzVmNzA5N2M0YjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6
Omluc3BlY3RJbXBsKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiBvYmplY3QsIFJlZlB0cjxJbnMK
ICAgICBpZiAoIWhpbnRzLT5hc09iamVjdChoaW50c09iamVjdCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcmVtb3RlT2JqZWN0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChXVEZNb3ZlKG9iamVjdCkp
OworICAgIGF1dG8gcmVtb3RlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1l
Q2FzdChXVEZNb3ZlKG9iamVjdCkpOwogICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3QoV1RG
TW92ZShyZW1vdGVPYmplY3QpLCBXVEZNb3ZlKGhpbnRzT2JqZWN0KSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKaW5kZXggNmUzOWJjZGFkMGQ4NGYwNDI3YTkyYzI3MTBmZmNmMmYxZTBiMDBj
NC4uOWFlOGIxN2Y3MGUwNDMwYTM3ZDRlNWM0ZDJiNTgyNzliZGVlOTA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKQEAgLTg3LDkgKzg3LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQordm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBs
aWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKKyAgICByZXN1bHQgPSBK
U09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZy
YW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKICAgICAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKQEAgLTE0Nyw5ICsxNDcsOSBAQCBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9y
QXBwbGljYXRpbwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWls
ZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCitS
ZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvPiYgYXBwbGljYXRpb25DYWNoZVJlc291
cmNlcykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6VHlwZWRBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VzKQogICAgICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UoaW5mbykpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmgKaW5kZXggNDg3NTJlZmEwY2Q1ZjZhNzYyZGU1M2RjMmExMTJlZmY0NjRmNzJmYi4uNWVhMzU5
NDAzNTg0YWYwYTAzNzFlNzkwZmU4MGVmMjFmYWI2N2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApA
QCAtNTcsMTMgKzU3LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQo
KTsKIAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1l
V2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRGcmFtZXNXaXRo
TWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNo
ZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gYnVp
bGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IFZlY3RvcjxBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvPiYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUlu
Zm8mKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVpbGRB
cnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgVmVjdG9yPEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+Jik7CisgICAgUmVmPEpTT046OlR5cGVkQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPj4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgVmVjdG9y
PEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+Jik7CiAgICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZy
YW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmlu
ZGV4IGE3YzEzYjg1MDhmNmVmMTIwYjkzMWI2Mzc3ODI5MmE3M2VmODkxMmQuLjk1MjQzNThiMzgw
MzY4YzIyMzY0ODQxZGYzZmJjMGYxMzljYmFhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIGJvb2wgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Q1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBw
c2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmll
cykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVk
bywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBS
ZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRy
aWVzKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcs
IG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vCiAgICAgaWYgKCFvcmlnaW5hbEVsZW1lbnQtPmlzUHNldWRvRWxlbWVu
dCgpKSB7CiAgICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgaWYgKCFpbmNsdWRl
UHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7Ci0gICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1l
bnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHNldWRvRWxl
bWVudHMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRv
SWRNYXRjaGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lk
ID0gRklSU1RfUFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxf
UFNFVURPSUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkp
IHsKICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNl
dWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6
OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5
KCkpIHsKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAg
ICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAgICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8
fCAqaW5jbHVkZUluaGVyaXRlZCkgewotICAgICAgICAgICAgYXV0byBlbnRyaWVzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRT
dHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBKU09OOjpU
eXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46
OmNyZWF0ZSgpOwogICAgICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7CiAg
ICAgICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVu
dEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZAogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBudWxscHRyOwogfQogCi12
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+
JiBzdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2Rl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiYgc3R5bGUpCiB7CiAgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02NDYsOSArNjQ2LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm8KICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5
Rm9yQ29tcHV0ZWRTdHlsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxT
dHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJ
bmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlSW5mb3MpCiB7Ci0gICAgc3R5bGVJbmZvcyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOworICAgIHN0eWxlSW5mb3MgPSBKU09OOjpUeXBlZEFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0
ZSgpOwogCiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlU2hlZXQqPiBpbnNwZWN0b3JTdHlsZVNo
ZWV0czsKICAgICBjb2xsZWN0QWxsU3R5bGVTaGVldHMoaW5zcGVjdG9yU3R5bGVTaGVldHMpOwpA
QCAtODM4LDkgKzgzOCw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgcmVzdWx0ID0g
aW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpOwog
fQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCit2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9w
ZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBhdXRvIHByb3BlcnRpZXMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5SW5mbz46OmNyZWF0ZSgpOworICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT046OlR5cGVkQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsK
ICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQcm9wZXJ0eTsgaSA8PSBsYXN0Q1NTUHJvcGVydHk7
ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkID0gY29udmVydFRvQ1NTUHJvcGVydHlJ
RChpKTsKICAgICAgICAgaWYgKGlzSW50ZXJuYWxDU1NQcm9wZXJ0eShpZCkpCkBAIC04NTUsNyAr
ODU1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3IKICAgICAgICAgICAgIHByb3BlcnRpZXMt
PmFkZEl0ZW0oV1RGTW92ZShwcm9wZXJ0eSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgYXV0byBsb25naGFuZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBsb25naGFuZHMgPSBKU09OOjpUeXBl
ZEFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQg
bG9uZ2hhbmRJRCA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAgICAgICAgICBsb25n
aGFuZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGxvbmdoYW5kSUQpKTsKQEAgLTg2
Niw5ICs4NjYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3RvcgogICAgIGNzc1Byb3BlcnRpZXMg
PSBXVEZNb3ZlKHByb3BlcnRpZXMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRT
dXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIGZvbnRGYW1pbHlOYW1lcykKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0
cmluZyYsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PFN0cmluZz4+JiBmb250RmFtaWx5TmFtZXMp
CiB7Ci0gICAgYXV0byBmYW1pbGllcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOworICAgIGF1dG8gZmFtaWxpZXMgPSBKU09OOjpUeXBlZEFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3lzdGVtRm9udEZhbWlsaWVzID0g
Rm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250RmFtaWxpZXMoKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGZhbWlseU5hbWUgOiBzeXN0ZW1Gb250RmFtaWxpZXMpCkBAIC05MDEsNyArOTAx
LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnN0
eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKIHsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmlu
ZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICghZG9jdW1lbnQpCkBAIC05MTAsNyArOTEwLDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVx
dWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLm5hbWVk
Rmxvd3MoKTsKLSAgICBhdXRvIG5hbWVkRmxvd3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOworICAgIGF1
dG8gbmFtZWRGbG93cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoYXV0byYgbmFtZWRGbG93IDogbmFt
ZWRGbG93c1ZlY3RvcikKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZv
ck5hbWVkRmxvdyhlcnJvclN0cmluZywgbmFtZWRGbG93LmdldCgpLCBkb2N1bWVudE5vZGVJZCkp
OwpAQCAtMTA0Niw5ICsxMDQ2LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICByZXR1
cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0
Rm9yUnVsZShydWxlLCBudWxscHRyKSA6IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNP
Tjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6VHlwZWRB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAg
ICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNr
ZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcyk7CiAgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVk
b0lkID8gcHNldWRvSWQgOiBlbGVtZW50LnBzZXVkb0lkKCk7CkBAIC0xMDU5LDcgKzEwNTksNyBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwogICAgICAgICBpZiAoIXJ1bGVPYmplY3QpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG1hdGNoaW5nU2VsZWN0b3JzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gbWF0
Y2hpbmdTZWxlY3RvcnMgPSBKU09OOjpUeXBlZEFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAg
ICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRSdWxlLT5zZWxl
Y3Rvckxpc3QoKTsKICAgICAgICAgaW50IGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNl
bGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAtMTA5Miw5ICsx
MDkyLDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHIKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5
bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVm
UHRyPE5vZGVMaXN0PiYmIHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKK1JlZlB0cjxK
U09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgUmVmUHRyPE5vZGVMaXN0PiYmIHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKIHsK
LSAgICBhdXRvIHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVnaW9ucyA9IEpT
T046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+OjpjcmVhdGUo
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25P
dmVyc2V0IHJlZ2lvbk92ZXJzZXQ7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBJ
bnNwZWN0b3JDUwogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50IGRvY3VtZW50
Tm9kZUlkKQogewogICAgIFJlZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3ZWJraXROYW1l
ZEZsb3ctPmdldENvbnRlbnQoKTsKLSAgICBhdXRvIGNvbnRlbnQgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvbnRlbnQgPSBKU09OOjpUeXBl
ZEFycmF5PGludD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdh
cyBwcmV2aW91c2x5IGFzc2VydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCmluZGV4IDY4NzcwMGE3ZWRjYjQ3NmIzZTVhYjY2MThiM2ZiZjI3MTgxZjVm
MWEuLmU0MzYzN2QxNzI4ZjlkZjIzNzA0NzcwYjZlODExMjg3NzBiNGRkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMDUsMTAgKzEwNSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCk7CiAg
ICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlKTsKIAotICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29u
c3QgYm9vbCogY29uc3QgaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUlu
aGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRj
aGVzPj4mLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wq
IGNvbnN0IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQs
IFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpUeXBlZEFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhl
cml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYg
cmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBz
dHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7CkBAIC0xMTYsMTAgKzEx
NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0
KSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZVN0eWxlU2hlZXQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogc3R5bGVTaGVldElkKSBvdmVycmlkZTsKICAgICB2
b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIHJlc3VsdCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9w
ZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PFN0
cmluZz4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGZv
cmNlZFBzZXVkb0NsYXNzZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbihFcnJvclN0cmluZyYsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJl
c3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIGNsYXNzIFN0eWxlU2hlZXRBY3Rpb247CkBAIC0xNTIsOSArMTUyLDkgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1
aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0
Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9y
TWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJl
c29sdmVyJiwgRWxlbWVudCYsIFBzZXVkb0lkKTsKKyAgICBSZWZQdHI8SlNPTjo6VHlwZWRBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRj
aGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2
ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVt
ZW50Jik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8Tm9kZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgUmVmUHRyPEpT
T046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFy
cmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3Vt
ZW50Tm9kZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZs
b3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93
KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01M
aXN0ZW5lciBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDRmODExM2QwZmNjY2IwODI0NjliMjJhMmU1ZDRl
NDlhZTRlZTdjNWEuLjJhYTE4MmM0ZWIxZDJkYjUxNWE3MDAwZGZiZWY1ZTA4NmFiZWY0OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldEhpZ2hsaWdo
dChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6QwogICAgIG1fb3Zlcmxh
eS0+Z2V0SGlnaGxpZ2h0KGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmplY3RG
b3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3QKK1JlZjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBJbnNwZWN0b3JD
b250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdAogewogICAg
IHJldHVybiBtX292ZXJsYXktPmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
YTZmOWZjZDNjMmU3NThjNTExOTNhMzRlNTc2ZGFiNTg2N2QwZjJkYS4uZDBlYjUyMTI0NzFmZWQw
YmViZDEyMmJmZDJjMWVmNTM2NmM3NjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBl
czo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVpbGRPYmplY3RG
b3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZENvbXBvc2l0ZShGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCAxYzk2NTkxNzA1OWMxMzMxNWY5ZjAxYWMwODQ2ZWE1OGQ3
MTE0MzZiLi4wNDEyNTdhMDhiY2ZhYTRhMmNiNzRlM2Y1YzBiZmJkNTMxOTZmMjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTU0MSw3
ICs1NDEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAgICAgICAqZWxlbWVudElkID0g
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0
b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8aW50Pj4mIHJlc3VsdCkKIHsKICAg
ICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAo
IW5vZGUpCkBAIC01NTgsNyArNTU4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlT
ZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICB9
CiAKICAgICBhdXRvIG5vZGVzID0gcXVlcnlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Cisg
ICAgcmVzdWx0ID0gSlNPTjo6VHlwZWRBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+
YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CiB9CkBAIC01
ODgsNyArNTg4LDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01h
cC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01h
cC5yZWxlYXNlKCkpOwotICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRk
SXRlbShidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKICAgICAgICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKDAsIFdURk1vdmUoY2hpbGRy
ZW4pKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA3LDkgKzgwNyw5IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnN0CiAgICAgbV9kb21FZGl0b3ItPnJlcGxhY2VXaG9sZVRleHQoZG93bmNhc3Q8
VGV4dD4oKm5vZGUpLCB2YWx1ZSwgZXJyb3JTdHJpbmcpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVy
Pj4mIGxpc3RlbmVyc0FycmF5KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KQogewotICAgIGxp
c3RlbmVyc0FycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPjo6Y3JlYXRlKCk7CisgICAgbGlzdGVuZXJzQXJyYXkg
PSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5l
cj46OmNyZWF0ZSgpOwogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBu
b2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTE1LDcgKzkxNSw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoCiAgICAgKnJlc3VsdENvdW50ID0gcmVzdWx0c1Zl
Y3Rvci5zaXplKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3Vs
dHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQg
ZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGludD4+JiBub2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBm
cm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxpbnQ+PiYgbm9k
ZUlkcykKIHsKICAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0
cy5maW5kKHNlYXJjaElkKTsKICAgICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7
CkBAIC05MjksNyArOTI5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxp
bnQ+OjpjcmVhdGUoKTsKKyAgICBub2RlSWRzID0gSlNPTjo6VHlwZWRBcnJheTxpbnQ+OjpjcmVh
dGUoKTsKICAgICBmb3IgKGludCBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgKytpKQogICAg
ICAgICBub2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKGl0LT52YWx1ZSlb
aV0uZ2V0KCkpKTsKIH0KQEAgLTEyNDAsNyArMTI0MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29u
c3QKICAgICByZXN1bHQgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxTdHJpbmc+PiYgcmVzdWx0KQogewogICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCBub2RlSWQpOwog
ICAgIGlmICghZWxlbWVudCkKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUo
Tm9kZSoKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpIHsKICAgICAgICAgaW50IG5v
ZGVDb3VudCA9IGlubmVyQ2hpbGROb2RlQ291bnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXRD
aGlsZE5vZGVDb3VudChub2RlQ291bnQpOwotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWls
ZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKKyAgICAg
ICAgUmVmPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4g
Y2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5v
ZGVzTWFwKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAg
ICB2YWx1ZS0+c2V0Q2hpbGRyZW4oV1RGTW92ZShjaGlsZHJlbikpOwogICAgIH0KQEAgLTEzODYs
NyArMTM4Niw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSoKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChTaGFkb3dSb290KiByb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gc2hhZG93Um9vdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gc2hh
ZG93Um9vdHMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgc2hhZG93Um9vdHMtPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFwKSk7CiAgICAgICAgICAgICB2YWx1ZS0+c2V0U2hh
ZG93Um9vdHMoV1RGTW92ZShzaGFkb3dSb290cykpOwogICAgICAgICB9CkBAIC0xNDQxLDkgKzE0
NDEsOSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1S
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KQorUmVmPEpT
T046OlR5cGVkQXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JF
bGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KQogewotICAgIGF1dG8gYXR0cmlidXRl
c1ZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBhdHRyaWJ1dGVzVmFsdWUgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNyZWF0
ZSgpOwogICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVt
LgogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gYXR0
cmlidXRlc1ZhbHVlOwpAQCAtMTQ1NSw5ICsxNDU1LDkgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVu
dEEKICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUmVmPEpTT046OlR5cGVkQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRv
SWRNYXAqIG5vZGVzTWFwKQogewotICAgIGF1dG8gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0gMCkgewogICAgICAgICAvLyBT
cGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRlbmQgdGhhdCBjb250YWluZXIn
cyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAgICBOb2RlKiBmaXJzdENoaWxk
ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CkBAIC0xNDc5LDE0ICsxNDc5LDE0IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBJbnNwZWN0b3JET01BZ2VuCiAgICAgcmV0dXJuIGNoaWxkcmVuOwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVt
ZW50JiBlbGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitSZWZQdHI8SlNPTjo6VHlwZWRB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCkKIHsKICAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVFbGVtZW50ID0g
ZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgUHNldWRvRWxlbWVudCogYWZ0ZXJF
bGVtZW50ID0gZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKICAgICBpZiAoIWJlZm9yZUVs
ZW1lbnQgJiYgIWFmdGVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBwc2V1ZG9FbGVtZW50
cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3Jl
YXRlKCk7CiAgICAgaWYgKGJlZm9yZUVsZW1lbnQpCiAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5h
ZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShiZWZvcmVFbGVtZW50LCAwLCBub2Rlc01hcCkpOwog
ICAgIGlmIChhZnRlckVsZW1lbnQpCkBAIC0xNTUzLDE0ICsxNTUzLDE0IEBAIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2CiAgICAgcmV0dXJuIHZhbHVlOwogfQogICAgIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4mJiBheE9iamVjdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD4+JiYgY2hpbGROb2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vz
c2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiBheE9iamVjdCwg
UmVmUHRyPEpTT046OlR5cGVkQXJyYXk8aW50Pj4mJiBjaGlsZE5vZGVJZHMpCiB7CiAgICAgY29u
c3QgYXV0byYgY2hpbGRyZW4gPSBheE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxk
cmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmICghY2hpbGROb2RlSWRz
KQotICAgICAgICBjaGlsZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+
OjpjcmVhdGUoKTsKKyAgICAgICAgY2hpbGROb2RlSWRzID0gSlNPTjo6VHlwZWRBcnJheTxpbnQ+
OjpjcmVhdGUoKTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkT2JqZWN0IDogY2hp
bGRyZW4pIHsKICAgICAgICAgaWYgKE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkT2JqZWN0LT5ub2Rl
KCkpCkBAIC0xNTgyLDEzICsxNTgyLDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAg
Tm9kZSogYWN0aXZlRGVzY2VuZGFudE5vZGUgPSBudWxscHRyOwogICAgIGJvb2wgYnVzeSA9IGZh
bHNlOwogICAgIGF1dG8gY2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OkZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjaGlsZE5vZGVJZHM7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGNvbnRyb2xsZWROb2RlSWRzOworICAgIFJlZlB0cjxK
U09OOjpUeXBlZEFycmF5PGludD4+IGNoaWxkTm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxpbnQ+PiBjb250cm9sbGVkTm9kZUlkczsKICAgICBhdXRvIGN1cnJlbnRTdGF0ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJl
bnQ6OkZhbHNlOwogICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7CiAgICAgYm9vbCBleHBhbmRlZCA9
IGZhbHNlOwogICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gZmxvd2VkTm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6
VHlwZWRBcnJheTxpbnQ+PiBmbG93ZWROb2RlSWRzOwogICAgIGJvb2wgZm9jdXNlZCA9IGZhbHNl
OwogICAgIGJvb2wgaWdub3JlZCA9IHRydWU7CiAgICAgYm9vbCBpZ25vcmVkQnlEZWZhdWx0ID0g
ZmFsc2U7CkBAIC0xNTk2LDE3ICsxNTk2LDE3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAg
ICAgYm9vbCBoaWRkZW4gPSBmYWxzZTsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgYm9vbCBsaXZl
UmVnaW9uQXRvbWljID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGxpdmVSZWdpb25SZWxldmFudDsKKyAgICBSZWZQdHI8SlNPTjo6VHlwZWRB
cnJheTxTdHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CiAgICAgYXV0byBsaXZlUmVnaW9uU3Rh
dHVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6
TGl2ZVJlZ2lvblN0YXR1czo6T2ZmOwogICAgIE5vZGUqIG1vdXNlRXZlbnROb2RlID0gbnVsbHB0
cjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gb3duZWROb2Rl
SWRzOworICAgIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PGludD4+IG93bmVkTm9kZUlkczsKICAg
ICBOb2RlKiBwYXJlbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIHByZXNzZWQgPSBmYWxzZTsK
ICAgICBib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgYm9vbCByZXF1aXJlZCA9IGZhbHNlOwog
ICAgIFN0cmluZyByb2xlOwogICAgIGJvb2wgc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7Cisg
ICAgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7CiAg
ICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQgPSBmYWxzZTsKICAgICBib29sIHN1cHBvcnRzRXhwYW5k
ZWQgPSBmYWxzZTsKICAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbiA9IGZhbHNlOwpAQCAtMTY0
Nyw3ICsxNjQ3LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIFZlY3Rv
cjxFbGVtZW50Kj4gY29udHJvbGxlZEVsZW1lbnRzOwogICAgICAgICAgICAgYXhPYmplY3QtPmVs
ZW1lbnRzRnJvbUF0dHJpYnV0ZShjb250cm9sbGVkRWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRy
KTsKICAgICAgICAgICAgIGlmIChjb250cm9sbGVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgY29udHJvbGxlZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxp
bnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBjb250cm9sbGVkTm9kZUlkcyA9IEpTT046
OlR5cGVkQXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50
KiBjb250cm9sbGVkRWxlbWVudCA6IGNvbnRyb2xsZWRFbGVtZW50cykKICAgICAgICAgICAgICAg
ICAgICAgY29udHJvbGxlZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChj
b250cm9sbGVkRWxlbWVudCkpOwogICAgICAgICAgICAgfQpAQCAtMTY4Nyw3ICsxNjg3LDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxv
d2VkRWxlbWVudHM7CiAgICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRl
KGZsb3dlZEVsZW1lbnRzLCBhcmlhX2Zsb3d0b0F0dHIpOwogICAgICAgICAgICAgaWYgKGZsb3dl
ZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBm
bG93ZWROb2RlSWRzID0gSlNPTjo6VHlwZWRBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgICAgICBmb3IgKEVsZW1lbnQqIGZsb3dlZEVsZW1lbnQgOiBmbG93ZWRFbGVtZW50cykKICAg
ICAgICAgICAgICAgICAgICAgZmxvd2VkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKGZsb3dlZEVsZW1lbnQpKTsKICAgICAgICAgICAgIH0KQEAgLTE3MjYsNyArMTcyNiw3
IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBh
cmlhUmVsZXZhbnRBZGRpdGlvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVS
ZWdpb25SZWxldmFudDo6QWRkaXRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFy
aWFSZWxldmFudFJlbW92YWxzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVn
aW9uUmVsZXZhbnQ6OlJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFS
ZWxldmFudFRleHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxl
dmFudDo6VGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICAgICAg
ICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2YWx1
ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMgWyJh
ZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3RlZCBp
biBXZWJJbnNwZWN0b3JVSS4KQEAgLTE3NTgsNyArMTc1OCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpCiAgICAgICAgICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBvd25lZEVsZW1lbnRzOwog
ICAgICAgICAgICAgICAgIGF4T2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUob3duZWRFbGVt
ZW50cywgYXJpYV9vd25zQXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKG93bmVkRWxlbWVudHMu
c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG93bmVkTm9kZUlkcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgICAgICBvd25l
ZE5vZGVJZHMgPSBKU09OOjpUeXBlZEFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBmb3IgKEVsZW1lbnQqIG93bmVkRWxlbWVudCA6IG93bmVkRWxlbWVudHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBvd25lZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9G
cm9udGVuZChvd25lZEVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzg0LDcgKzE3
ODQsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAg
ICAgICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsK
ICAgICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAg
ICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMgPSBKU09O
OjpUeXBlZEFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYg
c2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKE5vZGUqIHNlbGVjdGVkQ2hpbGROb2RlID0gc2VsZWN0ZWRDaGlsZE9iamVjdC0+
bm9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMtPmFk
ZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChzZWxlY3RlZENoaWxkTm9kZSkpOwpAQCAtMjA0
Miw3ICsyMDQyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW50cykKIHsKLSAgICBhdXRvIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBhdXRvIG5vZGVJZHMgPSBKU09OOjpUeXBlZEFycmF5
PGludD46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAg
ICAgICAgIGludCBpZCA9IGJvdW5kTm9kZUlkKGVsZW1lbnQpOwogICAgICAgICAvLyBJZiBub2Rl
IGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDlmMWJmZDEyZGViM2VjNDVhZTRj
NjkxZjBlMTMyNWUzZTBkYWNkNDEuLjdjNzM2ODJjZGE0ZGVjNmE5YWM0MzA1MTcwNTlkZTM4MDdm
Mzg4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJv
bSB0aGUgZnJvbnRlbmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgogICAgIHZvaWQgcXVlcnlT
ZWxlY3RvcihFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3Jz
LCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBxdWVyeVNlbGVjdG9yQWxsKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2
b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8aW50Pj4mIHJlc3VsdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290KSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVl
c3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBk
ZXB0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyYs
IGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkg
b3ZlcnJpZGU7CkBAIC0xMjIsMTMgKzEyMiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRPdXRl
ckhUTUwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5vZGVWYWx1
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3Rl
bmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEV2ZW50TGlzdGVu
ZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBj
b25zdCBvYmplY3RHcm91cCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1TZWFy
Y2goRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQs
IGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0
b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1bHRzKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXNvbHZlTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxTdHJpbmc+PiYgcmVzdWx0
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYs
IGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dENvbmZpZykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKICAgICB2b2lkIHB1
c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGF0aCwg
aW50KiBub2RlSWQpIG92ZXJyaWRlOwpAQCAtMjI2LDEyICsyMjYsMTIgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGggPSAx
KTsKIAogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0
Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwotICAgIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoRWxlbWVudCopOwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
Tm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9k
ZVRvSWRNYXAqIG5vZGVzTWFwKTsKKyAgICBSZWY8SlNPTjo6VHlwZWRBcnJheTxTdHJpbmc+PiBi
dWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFJlZjxKU09OOjpU
eXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JD
b250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAq
IG5vZGVzTWFwKTsKKyAgICBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVu
dCYsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5v
ZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFj
Y2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUqKTsKLSAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmls
aXR5Q2hpbGRyZW4oUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYmKTsKKyAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmls
aXR5Q2hpbGRyZW4oUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYsIFJlZlB0cjxKU09OOjpU
eXBlZEFycmF5PGludD4+JiYpOwogICAgIAogICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCA2MTE0ODBjZDNjYjNlYzYwYTU4NWVjMjU3MmI1NThlYWMx
Y2IzNDE1Li4yODNmNzZkNGEzOTBmMmZmM2Y3NDRkYzJiNDVmMDM4ZjljNGMyMTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlz
YWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
PiYgaXRlbXMpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0
ZW1zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBzdG9y
YWdlSWQsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEpTT046OlR5cGVkQXJyYXk8U3RyaW5nPj4+
JiBpdGVtcykKIHsKICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFt
ZSk7CkBAIC05NywxMyArOTcsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Omdl
dERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgp
OworICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSlNPTjo6VHlwZWRBcnJheTxKU09OOjpUeXBlZEFy
cmF5PFN0cmluZz4+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dG9yYWdlQXJlYS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFn
ZUFyZWEtPmtleShpKTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0o
a2V5KTsKIAotICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpUeXBlZEFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAgICAg
ICBlbnRyeS0+YWRkSXRlbSh2YWx1ZSk7CiAgICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRlbShX
VEZNb3ZlKGVudHJ5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggN2E5NmJmNWUzOTg3ODFkODY2NTEyOWRjYmJkMDc4
OWRkYjFmZDFlNy4uZjJhMTMyYTRjYzUzZjM5MDk3MTBiMDA5MGMxZWY3MDkyN2EzNDJjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZy
b250LWVuZC4KICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RE9NU3RvcmFn
ZUl0ZW1zKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0
b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0RE9N
U3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SlNPTjo6VHlwZWRBcnJheTxT
dHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAppbmRleCBiZjM4YjVhMWI4ZTM4NGVlOWFmNWM1ODFhYmZkZDRkZmZjNzE1ZjNlLi5hZmNl
ODhlOWY1NTVjZWI4MDE0OTJlOTJlYWVhNTAwYjMwYThkOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC03OSwxMSAr
NzksMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGF1dG8mIHJvd0xpc3QgPSByZXN1bHRT
ZXQucm93cygpOwogCi0gICAgICAgIGF1dG8gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBjb2x1bW5OYW1lcyA9
IEpTT046OlR5cGVkQXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYg
Y29sdW1uIDogcm93TGlzdC5jb2x1bW5OYW1lcygpKQogICAgICAgICAgICAgY29sdW1uTmFtZXMt
PmFkZEl0ZW0oY29sdW1uKTsKIAotICAgICAgICBhdXRvIHZhbHVlcyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3RvclZhbHVlPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gdmFs
dWVzID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogcm93TGlzdC52YWx1ZXMoKSkgewogICAgICAgICAgICAgYXV0
byBpbnNwZWN0b3JWYWx1ZSA9IFdURjo6c3dpdGNoT24odmFsdWUsCiAgICAgICAgICAgICAgICAg
W10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gSW5zcGVjdG9yVmFsdWU6Om51bGwo
KTsgfSwKQEAgLTI0MCwxNCArMjQwLDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PFN0cmluZz4+JiBuYW1lcykKIHsK
ICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICBlcnJvciA9IEFTQ0lJTGl0ZXJhbCgiRGF0
YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CisgICAgbmFtZXMgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAg
aWYgKGF1dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKSkgewogICAgICAg
ICBmb3IgKGF1dG8mIHRhYmxlTmFtZSA6IGRhdGFiYXNlLT50YWJsZU5hbWVzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBk
ZTNjNzgzMzVmN2YzZGIxODBhY2E4MmNlMjUyN2FjZWNlYTFjNzEzLi5kYjg2OTgzOTQxMjIzNWY4
OGZlNmUzZDIzNTE3NjhjODVjNWUxMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiBuYW1lcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpUeXBlZEFy
cmF5PFN0cmluZz4+JiBuYW1lcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVjdXRlU1FMKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBS
ZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9t
IHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA0NjQ0Y2QwY2UxNDQ0YzA3OTlmYjZk
ZTE4MGYyMDdjNTM0YjkxNTk3Li5mMzg3MGFmNWZiNGQwMDEyZWYzY2I3Y2YxMGFmNjJkZWRjYzlm
NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5OwordXNpbmcgSlNPTjo6VHlwZWRBcnJheTsKIHVzaW5nIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkluZGV4ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwogdXNpbmcgSW5z
cGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpEYXRhRW50cnk7CiB1c2luZyBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbmRleGVkREI6OktleTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgUmVm
UHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBpZAogICAgICAgICBrZXlQYXRoLT5zZXRTdHJpbmcoc3RyaW5nKTsKICAgICAg
ICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3Rv
cikgewotICAgICAgICBhdXRvIGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpUeXBlZEFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAg
ICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7CiAgICAgICAgIFJlZlB0cjxLZXlQYXRo
PiBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJh
eSkucmVsZWFzZSgpOwpAQCAtMjI0LDE0ICsyMjQsMTQgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgICAgICBhdXRvJiBkYXRhYmFzZUluZm8gPSBkYXRhYmFzZS5pbmZv
KCk7Ci0gICAgICAgIGF1dG8gb2JqZWN0U3RvcmVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgp
OworICAgICAgICBhdXRvIG9iamVjdFN0b3JlcyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOwogICAgICAgICBh
dXRvIG9iamVjdFN0b3JlTmFtZXMgPSBkYXRhYmFzZUluZm8ub2JqZWN0U3RvcmVOYW1lcygpOwog
ICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBvYmplY3RTdG9yZU5hbWVzKSB7CiAgICAgICAgICAg
ICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBkYXRhYmFzZUluZm8uaW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUobmFtZSk7CiAgICAgICAgICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBpbmRleGVzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmpl
Y3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGluZGV4ZXMgPSBKU09O
OjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJ
bmRleD46OmNyZWF0ZSgpOwogICAgIAogICAgICAgICAgICAgZm9yIChhdXRvJiBpbmRleEluZm8g
OiBvYmplY3RTdG9yZUluZm8tPmluZGV4TWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIG9iamVjdFN0b3JlSW5kZXggPSBPYmplY3RTdG9yZUluZGV4OjpjcmVhdGUoKQpAQCAt
NDIyLDE0ICs0MjIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50
TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQogICAgICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHQoaW5qZWN0ZWRTY3JpcHQpCiAgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2soV1RGTW92ZShy
ZXF1ZXN0Q2FsbGJhY2spKQotICAgICAgICAsIG1fcmVzdWx0KEFycmF5PERhdGFFbnRyeT46OmNy
ZWF0ZSgpKQorICAgICAgICAsIG1fcmVzdWx0KEpTT046OlR5cGVkQXJyYXk8RGF0YUVudHJ5Pjo6
Y3JlYXRlKCkpCiAgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQogICAgICAgICAsIG1f
cGFnZVNpemUocGFnZVNpemUpCiAgICAgewogICAgIH0KICAgICBJbmplY3RlZFNjcmlwdCBtX2lu
amVjdGVkU2NyaXB0OwogICAgIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxs
YmFjazsKLSAgICBSZWY8QXJyYXk8RGF0YUVudHJ5Pj4gbV9yZXN1bHQ7CisgICAgUmVmPEpTT046
OlR5cGVkQXJyYXk8RGF0YUVudHJ5Pj4gbV9yZXN1bHQ7CiAgICAgaW50IG1fc2tpcENvdW50Owog
ICAgIHVuc2lnbmVkIG1fcGFnZVNpemU7CiB9OwpAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uCiAgICAgICAgIGlmICghY2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IGRhdGFiYXNlTmFtZUFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZjxKU09OOjpUeXBlZEFycmF5PFN0cmluZz4+
IGRhdGFiYXNlTmFtZUFycmF5ID0gSlNPTjo6VHlwZWRBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsK
ICAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZU5hbWUgOiBkYXRhYmFzZU5hbWVzKQogICAgICAg
ICAgICAgZGF0YWJhc2VOYW1lQXJyYXktPmFkZEl0ZW0oZGF0YWJhc2VOYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAK
aW5kZXggMzNiODcxODdkZGQyNGNhYjc4NmVhNjc4MzY0NGYzZWU4YmZkZGIyMy4uMmEwZjM5YjM4
MDFlODViMzdjZGI1MTE4ZTNiODVlZTczZWVkY2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0xMDEsOSArMTAx
LDkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3ll
ZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW4KICAgICB1bmJpbmRQc2V1ZG9FbGVtZW50KCZw
c2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJz
Rm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6Okxh
eWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5v
ZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykK
IHsKLSAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CisgICAgbGF5ZXJzID0gSlNPTjo6
VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRl
KCk7CiAKICAgICBhdXRvKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRP
TUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgICAgIGdhdGhlckxheWVyc1Vz
aW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqcmVuZGVyZXIpLCBsYXllcnMpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+JiBs
YXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1Jl
bmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXIuaGFzTGF5
ZXIoKSkgewogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVy
cm9yU3RyaW5nLCBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikubGF5
ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmlu
ZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0
cmluZywgY2hpbGQsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVy
cykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVy
TGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+aXNDb21w
b3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKGVy
cm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCAyZGU3YTI4ZTJjYzAzNDRhNDFkMTY4
YzEyYzAzZDY0YmNlNDI5OGFjLi4xZGU5YzRmNGZmYzk5YjAyNTIwYjBiODczZmM2NDgyZmU1YjYz
YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGZyb250LWVuZC4KICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgbGF5ZXJz
Rm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6Okxh
eWVyPj4mKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TGF5ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM+Jikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CkBAIC03MCw4ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGJpbmQoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKICAgICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOwogCi0gICAg
dm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYs
IFJlbmRlckVsZW1lbnQmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdm9pZCBnYXRoZXJMYXll
cnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5
ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVj
dEhpZXJhcmNoeShFcnJvclN0cmluZyYsIFJlbmRlckVsZW1lbnQmLCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAgICB2
b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBS
ZW5kZXJMYXllciosIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcmLCBSZW5kZXJM
YXllciopOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkludFJlY3Q+
IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBlYmY5YzM2NGFl
MjZiZDBmMTZhNWU0NDUxOTI5MDFlZjAxNGRjZjVmLi43MmY3OWQ4OWYxYjAxOWU3ZmE0MzhlYzll
NTIyNDE1Zjg0ZTQ3MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50Ojpjb2xsZWN0U2FtcGxlKGNvbnN0IFJlc291cmNlVXNhZ2VEYXRhJiBkYXRhKQog
ICAgICAgICAuc2V0U2l6ZShkYXRhLmNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6Ok90aGVyXS50
b3RhbFNpemUoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIAotICAgIGF1dG8gY2F0ZWdvcmllcyA9
IFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6TWVtb3J5OjpDYXRlZ29yeURhdGE+OjpjcmVhdGUo
KTsKKyAgICBhdXRvIGNhdGVnb3JpZXMgPSBKU09OOjpUeXBlZEFycmF5PFByb3RvY29sOjpNZW1v
cnk6OkNhdGVnb3J5RGF0YT46OmNyZWF0ZSgpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RG
TW92ZShqYXZhc2NyaXB0Q2F0ZWdvcnkpKTsKICAgICBjYXRlZ29yaWVzLT5hZGRJdGVtKFdURk1v
dmUoaml0Q2F0ZWdvcnkpKTsKICAgICBjYXRlZ29yaWVzLT5hZGRJdGVtKFdURk1vdmUoaW1hZ2Vz
Q2F0ZWdvcnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggMDc3YjYzMzk4N2Q5MjRhZGQ2NDNmYWQxYmIyOTNiODUzNWJh
Yjk4Mi4uN2Q5ZjdjNzFkZTE0YjVmMmU3YmQ0NTc0OGYyMGUyOGYyMDNhNWFkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAg
LTg1OSw3ICs4NTksNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNl
YXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAgIHJldHVybiBzZWFy
Y2hSZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hP
dGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBS
ZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+PiYgcmVzdWx0KQogewogICAgIFZlY3RvcjxOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhKj4gcmVzb3VyY2VzID0gbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZXMoKTsKICAg
ICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcykgewpAQCAtODcxLDcgKzg3MSw3
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3NpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNp
dGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQor
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OlR5cGVkQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQogewogICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJl
c291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShyZXF1ZXN0SWQpOwogICAgIGlmICgh
cmVzb3VyY2VEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKaW5kZXggOWJiODE4Zjk2ZWVmYzM2NzEyZjg4OGUzYzllYzYxODIwOWMx
ZDgwMy4uMDU1OWJjMWI5ZGNkMmNiMTIwNWNlMGYzN2MyZGIwOTczMmY1NDA4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAy
LDggKzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAg
IHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKIAotICAgIHZv
aWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7Ci0gICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9v
bCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4m
KTsKKyAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFy
RXhwcmVzc2lvbiYsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CisgICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9v
bCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0
aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDY2YzdmMDhmMGYyOGIwNDZiYjRjMzVlOGU5YmYxOWZi
ZGYyYWJjNTUuLmYyOTkxYjhjMWQxOWVkZmY3M2Q1ZGU5YjE5MGYzMzg4YThlY2YxYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTM4MCw3
ICszODAsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
UXVhZD4gYnVpbGRBcnJheUZvclF1YWQoY29uc3QgRmxvYQogCiBzdGF0aWMgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPiBidWlsZE9i
amVjdEZvckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsKLSAgICBhdXRv
IGFycmF5T2ZRdWFkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD46OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZlF1
YWRzID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
OlF1YWQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHF1YWQgOiBoaWdobGlnaHQucXVhZHMp
CiAgICAgICAgIGFycmF5T2ZRdWFkcy0+YWRkSXRlbShidWlsZEFycmF5Rm9yUXVhZChxdWFkKSk7
CiAKQEAgLTQzMywxMSArNDMzLDExIEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uKEZyCiAgICAgICAg
IC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+PiBidWlsZE9iamVjdEZv
ckZsb3dSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkKQorc3RhdGljIFJlZjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6UmVnaW9uPj4gYnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucyhSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKIHsKICAgICBGcmFt
ZVZpZXcqIG1haW5GcmFtZVZpZXcgPSByZWdpb24tPmRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCk7CiAKLSAgICBhdXRvIGFycmF5T2ZSZWdpb25zID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+Ojpj
cmVhdGUoKTsKKyAgICBhdXRvIGFycmF5T2ZSZWdpb25zID0gSlNPTjo6VHlwZWRBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj46OmNyZWF0ZSgpOwogCiAgICAg
Y29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IGZsb3dUaHJlYWQtPnJlbmRlclJl
Z2lvbkxpc3QoKTsKICAgICBmb3IgKGF1dG8mIGl0ZXJSZWdpb24gOiByZWdpb25MaXN0KSB7CkBA
IC01NDIsNyArNTQyLDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3Rz
VGltZXJGaXJlZCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQog
ewotICAgIGF1dG8gYXJyYXlPZlJlY3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWN0Pjo6Y3JlYXRlKCk7CisgICAgYXV0
byBhcnJheU9mUmVjdHMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6UmVjdD46OmNyZWF0ZSgpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fcGFpbnRSZWN0cykKICAgICAgICAgYXJyYXlPZlJlY3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yUmVjdChwYWlyLnNlY29uZCkpOwogCkBAIC01NTQsOSArNTU0LDkgQEAgdm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpkcmF3R3V0dGVyKCkKICAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJSUxpdGVy
YWwoImRyYXdHdXR0ZXIiKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hs
aWdodERhdGE+PiBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBjb25maWcpCitzdGF0aWMgUmVmUHRyPEpT
T046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVu
dEhpZ2hsaWdodERhdGE+PiBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBjb25maWcpCiB7Ci0gICAgYXV0
byBhcnJheU9mRnJhZ21lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVhdGUo
KTsKKyAgICBhdXRvIGFycmF5T2ZGcmFnbWVudHMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPjo6Y3JlYXRl
KCk7CiAKICAgICBSZW5kZXJGbG93VGhyZWFkKiBjb250YWluaW5nRmxvd1RocmVhZCA9IHJlbmRl
cmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKCFjb250YWluaW5nRmxv
d1RocmVhZCkgewpAQCAtNzE1LDcgKzcxNSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVtCiAg
ICAgICAgIC5yZWxlYXNlKCk7CiAKICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGlzPFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8gY2xhc3NlcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGNsYXNz
ZXMgPSBKU09OOjpUeXBlZEFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBIYXNoU2V0
PEF0b21pY1N0cmluZz4gdXNlZENsYXNzTmFtZXM7CiAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRT
dHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihlbGVtZW50
KS5jbGFzc05hbWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1l
c1N0cmluZy5zaXplKCk7ICsraSkgewpAQCAtNzk4LDcgKzc5OCw3IEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBJbnNwZWN0b3JP
dmVybGF5OjpiCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+PiBhcnJheU9mRnJhZ21lbnRI
aWdobGlnaHRzID0gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKHJlbmRlcmVyLCBtX25v
ZGVIaWdobGlnaHRDb25maWcpOworICAgIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYXJyYXlP
ZkZyYWdtZW50SGlnaGxpZ2h0cyA9IGJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdtZW50cyhyZW5k
ZXJlciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnKTsKICAgICBpZiAoIWFycmF5T2ZGcmFnbWVudEhp
Z2hsaWdodHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04MTgsOSArODE4LDkgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERh
dGE+IEluc3BlY3Rvck92ZXJsYXk6OmIKICAgICByZXR1cm4gV1RGTW92ZShub2RlSGlnaGxpZ2h0
T2JqZWN0KTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBJbnNwZWN0b3JPdmVy
bGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdAorUmVmPEpTT046OlR5
cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0
RGF0YT4+IEluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2Rlcygp
IGNvbnN0CiB7Ci0gICAgYXV0byBoaWdobGlnaHRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT46
OmNyZWF0ZSgpOworICAgIGF1dG8gaGlnaGxpZ2h0cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT46OmNyZWF0ZSgp
OwogCiAgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSkgewogICAgICAgICBpZiAoUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+IG5vZGVIaWdo
bGlnaHREYXRhID0gYnVpbGRIaWdobGlnaHRPYmplY3RGb3JOb2RlKG1faGlnaGxpZ2h0Tm9kZS5n
ZXQoKSwgSGlnaGxpZ2h0VHlwZTo6Tm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuaAppbmRleCBhOGFmMGQyOTliOGYwYjQwMmZhYThlNmE3MjM2OGFkOWYy
Mzc5NWYyLi4wNTIxMDExMGIxODA3N2UwYjJlZDlhYzM2M2ExMDVkNzg2YmY3ZDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CiAK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxp
Z2h0RGF0YT4gYnVpbGRIaWdobGlnaHRPYmplY3RGb3JOb2RlKE5vZGUqLCBIaWdobGlnaHRUeXBl
KSBjb25zdDsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9y
SGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0OworICAgIFJlZjxKU09OOjpUeXBlZEFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWlsZE9i
amVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZnJlZVBhZ2UoKTsK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IGU0ZWFjYWFhY2IzYTJjOTVjMzk5YjEzNjQwMmIwZWExOWNmNjg2YzcuLmRk
ODU1YTljYzM4MDU1N2RkN2ZlNGQzNWUyNmFlYjRhZDZlZjFmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00NDIsOSArNDQyLDkg
QEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+IGJ1aWxkT2Jq
ZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3Rh
dGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBj
b29raWVzTGlzdCkKK3N0YXRpYyBSZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29r
aWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUg
OiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRkSXRlbShidWlsZE9iamVjdEZvckNv
b2tpZShjb29raWUpKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgVmVjdG9yPFVSTD4gYWxs
UmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpDb29raWU+PiYgY29va2llcykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVz
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcg
Y29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNTM1
LDcgKzUzNSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFyCiAgICAgaWYgKHJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nv
b2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsK
KyAgICAgICAgY29va2llcyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
ZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXJsKQpAQCAtNTczLDkgKzU3Myw5IEBAIHN0YXRpYyBib29sIHRleHRDb250ZW50
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcq
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1Jl
Z2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQog
ewotICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0
cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1Jl
Z2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsK
QEAgLTYyMyw5ICs2MjMsOSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAgICAgICAucmVs
ZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJ
blJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElz
UmVnZXgsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3Jl
YXRlKCk7CisgICAgcmVzdWx0ID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9w
dGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VT
ZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
IDogZmFsc2U7CkBAIC04NzcsNyArODc3LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWMKICAg
ICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7
Ci0gICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdWJyZXNvdXJjZXMgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lUmVzb3VyY2U+OjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAu
c2V0RnJhbWUoV1RGTW92ZShmcmFtZU9iamVjdCkpCiAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3Vi
cmVzb3VyY2VzLmNvcHlSZWYoKSkKQEAgLTkwMiwxMCArOTAyLDEwIEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50Ojpi
dWlsZE9iamVjCiAgICAgICAgIHN1YnJlc291cmNlcy0+YWRkSXRlbShXVEZNb3ZlKHJlc291cmNl
T2JqZWN0KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5B
cnJheTsKKyAgICBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSog
Y2hpbGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewot
ICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBjaGlsZHJlbkFycmF5ID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
cmVzdWx0LT5zZXRDaGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAgICAgICAgfQogICAgICAg
ICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXgg
OTNjOTA0ZDdjZmYxMjdhOTZhZmFhNjYzZjQzNTU5MTAwZTQzZTUwZS4uYWY5NThhMGZlMDc4M2E1
NDYzMThmZWVjOGI2NjE5MzhhNDM5ODNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtOTUsMTIgKzk1LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nJiwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBuYXZpZ2F0ZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENv
b2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOworICAg
IHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVl
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5n
KiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJj
aEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OlR5cGVk
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNv
bnN0IGlzUmVnZXgsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRS
ZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbXVs
YXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3Bh
cmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwCmluZGV4IDNhYWE1MmE2YjhhYTYyZjNkYzc4ZDEyNGFkY2UxOGFlZDA3
OTdmOTcuLmE5NDM5MGY0MDExMmMyZDlhNjYwNzE1NzhkZjc2MGI3NDE3YWYyOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAt
NzQsNyArNzQsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVw
bGF5SW5wdXQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdQogCiBzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4gYnVpbGRJbnNwZWN0b3JPYmpl
Y3RGb3JTZXNzaW9uKFJlZlB0cjxSZXBsYXlTZXNzaW9uPiYmIHNlc3Npb24pCiB7Ci0gICAgYXV0
byBzZWdtZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFNlZ21lbnRJZGVudGlmaWVy
Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBzZWdtZW50cyA9IEpTT046OlR5cGVkQXJyYXk8U2VnbWVu
dElkZW50aWZpZXI+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpzZXNz
aW9uKQogICAgICAgICBzZWdtZW50cy0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHNlZ21lbnQt
PmlkZW50aWZpZXIoKSkpOwpAQCAtMTEzLDEwICsxMTMsMTAgQEAgc3RhdGljIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlIGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2Vn
bWVudFMKIAogY2xhc3MgU2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yIHsKIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0Pj4gUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIFJl
ZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5
SW5wdXQ+PiBSZXR1cm5UeXBlOwogCiAgICAgU2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yKCkK
LSAgICAgICAgOiBtX2lucHV0cyhJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0Pjo6Y3JlYXRlKCkpIHsgfQorICAgICAgICA6
IG1faW5wdXRzKEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpS
ZXBsYXlJbnB1dD46OmNyZWF0ZSgpKSB7IH0KICAgICB+U2VyaWFsaXplSW5wdXRUb0pTT05GdW5j
dG9yKCkgeyB9CiAKICAgICB2b2lkIG9wZXJhdG9yKCkoc2l6ZV90IGluZGV4LCBjb25zdCBOb25k
ZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBpbnB1dCkKQEAgLTEyOSwxOCArMTI5LDE4IEBAIHB1Ymxp
YzoKIAogICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5w
dXRzKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IG1faW5wdXRzOworICAg
IFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVw
bGF5SW5wdXQ+PiBtX2lucHV0czsKIH07CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50
KFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJiBzZWdtZW50KQogewotICAgIGF1dG8gcXVl
dWVzT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpSZXBsYXlJbnB1dFF1ZXVlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBxdWV1ZXNP
YmplY3QgPSBKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVw
bGF5SW5wdXRRdWV1ZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dGF0aWNfY2FzdDxzaXplX3Q+KElucHV0UXVldWU6OkNvdW50KTsgaSsrKSB7CiAgICAgICAgIFNl
cmlhbGl6ZUlucHV0VG9KU09ORnVuY3RvciBjb2xsZWN0b3I7CiAgICAgICAgIElucHV0UXVldWUg
cXVldWUgPSBzdGF0aWNfY2FzdDxJbnB1dFF1ZXVlPihpKTsKICAgICAgICAgUmVmUHRyPEZ1bmN0
b3JJbnB1dEN1cnNvcj4gZnVuY3RvckN1cnNvciA9IEZ1bmN0b3JJbnB1dEN1cnNvcjo6Y3JlYXRl
KHNlZ21lbnQuY29weVJlZigpKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBxdWV1ZUlu
cHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVhY2hJbnB1dEluUXVldWUocXVldWUsIGNvbGxlY3Rv
cik7CisgICAgICAgIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBxdWV1ZUlucHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVh
Y2hJbnB1dEluUXVldWUocXVldWUsIGNvbGxlY3Rvcik7CiAKICAgICAgICAgYXV0byBxdWV1ZU9i
amVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZTo6Y3Jl
YXRlKCkKICAgICAgICAgICAgIC5zZXRUeXBlKEVuY29kaW5nVHJhaXRzPElucHV0UXVldWU+Ojpl
bmNvZGVWYWx1ZShxdWV1ZSkuY29udmVydFRvPFN0cmluZz4oKSkKQEAgLTQ4MCw5ICs0ODAsOSBA
QCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpjdXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJp
bmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIHJlcGxheVBvc2l0aW9uID0gYnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JQb3NpdGlvbihtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLmN1cnJlbnRQ
b3NpdGlvbigpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0QXZhaWxhYmxl
U2Vzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U2Vzc2lvbklkZW50aWZpZXI+PiYgc2Vzc2lvbnNMaXN0KQordm9pZCBJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6Z2V0QXZhaWxhYmxlU2Vzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6VHlw
ZWRBcnJheTxTZXNzaW9uSWRlbnRpZmllcj4+JiBzZXNzaW9uc0xpc3QpCiB7Ci0gICAgc2Vzc2lv
bnNMaXN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllcj46OmNyZWF0ZSgpOworICAgIHNlc3Npb25zTGlzdCA9
IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRl
bnRpZmllcj46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcGFpciA6IG1fc2Vzc2lvbnNNYXAp
CiAgICAgICAgIHNlc3Npb25zTGlzdC0+YWRkSXRlbShwYWlyLmtleSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCmluZGV4IGZmNmU1ODc2
YjYzODYwY2M0M2U4ZGE0ZDQwMDhmMjk2Y2YzMWZiYmUuLjEzODc0YTc3OWQwMTEyMjYyMTU5NjQ4
NWQ0YzdjZWE3MDIzYmU0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgY3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciosIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPios
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlKiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRBdmFpbGFibGVTZXNzaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVu
dGlmaWVyPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVw
bGF5OjpTZXNzaW9uSWRlbnRpZmllcj4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTZXNzaW9u
RGF0YShFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklk
ZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Np
b24+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTZWdtZW50RGF0YShFcnJvclN0cmluZyYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TZWdtZW50PiYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggNjk4OTBhNjhiNDA5NDhkNmZkMTZkMzRhNjk3ODEyMzExNGU5NDIyZC4uNmI2OWQ2NzE3YmUy
ODdiZDQ4ODgyNzBlYjljYTkxN2VmNmY1MGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHBy
ZXNzaW9uLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OwordXNpbmcgSlNP
Tjo6VHlwZWRBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlJ1bGVTb3VyY2VEYXRhTGlzdDsKIHVzaW5n
IFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhOwogCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGlj
IFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NSdWxlKiBydWxlKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVs
ZSogcnVsZSwgQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT4mIG1lZGlh
QXJyYXkpCitzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgSlNP
Tjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPiYgbWVkaWFB
cnJheSkKIHsKICAgICBNZWRpYUxpc3QqIG1lZGlhTGlzdDsKICAgICBDU1NSdWxlKiBwYXJlbnRS
dWxlID0gcnVsZTsKQEAgLTU1MCw5ICs1NTAsOSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKQog
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0
eT4+IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0CitS
ZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT4+IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpIGNvbnN0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNy
ZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOwogICAgIFZl
Y3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxs
UHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKQEAgLTYyNCw4ICs2MjQsOCBAQCBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFBy
b3BlcnRpZXMoKSBjbwogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0
aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKLSAgICBhdXRv
IHByb3BlcnRpZXNPYmplY3QgPSBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5Pjo6Y3JlYXRlKCk7Ci0gICAgYXV0byBzaG9ydGhhbmRFbnRyaWVzID0gQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpOworICAgIGF1
dG8gcHJvcGVydGllc09iamVjdCA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAgIGF1dG8gc2hvcnRoYW5kRW50cmll
cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRF
bnRyeT46OmNyZWF0ZSgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4+IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQ
cm9wZXJ0eTsKICAgICBIYXNoU2V0PFN0cmluZz4gZm91bmRTaG9ydGhhbmRzOwogICAgIFN0cmlu
ZyBwcmV2aW91c1ByaW9yaXR5OwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9y
SGVscGVyKGMKICAgICAgICAgICAgIHNwZWNpZmljaXR5ID0gc2VsZWN0b3Iuc3RhdGljU3BlY2lm
aWNpdHkob2theSk7CiAKICAgICAgICAgaWYgKG9rYXkpIHsKLSAgICAgICAgICAgIGF1dG8gdHVw
bGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIGF1dG8gdHVwbGUgPSBKU09OOjpUeXBlZEFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgdHVwbGUtPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50Pigoc3BlY2lmaWNpdHkgJiBDU1NT
ZWxlY3Rvcjo6aWRNYXNrKSA+PiAxNikpOwogICAgICAgICAgICAgdHVwbGUtPmFkZEl0ZW0oc3Rh
dGljX2Nhc3Q8aW50Pigoc3BlY2lmaWNpdHkgJiBDU1NTZWxlY3Rvcjo6Y2xhc3NNYXNrKSA+PiA4
KSk7CiAgICAgICAgICAgICB0dXBsZS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHNwZWNpZmlj
aXR5ICYgQ1NTU2VsZWN0b3I6OmVsZW1lbnRNYXNrKSk7CkBAIC0xMDk4LDExICsxMDk4LDExIEBA
IHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRP
YmplY3RGb3JTZWxlY3RvckhlbHBlcihjCiAgICAgcmV0dXJuIGluc3BlY3RvclNlbGVjdG9yOwog
fQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1
bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3Qg
Q1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMg
UmVmPEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rv
cj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURh
dGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVj
dG9yTGlzdCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRl
eHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCi0gICAgYXV0
byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpU
eXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUo
KTsKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3Qo
KTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogc291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXMpIHsK
ICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHNlbGVjdG9yLCB0aGF0IG1lYW5zIHRoZSBT
b3VyY2VEYXRhIGZvciB0aGlzIENTU1N0eWxlU2hlZXQKQEAgLTExMzIsNyArMTEzMiw3IEBAIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRPYmplY3RGb3JTCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3Vy
Y2VEYXRhOwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgc291cmNl
RGF0YSA9IHJ1bGVTb3VyY2VEYXRhRm9yKCZydWxlLT5zdHlsZSgpKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxl
Y3Rvcj4+IHNlbGVjdG9yczsKKyAgICBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzOwogCiAgICAgLy8gVGhpcyBp
bnRlbnRpb25hbGx5IGRvZXMgbm90IHJlbHkgb24gdGhlIHNvdXJjZSBkYXRhIHRvIGF2b2lkIGNh
dGNoaW5nIHRoZSB0cmFpbGluZyBjb21tZW50cyAoYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiBzdGFy
dGluZyAneycpLgogICAgIFN0cmluZyBzZWxlY3RvclRleHQgPSBydWxlLT5zZWxlY3RvclRleHQo
KTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNl
bGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTCiAgICAgaWYg
KHNvdXJjZURhdGEpCiAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291
cmNlRGF0YS5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIHJ1bGUtPnN0eWxlUnVs
ZSgpLnNlbGVjdG9yTGlzdCgpLCBlbGVtZW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0
b3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOworICAgICAgICBzZWxlY3RvcnMgPSBKU09OOjpUeXBl
ZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsK
ICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHls
ZVJ1bGUoKS5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NT
U2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRk
SXRlbShidWlsZE9iamVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CkBAIC0xMTc4
LDcgKzExNzgsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bAogICAgICAgICAgICAgcmVzdWx0
LT5zZXRSdWxlSWQoaWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTUnVsZUlkPigpKTsKICAgICB9CiAKLSAgICBhdXRvIG1lZGlhQXJyYXkgPSBBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBtZWRp
YUFycmF5ID0gSlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01l
ZGlhPjo6Y3JlYXRlKCk7CiAKICAgICBmaWxsTWVkaWFMaXN0Q2hhaW4ocnVsZSwgbWVkaWFBcnJh
eS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJyYXktPmxlbmd0aCgpKQpAQCAtMTE5Niw4ICsxMTk2
LDggQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3Rv
clN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3QKICAgICBJbnNwZWN0b3JDU1NJZCBpZCA9IHJ1
bGVPclN0eWxlSWQoc3R5bGUpOwogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCi0gICAgICAg
ICAgICAuc2V0Q3NzUHJvcGVydGllcyhBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1Byb3BlcnR5Pjo6Y3JlYXRlKCkpCi0gICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkp
CisgICAgICAgICAgICAuc2V0Q3NzUHJvcGVydGllcyhKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKKyAgICAgICAgICAgIC5z
ZXRTaG9ydGhhbmRFbnRyaWVzKEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKQogICAgICAgICAgICAgLnJlbGVhc2UoKTsK
ICAgICB9CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IGluc3Bl
Y3RvclN0eWxlRm9ySWQoaWQpOwpAQCAtMTQ0Myw5ICsxNDQzLDkgQEAgYm9vbCBJbnNwZWN0b3JT
dHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
QXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitSZWY8SlNPTjo6VHlwZWRB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewotICAg
IGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpU
eXBlZEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwog
ICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDJmMzFmMzBiOTdi
ZTQ4YmNiODVlZjdiOGI2NTc0N2QwMjhjNTBiODguLjc4YjEyNDJiMzIzZGY5YzE4NDg1MjM5OTQ0
NTVlYmM2ZTExNDRhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIENTU1N0eWxl
RGVjbGFyYXRpb24mIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVj
dEZvclN0eWxlKCkgY29uc3Q7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRB
cnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsKKyAgICBSZWY8SlNPTjo6VHlwZWRBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxk
QXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CiAKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+
IHRleHQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUZXh0KGNvbnN0IFN0cmlu
ZyYpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0eWxl
U2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5bGVT
aGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVl
dFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9y
UnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBSZWY8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVs
ZUxpc3QqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4g
YnVpbGRPYmplY3RGb3JTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIEVsZW1lbnQqKTsKICAg
ICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0
Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSosIEVsZW1lbnQqLCBpbnQmIGVuZGluZ0xpbmUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKaW5kZXggZTIwMmQzMmM2NDU3Nzg3NzkwYjY3M2I4MTNmN2Q3OTk4MzIxNTAwYy4u
NjRkYjlkMmMzZGFkOWQ5OTQyYTIyMWY3NjE1Yzk2MGY1OTM1MDMzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjY3
LDcgKzY2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1l
bGluZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlY29yCiAgICAgcmVjb3JkLT5zZXRTdHJp
bmcoInR5cGUiLCBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVt
Q29uc3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUpKSk7CiAKICAgICBpZiAobV9yZWNvcmRTdGFj
ay5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byByZWNvcmRPYmplY3QgPSBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNh
c3QoV1RGTW92ZShyZWNvcmQpKTsKKyAgICAgICAgYXV0byByZWNvcmRPYmplY3QgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5l
OjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZWNvcmQpKTsKICAgICAgICAg
c2VuZEV2ZW50KFdURk1vdmUocmVjb3JkT2JqZWN0KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Y29uc3QgVGltZWxpbmVSZWNvcmRFbnRyeSYgcGFyZW50ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7
CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjphcHBlbmRS
ZWNvcmQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1lbGkKIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c2VuZEV2ZW50KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZXZl
bnQpCiB7CiAgICAgLy8gRklYTUU6IHJ1bnRpbWVDYXN0IGlzIGEgaGFjay4gV2UgZG8gaXQgYmVj
YXVzZSB3ZSBjYW4ndCBidWlsZCBUaW1lbGluZUV2ZW50IGRpcmVjdGx5IG5vdy4KLSAgICBhdXRv
IHJlY29yZENoZWNrZWQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVs
aW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNhc3QoV1RGTW92ZShldmVudCkpOworICAgIGF1
dG8gcmVjb3JkQ2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+OjpydW50aW1lQ2FzdChX
VEZNb3ZlKGV2ZW50KSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV2ZW50UmVjb3JkZWQo
V1RGTW92ZShyZWNvcmRDaGVja2VkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCAwNmNhOGE0MjBkYTg2YWYzYzc5YjIzMjNiOTE0MGI3YjdiNDAzMDc0Li4yYjZhZGUxMjdlZWI3
NWVhMjczZWM2MTExZjJlNjkwZjBkMDVmZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0yMjMsOSArMjIzLDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dD4gV2ViQXV0b21hdGlvblNlc3Npb246OmIKIAogLy8gUGxhdGZvcm0t
aW5kZXBlbmRlbnQgQ29tbWFuZHMuCiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEJy
b3dzaW5nQ29udGV4dHMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHQ+PiYgY29udGV4dHMpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpnZXRCcm93c2luZ0NvbnRleHRzKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBSZWZQdHI8SlNPTjo6VHlwZWRBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHQ+PiYgY29udGV4dHMpCiB7Ci0gICAgY29udGV4dHMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpC
cm93c2luZ0NvbnRleHQ+OjpjcmVhdGUoKTsKKyAgICBjb250ZXh0cyA9IEpTT046OlR5cGVkQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pjo6Y3Jl
YXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NQb29sLT5wcm9jZXNz
ZXMoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwcm9jZXNzLT5wYWdlcygpKSB7CkBA
IC03MTgsOSArNzE4LDkgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IFcKICAgICAgICAgLnJlbGVh
c2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llc0xpc3QpCitzdGF0aWMgUmVmPEpTT046OlR5
cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29va2llPj4gYnVpbGRB
cnJheUZvckNvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXNMaXN0KQogewot
ICAgIGF1dG8gY29va2llcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT46OmNyZWF0ZSgpOworICAgIGF1dG8gY29va2ll
cyA9IEpTT046OlR5cGVkQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29v
a2llPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXNM
aXN0KQogICAgICAgICBjb29raWVzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvb2tp
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggZTVmYjVmMDllNTMxMDgzYWRkNmRhOTliOTMx
ODQ1YjMwOWI3OTEwZC4uNzZlYzliZDM4YjE4MGRmMTY3NjY5YTUwODVkN2U5NjM3MDUzZWY5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIC8v
IGFuZCB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHByb3RvY29sIGJpbmRp
bmdzIGdlbmVyYXRvci4KIAogICAgIC8vIFBsYXRmb3JtOiBHZW5lcmljCi0gICAgdm9pZCBnZXRC
cm93c2luZ0NvbnRleHRzKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3Np
bmdDb250ZXh0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEJyb3dzaW5nQ29udGV4dHMoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpUeXBlZEFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHQ+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYsIFN0cmluZyopIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VCcm93
c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328030</attachid>
            <date>2017-11-30 14:31:53 -0800</date>
            <delta_ts>2017-11-30 16:56:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173662-20171130143150.patch</filename>
            <type>text/plain</type>
            <size>194815</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZTk3N2YyNDZjZjFlZWJkNWNjY2QxMmIzMmFlMzA2Y2E5MTJiM2UwLi4xNzJiZTk1YTVhNWJhMDEx
MGQ1MWMyODZiZWI2OWZlYTBlMDhjZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFQ+
IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4gRml4IHByb3RvY29sIGdlbmVyYXRvciB0
byB1c2UgY29ycmVjdCB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQpOgorICAgICAgICBJbXByb3ZlIG5hbWluZ3MgYW5kIHVzZSAnYXV0bycgd2hlbiB0aGUg
dHlwZSBpcyBvYnZpb3VzIGFuZCByZXBlYXRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENv
bGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOgorICAgICAg
ICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+Pjo6
cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk6OkFycmF5
KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OjpvcGVuQWNj
ZXNzb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojph
ZGRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1Ry
YWl0czxQcm90b2NvbDo6QXJyYXk8VD4+OjpydW50aW1lQ2FzdCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSB0aGUg
aW1wbGVtZW50YXRpb24gb3V0IG9mIHRoaXMgZmlsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21h
aW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURv
bWFpbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2Nrcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFNhbXBsZXMpOgorICAg
ICAgICBVc2UgbW9yZSAnYXV0bycgYW5kIHJlbmFtZSBhIHZhcmlhYmxlLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3Bw
R2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKToKKyAgICAgICAgQWRvcHQgbmV3
IHR5cGUgbmFtZXMuIFRoaXMgZXhwb3NlZCBhIGxhdGVudCBidWcgd2hlcmUgd2Ugc2hvdWxkIGhh
dmUgYmVlbgorICAgICAgICB1bndyYXBwaW5nIGFuIEFsaWFzZWRUeXBlIHByaW9yIHRvIGdlbmVy
YXRpbmcgYSBDKysgdHlwZSBmb3IgaXQuIFRoZSBhbGlhc2VkCisgICAgICAgIHR5cGUgbWF5IGJl
IGFuIGFycmF5LCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSB3cm9u
ZyB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5OgorICAgICAgICAoX2dlbmVyYXRlX3R5cGVkZWZz
X2Zvcl9kb21haW4uSlNPTik6CisgICAgICAgIChfZ2VuZXJhdGVfdHlwZWRlZnNfZm9yX2RvbWFp
bi5JbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5
cGVfZm9yX3R5cGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9y
dF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICBSZWJh
c2VsaW5lLgorCisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVNldDo6YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVTZXQuaDoKKwogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXVtGVExdIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eSBkb2VzIG5vdCBjb25zaWRlciBuZWdhdGl2ZSBpbnQzMl90CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI5MzAxN2I3
N2YzNjcwYjM1ZWQ3MjhmYTBkMWE1OGJkNDgyOTFjZmQuLjVhMWRlMTEyNGQ0ZDBkMWEzY2VjMDM5
ODBlMzc2OWUwMmQ0NDcwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTEtMzAgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxUPiB0byBKU09OOjpBcnJheU9mPFQ+LgorCisgICAgICAgICogd3RmL0pT
T05WYWx1ZXMuaDoKKyAgICAgICAgKFdURjo6SlNPTkltcGw6OkFycmF5T2Y6OkFycmF5T2YpOgor
ICAgICAgICAoV1RGOjpKU09OSW1wbDo6QXJyYXlPZjo6b3BlbkFjY2Vzc29ycyk6CisgICAgICAg
IChXVEY6OkpTT05JbXBsOjpBcnJheU9mOjphZGRJdGVtKToKKyAgICAgICAgKFdURjo6SlNPTklt
cGw6OkFycmF5T2Y6OmNyZWF0ZSk6CisKIDIwMTctMTEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1bGF0ZSBzZWxmLnJlZ2lzdHJhdGlvbi5pbnN0YWxs
aW5nL3dhaXRpbmcvYWN0aXZlIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDg3NGNjZmJiMzViZjI5ZDk5MTMyY2QxNzI3MDQ1YThhNDE4NGE3Li43MjcxMzE4NGE0ZDU0ZDE2
ZTA3MTE2N2VkZDVjNTliZmI0NWZiZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisy
MDE3LTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8VD4gdG8gSlNPTiBuYW1l
c3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
b3B0IG5ldyB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VGcmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
QXJyYXlGb3JWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWls
ZEluaXRpYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZv
ckNhbnZhc0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVp
bGRBcnJheUZvckNhbnZhc1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdlQml0bWFwKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZE9iamVjdEZvckVsZW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmJ1aWxkSGlnaGxpZ2h0T2JqZWN0Rm9yTm9kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMg
Y29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsbE1lZGlhTGlzdENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpi
dWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVj
dG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnJlcXVlc3RDU1NDYW52YXNDbGllbnROb2Rlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZv
clBzZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
cm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRl
bXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNl
VGFibGVOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVz
dERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmxheWVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRl
ckxheWVySGllcmFyY2h5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y29s
bGVjdFNhbXBsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFy
Y2hPdGhlclJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2VhcmNoSW5SZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29raWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oOgorCiAyMDE3LTExLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIC8gU1dTZXJ2ZXJXb3JrZXIgZG8gbm90IG5lZWQgdG8gYmUgVGhyZWFkU2FmZVJlZkNv
dW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODRkZmI2YzY2NjFhMzk3NDA1MWE0M2U4OGM0NzFlNmI3N2MxNzdj
Mi4uMmU2YjhkYTczYTA1ODI5MmViYzU5YTlhNTVlZThjNGQ5MzRkZTVkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFQ+IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dHMpOgorICAgICAgICAoV2Vi
S2l0OjpidWlsZEFycmF5Rm9yQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpnZXRTZXNzaW9uUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisKIDIwMTctMTEtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIHJlbW92ZSB1bm5lZWRlZCBS
ZXRhaW5QdHIgdXNlIGludHJvZHVjZWQgaW4gcjIyNTE0MgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCAwNDQzMGFiYjY2NTBj
ZTllNWY4ZTI1YWZkMWRmMmIyNWI0OTNlNGE1Li5jMDI4YWNhOTIwMTUzNDc2M2Y5OTNiZmI1OGQw
OTJiMTJkNzI4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTcyLDI2ICsxNzIsMjYgQEAgc3RhdGljIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxW
YWx1ZShNZXMKIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7
Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBq
c29uT2JqID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNy
ZWF0ZSgpCisgICAgYXV0byBtZXNzYWdlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2Fn
ZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZh
bHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2UpCiAgICAgICAgIC5yZWxl
YXNlKCk7CiAKICAgICAvLyBGSVhNRTogb25seSBzZW5kIG91dCB0eXBlIGZvciBDb25zb2xlQVBJ
IHNvdXJjZSBtZXNzYWdlcy4KLSAgICBqc29uT2JqLT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFsdWUo
bV90eXBlKSk7Ci0gICAganNvbk9iai0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkp
OwotICAgIGpzb25PYmotPnNldENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7Ci0g
ICAganNvbk9iai0+c2V0VXJsKG1fdXJsKTsKLSAgICBqc29uT2JqLT5zZXRSZXBlYXRDb3VudChz
dGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRU
eXBlKG1lc3NhZ2VUeXBlVmFsdWUobV90eXBlKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0TGlu
ZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOworICAgIG1lc3NhZ2VPYmplY3QtPnNldENvbHVt
bihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0VXJs
KG1fdXJsKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxp
bnQ+KG1fcmVwZWF0Q291bnQpKTsKIAogICAgIGlmIChtX3NvdXJjZSA9PSBNZXNzYWdlU291cmNl
OjpOZXR3b3JrICYmICFtX3JlcXVlc3RJZC5pc0VtcHR5KCkpCi0gICAgICAgIGpzb25PYmotPnNl
dE5ldHdvcmtSZXF1ZXN0SWQobV9yZXF1ZXN0SWQpOworICAgICAgICBtZXNzYWdlT2JqZWN0LT5z
ZXROZXR3b3JrUmVxdWVzdElkKG1fcmVxdWVzdElkKTsKIAogICAgIGlmIChtX2FyZ3VtZW50cyAm
JiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
KG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJn
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudHNP
YmplY3QgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBNZXNzYWdlVHlw
ZTo6VGFibGUgJiYgZ2VuZXJhdGVQcmV2aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50
KCkpIHsKICAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1f
YXJndW1lbnRzLT5hcmd1bWVudEF0KDApOwogICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1f
YXJndW1lbnRzLT5hcmd1bWVudEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKQEAg
LTIwMCw5ICsyMDAsOSBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNw
ZWN0b3JWYWx1ZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+
YWRkSXRlbShpbnNwZWN0b3JWYWx1ZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGlmICht
X2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAganNv
bkFyZ3MtPmFkZEl0ZW0oaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxp
dGVyYWwoImNvbnNvbGUiKSwgdHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNP
YmplY3QtPmFkZEl0ZW0oaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxp
dGVyYWwoImNvbnNvbGUiKSwgdHJ1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3Jp
cHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgQVNDSUlMaXRlcmFsKCJj
b25zb2xlIiksIGdlbmVyYXRlUHJldmlldyk7CkBAIC0yMTAsMTcgKzIxMCwxNyBAQCB2b2lkIENv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNv
bnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFs
dWUuY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJ
dGVtKGluc3BlY3RvclZhbHVlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAganNvbk9iai0+c2V0UGFyYW1ldGVycyhXVEZNb3ZlKGpzb25B
cmdzKSk7CisgICAgICAgICAgICBtZXNzYWdlT2JqZWN0LT5zZXRQYXJhbWV0ZXJzKFdURk1vdmUo
YXJndW1lbnRzT2JqZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9jYWxsU3Rh
Y2spCi0gICAgICAgIGpzb25PYmotPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5z
cGVjdG9yQXJyYXkoKSk7CisgICAgICAgIG1lc3NhZ2VPYmplY3QtPnNldFN0YWNrVHJhY2UobV9j
YWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAKLSAgICBjb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyLm1lc3NhZ2VBZGRlZChXVEZNb3ZlKGpzb25PYmopKTsKKyAgICBjb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyLm1lc3NhZ2VBZGRlZChXVEZNb3ZlKG1lc3NhZ2VPYmplY3QpKTsKIH0K
IAogdm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29s
ZUZyb250ZW5kRGlzcGF0Y2hlciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwCmluZGV4IDQ5OTA4MGNjYzJiMzk1ZjlhYzAyNjA2MTc1MmE4NDEzZjA5YjlkZjcu
LmIxYjA1ODVhMjUzNDQwZjA0ZGEwMGRlMzAyOWQyZDJkZjA2NjE4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmNwcApAQCAtMTUxLDkgKzE1MSw5IEBAIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0
Y2hlcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5
TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKK1JlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRl
eHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0gICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAg
YXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNU
eXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJl
Z2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNh
c2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJp
bmc+PiBtYXRjaGVzID0gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwg
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRl
bnRTZWFyY2hVdGlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5oCmluZGV4IDdjMDFiOTBkYTE5MzdhZTViZTlhMjM2NDQ4MzE1
ZmJlZjAzMGFmZDkuLjU1YjE5MWVhMjM4OWNjMWY5ZmZhNzhjZmFjZDIyYzFiYzFjZTA1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNo
VXRpbGl0aWVzIHsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5z
aXRpdmUsIGJvb2wgaXNSZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1bGFy
RXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIGNv
bnN0IFN0cmluZyYpOwotSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBz
ZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wgaXNSZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0
aW9uRnJvbU9mZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVu
ZGluZ3MpOwogSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+
PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBmZDhlNGFkYzc5MGNkZGE1
ODkwZmVmZjFiODdmMjZlYmU3YTExMTQ0Li5kNzgwZjI1M2MyN2NhMTI0NmJkODVkZWJkNDk4NGRj
YzkzYjVmN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5OwotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZAogICAgICpyZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZh
bHVlKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRp
ZXMsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJh
bCgiZ2V0UHJvcGVydGllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE1
NSwxMCArMTUzLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAqcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgKnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46
OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRp
ZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJ
TGl0ZXJhbCgiZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwpAQCAtMTcxLDEwICsxNjksMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0
czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IEJpbmRp
bmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3Bl
cnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVz
IiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTg3LDExICsxODUsMTEgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gYXJyYXkgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVz
dWx0KSk7CisgICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Ojpy
dW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogICAgICpwcm9wZXJ0aWVzID0gYXJyYXktPmxl
bmd0aCgpID4gMCA/IGFycmF5IDogbnVsbHB0cjsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwg
aW50IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlJ1bnRp
bWU6OkNvbGxlY3Rpb25FbnRyeT4+KiBlbnRyaWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50
IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpD
b2xsZWN0aW9uRW50cnk+PiogZW50cmllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJn
ZXRDb2xsZWN0aW9uRW50cmllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAg
LTIwNiw3ICsyMDQsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb2xsZWN0aW9uRW50cmll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgKmVudHJpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PFByb3RvY29sOjpS
dW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsK
KyAgICAqZW50cmllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KQpAQCAtMjI2LDcgKzIyNCw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGNhbGxBcmd1CiAgICAgICAgICpzYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRS
ZXN1bHRJbmRleEludDsKIH0KIAotUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoSlNDOjpKU1Zh
bHVlIGNhbGxGcmFtZXMpIGNvbnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVz
KEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjM1LDEzICsyMzMs
MTMgQEAgUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmEKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZh
bHNlOwogICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQot
ICAgICAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxG
cmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFo
YWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0
b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0
LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmlu
ZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVs
ZWFzZU5vbk51bGwoKTsKIAotICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQog
CiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0MDk4ZDc2NGE3MWY4
NDQwY2E5ZmM1ZGVhNThiYWVmMDBiNmEwYjJkLi45MWYyNTUxNTYzNzRlMmM2YTYzN2QyOWYyMWI0
MmU1NGZiODQzOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAg
IHZvaWQgZnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8
UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQg
Z2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Q
cm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9p
ZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90
b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBn
ZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lk
IGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJU
b0ZldGNoLCBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0
aW9uRW50cnk+PiogZW50cmllcyk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4qIGVudHJpZXMpOwogICAgIHZv
aWQgc2F2ZVJlc3VsdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3VtZW50SlNP
TiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgp
OwogCi0gICAgUmVmPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IHdyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSkgY29uc3Q7CisgICAgUmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhKU0M6
OkpTVmFsdWUpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6
OkpTVmFsdWUgY29sdW1ucykgY29uc3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiBwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5
cGVzLmgKaW5kZXggZDhmZjhmZGZkMzQ1ZjAyMDE5NDhiNDE5MjBhMTJjZGYwNjIzYjIyZC4uMDc2
NTczZWE1YmQ3MzNiNDIyZDllNjhhZjkzZmY3ZDAyYWQ5MmUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgK
QEAgLTYxLDQ5ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0
T3V0cHV0KTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1Ymxp
YyBKU09OOjpBcnJheUJhc2UgewotcHJpdmF0ZToKLSAgICBBcnJheSgpIHsgfQotCi0gICAgSlNP
Tjo6QXJyYXkmIG9wZW5BY2Nlc3NvcnMoKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEpTT046OkFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0g
ICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXkqPihzdGF0aWNfY2FzdDxKU09O
OjpBcnJheUJhc2UqPih0aGlzKSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVt
KFJlZjxUPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hWYWx1
ZSgmdmFsdWUuZ2V0KCkpOwotICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2
YWx1ZSkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoU3RyaW5nKHZhbHVlKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFj
Y2Vzc29ycygpLnB1c2hJbnRlZ2VyKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0o
ZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hEb3VibGUo
dmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8QXJyYXk8VD4+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19Owot
CiAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJl
IHByb3ZpZGVkIGJ5CiAvLyBzcGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29t
ZSBhcmUgZ2VuZXJhdGVkIGZvciBwcm90b2NvbCB0eXBlcy4KIApAQCAtMTMwLDggKzg3LDggQEAg
c3RydWN0IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHMgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewotICAgIHN0YXRp
YyBSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1
ZSkKK3N0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8VD4+IHsKKyAgICBzdGF0aWMg
UmVmUHRyPEpTT046OkFycmF5T2Y8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICAg
ICAgUmVmUHRyPEpTT046OkFycmF5PiBhcnJheTsKQEAgLTE0MCw4ICs5Nyw4IEBAIHN0cnVjdCBC
aW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXkuZ2V0KCkpOwogI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5
PFQ+KSA9PSBzaXplb2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEpTT046OkFycmF5QmFz
ZSo+KGFycmF5LmdldCgpKSk7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU09OOjpB
cnJheU9mPFQ+KSA9PSBzaXplb2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU09OOjpBcnJheU9mPFQ+Kj4oc3RhdGljX2Nhc3Q8
SlNPTjo6QXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5jcHAKaW5kZXggNjBkZmY3NzU5YjFlZjVjZDc0NjQyNzQyMzBiZDhjNmM2MjhmM2M5
Mi4uOTVjZTMzMTNlMzQ0MDY0OTg0YjNhZmMxZmYxNWU4NWE3ZThiNjViMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAt
MTA1LDkgKzEwNSw5IEBAIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxT
dGFjayogbykgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNj
cmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxs
U3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gZnJhbWVzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1l
cy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICBy
ZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmgKaW5kZXggNDlmY2M0ZjBjMzMwZDAyMGVhMjY4ZmNmODY1MmMwMTBmNmI2
YzU5Yi4uOTkyODBiMDY0YWNhNzc1MTU3NzA5M2JiMzU0ZTNlODY0NTQyNzAyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sq
KSBjb25zdDsKIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29u
c3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IFNjcmlwdENhbGxTdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDVlOTAyNmE3Mjk5MTE3
YzQ0MGRlZGNjZDcyNDRhYmNlNDQ4YWMyYzguLjAzOTU5Njg3YzZlOThlODNjZjJjNDRlNGIwMGQ4
OWZjMzkyMzk0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZv
aWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lKQogewogICAgIGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5n
RXh0cmFEb21haW5zRGF0YSkKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgICAgICBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhLT5hZGRJdGVtKGRvbWFp
bk5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkb21haW5OYW1lcyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8g
ZG9tYWluTmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGRvbWFp
bk5hbWVzLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5h
Y3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGV4dHJhRG9tYWlucykKICAgICBpZiAoZXh0cmFEb21haW5zLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFt
ZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBkb21h
aW5OYW1lIDogZXh0cmFEb21haW5zKQogICAgICAgICBkb21haW5OYW1lcy0+YWRkSXRlbShkb21h
aW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggMjFjNDQ1NmQ2ZjAxYzU3ZjZmOGNmYTUyMDA2
NzJiZTYzNTUwY2RkMy4uOTJjODFjNWNjMTE1Y2U1Y2I5YzMxZTY4NjcxM2M4ZDQyYjJhOGRkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEpTT046Ok9iamVjdD4+
IG1fcGVuZGluZ0luc3BlY3REYXRhOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0
cmluZz4+IG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKICAgICBib29sIG1fZW5h
YmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXgg
ZmI4YzVjODAyZDI3NTBkZTU1ZTVmMjNjZTRhN2NhZGMwMjdhZmUzNC4uOTY0OTc0NzZlZjQzOTli
YmU4ZDg1NjdkZjlmZWViNzYzMzVkMGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRk
Q29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPiBjbwogICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJv
clN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYgY2hhbm5lbHMp
CiB7CiAgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gbG9nZ2luZyBjaGFubmVs
cy4KLSAgICBjaGFubmVscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0
ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TG9nZ2luZ0NoYW5uZWxM
ZXZlbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDJlNTQxODgxZTcxNTdlMmQ1ZjEz
NWFkNDJiMThkMWJkNjVjNzVhMzYuLjlmOGMxOWI4NTUwYjU2YmM2MmMyMmViZDBmN2Q5YmZiNzA2
MmNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAg
ICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpOwog
Ci0gICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsPj4mKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDIzNDM0NWJiZGQwZTdjZWNkMTkxNjc2MmIwMzE5YjZmYjEzNTc5OTguLmQ2OWRkYTIzMjc4Yzdj
OThkZGNlMmVkMzhhYTU2YWFmMmUzZGIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC00MzUsOSArNDM1LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0
aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29u
c3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlm
ICghb3B0aW9uYWxVUkwgPT0gIW9wdGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZp
ZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJp
bmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCog
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0
SURTdHIudG9JbnRQdHIoKTsKICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQp
OwpAQCAtODY2LDExICs4NjYsMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICAgICAg
YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xh
dGlvbiwgYnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAK
LVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFt
ZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmpl
Y3RlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTUxNjIwZWJiNmRkMWJlY2Q2MzU3
NDY4NDU4ZjJkZWVmZjJkMDljYy4uYmYwZTljNjgyNjQ3NWQzOTA5ZTUyODFkNzg3MzJjZDYxMjU1
NGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjQsMTIgKzY0LDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUp
IGZpbmFsOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZp
bmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJl
ciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CiAgICAgdm9pZCBz
ZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
T2JqZWN0JiBsb2NhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZv
aWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZp
bmFsOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5h
bDsKICAgICB2b2lkIHBhdXNlKEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC0xMzgsNyArMTM4LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURh
dGEoKSB7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJh
bWVzKGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNv
bnN0IEluamVjdGVkU2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291
cmNlSUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBp
bnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBkMjI2MGU1OWY3Nzg2MjgwZGFmMWRmZjQ3YjA1
ZWM2ZWQzNGMxMTE4Li5mNWQyNTA1ZDQ5NTc0N2I1YTRhNTk2YjJkMTNlOTkwZmQ3MWY5NDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgbwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9w
ZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5l
cmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4mIGludGVybmFsUHJvcGVydGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQo
b2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgIHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxl
UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBp
bnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7
CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGMKICAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IGNvbnN0IGludCogc3RhcnRJbmRleCwgY29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0
SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCiB7
CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0yNTcsMTEgKzI1NywxMSBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBvYmplYwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RH
cm91cChvYmplY3RHcm91cCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4m
IHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlwZURl
c2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlw
dGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJl
bnRseSBoYXZlIFR5cGUgSW5mb3JtYXRpb24uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTM3Miw3
ICszNzIsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9m
aWxlckVuYWJsZWRTdGF0ZShib29sIGlzQ29udHJvbEZsbwogICAgIH0pOwogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5n
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2Zp
bGVyKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2Vz
IG5vdCBjdXJyZW50bHkgaGF2ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iKTsKQEAgLTM4Myw3
ICszODMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0cl90IHNvdXJjZUlE
ID0gc291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSk7CiAgICAgQVNTRVJUKG9r
YXkpOwogICAgIGNvbnN0IFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2Vz
ID0gbV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQo
c291cmNlSUQsIG1fdm0pOwotICAgIGJhc2ljQmxvY2tzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgp
OworICAgIGJhc2ljQmxvY2tzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2Nr
UmFuZ2UmIGJsb2NrIDogYmFzaWNCbG9ja1JhbmdlcykgewogICAgICAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFN0
YXJ0T2Zmc2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CmluZGV4IGI2ZmU3MWZiOWM2MzNkZjRhMTBjNzhkODYwNDViMWU3OGY1YTFmODUuLjRiZDhlYTRk
ZTZkM2I0YWVhODBjNzY1MmUwMDBkZGI1NWMzM2QzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oCkBAIC02MiwxNyArNjIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEZ1bmN0aW9u
T24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9v
bCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBmaW5h
bDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmlu
ZyYgb2JqZWN0SWQpIGZpbmFsOwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpPYmplY3RQcmV2aWV3PiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3Bl
cnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5
RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCog
Y29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3Vs
dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGll
cykgZmluYWw7Ci0gICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNv
bnN0IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNo
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJv
b2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJu
YWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25F
bnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgaW50KiBjb25zdCBzdGFydEluZGV4LCBjb25zdCBp
bnQqIGNvbnN0IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBmaW5hbDsKICAg
ICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIGNhbGxB
cmd1bWVudCwgY29uc3QgaW50KiBjb25zdCBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2
b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApIGZpbmFsOwotICAgIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZz
ZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5
cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JW
YXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRp
b25zLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpU
eXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVy
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVy
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQcm9m
aWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+
JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Js
b2Nrcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApp
bmRleCBlNDQ0MTBhZDI5NDgyMTNiYjZhZGZiODU0Y2NkNzA3NjRjNTA5OTg2Li41ZTg5NWFlODUy
MDE1YjlkNGNkMDU1MWNmMWI4OWJiOGVmNjMzZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMTY2LDExICsxNjYsMTEgQEAgdm9pZCBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUg
ZW5kVGltZSwgUHIKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBzdGF0aWMgUmVmPFBy
b3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U2FtcGxlcz4gYnVpbGRTYW1wbGVzKFZNJiB2bSwgVmVj
dG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJhY2U+JiYgc2FtcGxpbmdQcm9maWxlclN0YWNr
VHJhY2VzKQogewotICAgIFJlZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2Zp
bGVyOjpTdGFja1RyYWNlPj4gc3RhY2tUcmFjZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdGFja1Ry
YWNlcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNl
Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja1RyYWNlJiBzdGFj
a1RyYWNlIDogc2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKSB7Ci0gICAgICAgIFJlZjxQcm90
b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPj4gZnJhbWVz
ID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZT46
OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZyYW1lcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoU2Ft
cGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZSYgc3RhY2tGcmFtZSA6IHN0YWNrVHJhY2UuZnJhbWVz
KSB7Ci0gICAgICAgICAgICBSZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1l
PiBmcmFtZSA9IFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZTo6Y3JlYXRlKCkK
KyAgICAgICAgICAgIGF1dG8gZnJhbWVPYmplY3QgPSBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6
OlN0YWNrRnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldFNvdXJjZUlEKFN0cmlu
Zzo6bnVtYmVyKHN0YWNrRnJhbWUuc291cmNlSUQoKSkpCiAgICAgICAgICAgICAgICAgLnNldE5h
bWUoc3RhY2tGcmFtZS5kaXNwbGF5TmFtZSh2bSkpCiAgICAgICAgICAgICAgICAgLnNldExpbmUo
c3RhY2tGcmFtZS5mdW5jdGlvblN0YXJ0TGluZSgpKQpAQCAtMTgzLDEwICsxODMsMTAgQEAgc3Rh
dGljIFJlZjxQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlNhbXBsZXM+IGJ1aWxkU2FtcGxlcyhW
TSYgdm0sIFZlY3RvcjxTYW1wbGkKICAgICAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tG
cmFtZS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb2x1bW4oc3RhY2tG
cmFtZS5jb2x1bW5OdW1iZXIoKSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+c2V0RXhwcmVzc2lvbkxvY2F0aW9uKFdURk1vdmUoZXhwcmVz
c2lvbkxvY2F0aW9uKSk7CisgICAgICAgICAgICAgICAgZnJhbWVPYmplY3QtPnNldEV4cHJlc3Np
b25Mb2NhdGlvbihXVEZNb3ZlKGV4cHJlc3Npb25Mb2NhdGlvbikpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmcmFtZXMtPmFkZEl0ZW0oV1RGTW92ZShmcmFtZSkpOworICAgICAgICAg
ICAgZnJhbWVzLT5hZGRJdGVtKFdURk1vdmUoZnJhbWVPYmplY3QpKTsKICAgICAgICAgfQogICAg
ICAgICBSZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPiBpbnNwZWN0b3JT
dGFja1RyYWNlID0gUHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlOjpjcmVhdGUo
KQogICAgICAgICAgICAgLnNldFRpbWVzdGFtcChzdGFja1RyYWNlLnRpbWVzdGFtcCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2Nw
cF9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CmluZGV4IDA0ZGRmY2I4ZGE4OTA1Y2Q2NjE1N2MxM2Uw
YzQxNzU5ZjE1ZTE5MzAuLmE5MGMwZGJmZTY2ZDBjNGU0M2JkNDA2ZmMxZDg4Yjg1ODhlY2IyODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2NwcF9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQpAQCAtOTcsMTIgKzk3LDE1IEBAIGNs
YXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICMgR2VuZXJhdGUgdHlwZSByZXByZXNl
bnRhdGlvbnMgZm9yIHZhcmlvdXMgc2l0dWF0aW9ucy4KICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ZGVmIGNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgorICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlh
c2VkX3R5cGUgICMgRmFsbCB0aHJvdWdoIHRvIGVudW0gb3IgcHJpbWl0aXZlLgorCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpIGFuZCBsZW4oX3R5cGUubWVtYmVycykg
PT0gMDoKICAgICAgICAgICAgIHJldHVybiAnSlNPTjo6T2JqZWN0JwogICAgICAgICBpZiBpc2lu
c3RhbmNlKF90eXBlLCBBcnJheVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUo
KSBpcyBOb25lOiAgIyBPdGhlcndpc2UsIGZhbGwgdGhyb3VnaCBhbmQgdXNlIHR5cGVkZWYnZCBu
YW1lLgotICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
JXM+JyAlIENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVt
ZW50X3R5cGUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlh
c2VkVHlwZSwgRW51bVR5cGUsIEFycmF5VHlwZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiAn
SlNPTjo6QXJyYXlPZjwlcz4nICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90
eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9i
amVjdFR5cGUsIEVudW1UeXBlLCBBcnJheVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnSW5z
cGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9u
YW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmlt
aXRpdmVUeXBlKToKICAgICAgICAgICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9y
X3ByaW1pdGl2ZV90eXBlKF90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hl
YWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggMTJlMDk1MzkzNGZj
MDc2ODBlZmIyZWE4MmI3NWZmNTBiNThmNmU4Mi4uNWQ0MTFkNDlmOWQxZTk4ODc2YTZhOWZlMzVi
OWVlOGE3MWQ3NWQxYyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xh
c3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAg
ICAgICAgdHlwZWRlZl9saW5lcyA9IFtdCiAgICAgICAgICAgICBpZiBsZW4oZGVjbGFyYXRpb24u
ZGVzY3JpcHRpb24pID4gMDoKICAgICAgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgn
LyogJXMgKi8nICUgZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgICAgICB0eXBlZGVm
X2xpbmVzLmFwcGVuZCgndHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwlcz4gJXM7
JyAlIChlbGVtZW50X3R5cGUsIGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAgICAgICB0
eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlwZWRlZiBKU09OOjpBcnJheU9mPCVzPiAlczsnICUgKGVs
ZW1lbnRfdHlwZSwgZGVjbGFyYXRpb24udHlwZV9uYW1lKSkKICAgICAgICAgICAgIHNlY3Rpb25z
LmFwcGVuZCgnXG4nLmpvaW4odHlwZWRlZl9saW5lcykpCiAKICAgICAgICAgbGluZXMgPSBbXQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQppbmRleCA2OTkwMmZiMzU5YzkxMjQ4NjQ4
NGVmYTNkYjkzZDQwNzk5NDg4NzdkLi5lNTJmMzE1NDRjMTFmYjc2YzRiYWFjNjdlN2JhOTI3MjI0
MGNmY2Q3IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjYyLDcgKzI2
Miw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJldHVy
biAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRv
bWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlw
ZSwgQXJyYXlUeXBlKSk6CiAgICAgICAgICAgICBzdWJfdHlwZSA9IE9iakNHZW5lcmF0b3IucHJv
dG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PCVzPicgJSBzdWJfdHlwZQorICAgICAgICAg
ICAgcmV0dXJuICdKU09OOjpBcnJheU9mPCVzPicgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4g
Tm9uZQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRl
Z29yeS5BcnJheToKICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnBy
b3RvY29sX3R5cGVfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAg
b2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5
cGUpCi0gICAgICAgICAgICBpZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+JzoKKyAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgPT0gJ0pTT046
OkFycmF5T2Y8U3RyaW5nPic6CiAgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJpbmdB
cnJheUFycmF5KCVzKScgJSB2YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBp
cyAnU3RyaW5nJyBhbmQgb2JqY19jbGFzcyBpcyAnTlNTdHJpbmcnOgogICAgICAgICAgICAgICAg
IHJldHVybiAndG9KU09OU3RyaW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDc2ZTg2ZGQyYjQ3
MmQxZmMxOWQzYmYyNjY5MTFjZDcwYjBkMjhlMmIuLmMyMGRkMDgxMTZhNmE0OWFjNmNkYjI0MDlk
ZDQwMjk5Mjg0OWIzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CkBAIC0xNTcsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIFll
bGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50
Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29s
dW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0
X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90
aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBv
cHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVl
Piogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
b3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50
Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVy
blZhbHVlcyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGlu
X3F1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1l
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFt
cCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRf
dmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRf
b3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0
X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikg
PSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJl
ZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2Vz
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1l
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2Vz
cyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxKU09OOjpPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxKU09OOjpWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxp
bnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiog
c2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JM
aXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4qIHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVTUUxTeW5jKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
aW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0
X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBK
U09OOjpPYmplY3QqIG91dF92YWx1ZXMsIEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBv
dXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJv
cj4mIG91dF9zcWxFcnJvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpD
b2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91
dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwg
SlNPTjo6T2JqZWN0KiBvdXRfdmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCog
b3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xh
c3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFj
ayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1
Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIEpTT046Ok9iamVj
dCB2YWx1ZXMsIEpTT046OlZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJp
bmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7Cisg
ICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBj
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6
T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9y
KTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcm
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVT
UUxBc3luY0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6CkBAIC0yOTQsMTIg
KzI5NCwxMiBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0SQogCiAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgUmVmPEpTT046Ok9iamVjdD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2Nv
bHVtbk5hbWVzOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9jb2x1bW5O
YW1lczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90
ZXM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVz
dGFtcDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiBv
dXRfdmFsdWVzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1
ZT4gb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJy
b3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0
X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlcyhsb25nIHJlcXVlc3RJCiAKIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBi
YWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxT
dHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRp
bWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZh
bHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3Zv
aWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxT
dHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRp
bWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZh
bHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsK
ICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgaWYgKGNvbHVtbk5hbWVzKQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVm
UHRyPEpTT046Ok9iamUKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpP
YmplY3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgU3RyaW5nIG91
dF9ub3RlczsKICAgICBkb3VibGUgb3V0X3RpbWVzdGFtcDsKICAgICBKU09OOjpPYmplY3Qgb3V0
X3ZhbHVlczsKICAgICBKU09OOjpWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKKyAgICBpbnQgb3V0
X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gb3V0X3NxbEVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKQEAgLTQ0MCw3
ICs0NDAsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
KGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZQogCiBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0Nh
bGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlk
KSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0
Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBKU09OOjpPYmplY3QgdmFsdWVzLCBKU09OOjpWYWx1ZSBwYXls
b2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rlcywg
ZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9h
ZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25N
ZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1lcyk7CkBAIC02MjksNyAr
NjI5LDcgQEAgZW51bSBjbGFzcyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsK
IC8qIFVuaXF1ZSBpZGVudGlmaWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50
IERhdGFiYXNlSWQ7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVm
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM+IENvbG9yTGlzdDsKIH0gLy8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDBjZTBjMThkMjYxYTliODM0NDhlZTFkZDgz
NzhiYmMzNmUzYzgyNTguLjI0MmQ2YWMxYjgzYzU2MGQ4ZmIzOWZhNzcyNmRmMmNlYWE5M2RiNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTE1Miw4ICsxNTIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBl
bnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0X2luX25vdGVzLCBjb25zdCBkb3VibGUqIGNv
bnN0IG9wdF9pbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3ZhbHVlcywg
Y29uc3QgSlNPTjo6VmFsdWUqIGNvbnN0IG9wdF9pbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0
IG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl9zcWxFcnJvciwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5
KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9wcmlu
dENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9v
dXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBv
cHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0
X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmpl
Y3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046
OlZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xv
cnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0
X3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpP
YmplY3QmIGluX3ZhbHVlcywgSlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IEpTT046Ok9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2Ny
ZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyYgaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90
aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXls
b2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3Ry
aW5nJiwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRfaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFt
cCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSog
Y29uc3Qgb3B0X2luX3BheWxvYWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQs
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG9wdF9pbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3Is
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046
OkFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGlu
X3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZhbHVlIGlu
X3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3NxbEVy
cm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBk
b3VibGUqIG91dF90aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFs
dWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xv
cnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJp
bnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMjg5LDEyICsyODksMTIgQEAgdm9pZCBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVx
dWVzdElkLCBSZWYKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X25vdGVzOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IG91dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RGF0YWJhc2VJZD4gb3V0X2RhdGFiYXNlSWQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4gb3V0X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0
ZUNvbG9yczsKQEAgLTM1NSwxMiArMzU1LDEyIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWZQCiAK
ICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwogICAgIFN0cmluZyBvdXRfbm90ZXM7CiAgICAgZG91
YmxlIG91dF90aW1lc3RhbXA7CiAgICAgSlNPTjo6T2JqZWN0IG91dF92YWx1ZXM7CiAgICAgSlNP
Tjo6VmFsdWUgb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkRhdGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7CisgICAgaW50IG91dF9kYXRhYmFzZUlkOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJv
cjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRf
c2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpD
b2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CkBAIC01MzAsNyArNTMwLDcgQEAgZW51bSBj
bGFzcyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVu
dGlmaWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10
eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsK
IH0gLy8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50
cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZjYyMDU4MTFhYTA4
NGEyYjBkNDNmM2EzNTM1NDU3ODY0NDBmODU0YS4uZDUyM2I3MjI0YzM0NWFkM2VhMWY5ODFkMWEx
MDQyMzU5ZmRlYmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3MgRnJvbnRlbmRSb3V0
ZXI7CiBjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgRGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKSA6
IG1fZnJvbnRlbmRSb3V0ZXIoZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJs
ZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBj
b25zdCBwcmludENvbG9yKTsKLSAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFy
YW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBw
cmludENvbG9yKTsKKyAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rl
cywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYg
bV9mcm9udGVuZFJvdXRlcjsKIH07CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRp
ZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25z
dCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyogY29uc3QgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6
OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5n
Pj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSog
Y29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMs
IGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0
PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2Ut
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNl
LmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMiKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9p
ZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjoKICAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIERhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENv
bG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNP
Tjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNv
bk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwo
IkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTM4Nyw3ICsz
ODcsNyBAQCBuYW1lc3BhY2UgRGF0YWJhc2UgewogLyogVW5pcXVlIGlkZW50aWZpZXIgb2YgRGF0
YWJhc2Ugb2JqZWN0LiAqLwogdHlwZWRlZiBTdHJpbmcgRGF0YWJhc2VJZDsKIHR5cGVkZWYgU3Ry
aW5nIFByaW1hcnlDb2xvcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0
eXBlZGVmIEpTT046OkFycmF5T2Y8U3RyaW5nPiBDb2xvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAv
LyBFbmQgb2YgdHlwZWRlZnMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUt
c2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBiMjEwNmVmZTNkNjNhYTFiOWY5MDU4NTQ3ZTU3OGRm
YWQ4OWJkZmU0Li40YjMxYTVkYmYyN2IyYmUyNWY5ODdmYThhNDg3MDY2NzMyMTY0MmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBA
IC00MDAsNyArNDAwLDcgQEAgcHVibGljOgogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQg
c2V0QXJyYXkoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVl
KQorICAgIHZvaWQgc2V0QXJyYXkoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUp
CiAgICAgewogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwo
ImFycmF5IiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggMjY2MWI4NmVhYTRmN2UxYTYyMzEyNDhk
YmQzOTk1MWI2Mjg2NTRkMC4uN2ZlNTg2YzBhNWJlNWJmNzI3OTBiN2QyZTg3YjE2MjA5Y2U0NzAz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApA
QCAtMzMxLDExICszMzEsMTEgQEAgdHlwZWRlZiBpbnQgQnJlYWtwb2ludElkOwogCiBuYW1lc3Bh
Y2UgUnVudGltZSB7CiB0eXBlZGVmIGludCBPYmplY3RJZDsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50PiBMdWNreU51bWJlcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4gQmFieU5hbWVzOwotdHlwZWRlZiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RJZD4gTmV3T2Jq
ZWN0czsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZD4gT2xkT2JqZWN0czsKLXR5cGVkZWYgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNv
bj4gU3RvcFJlYXNvbnM7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBMdWNreU51bWJlcnM7
Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8U3RyaW5nPiBCYWJ5TmFtZXM7Cit0eXBlZGVmIEpTT046
OkFycmF5T2Y8aW50PiBOZXdPYmplY3RzOwordHlwZWRlZiBKU09OOjpBcnJheU9mPGludD4gT2xk
T2JqZWN0czsKK3R5cGVkZWYgSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6UmVhc29uPiBTdG9wUmVhc29uczsKIH0gLy8gUnVudGltZQogLy8gRW5kIG9mIHR5cGVk
ZWZzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dAppbmRleCA2NDk1NzAyNzhhYWUyY2I3MTNlZDY5NWM2NmY1YmE4OGFlN2RlZWY0Li40YTgyYjY0
Mjc1NTc4NTNmYzVlYmY3YTYwMThjMTZlMzI3ZGRhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTMzNyw3ICszMzcsNyBAQCBjbGFz
cyBQYXJhbWV0ZXJCdW5kbGU7CiAKIC8vIFR5cGVkZWZzLgogbmFtZXNwYWNlIERhdGFiYXNlIHsK
LXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7CiB9IC8vIERhdGFiYXNl
CiAvLyBFbmQgb2YgdHlwZWRlZnMuCiAKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEpTT046Ok9iamVjdDo6Y3JlYXRlKCkp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVm
UHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBKU09OOjpP
YmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIFdURk1vdmUo
dmFsdWUpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEJ1dHRvbnMoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRv
bj4+IHZhbHVlKQorICAgIHZvaWQgc2V0QnV0dG9ucyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEpTT046Ok9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIp
LCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQpAQCAtNTYwLDE0ICs1NjAsMTQgQEAgcHVibGljOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUGFyYW1ldGVyQnVuZGxlOwogICAgIHB1YmxpYzoKIAotICAg
ICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1
aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVCghKFNUQVRFICYgQ29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19h
bHJlYWR5X3NldCk7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OYW1lcyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENv
bHVtbk5hbWVzU2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1
dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAg
ICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9u
c1NldCksIHByb3BlcnR5X2J1dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1
bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CkBAIC03OTMsMTQg
Kzc5MywxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPERpcmVjdGlv
bmFsaXR5U2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRv
bnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAg
QnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1Nl
dCksIHByb3BlcnR5X2J1dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gY2FzdFN0YXRlPEJ1dHRvbnNTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWls
ZGVyPFNUQVRFIHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RB
VEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCgh
KFNUQVRFICYgQ29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3Nl
dCk7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5O
YW1lcyIpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDdiMzJlYWY1MGFhZTJkNDhhYmFmNmJhZjU3NTAwNTZkYjc3ODhmMTUuLjdhNDEyZTYw
OTU1OWJkMTlkMjE5YjkxYzAzMTQ1MTNmNzE2ZGI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0yMTcsOSArMjE3LDkgQEAgU3RyaW5nIFR5cGVTZXQ6
OmxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBTdHJ1Y3R1cmVTaGFwZTo6
bGVhc3RDb21tb25BbmNlc3RvcihtX3N0cnVjdHVyZUhpc3RvcnkpOwogfQogCi1SZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBj
b25zdAorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3Ry
dWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMo
KSBjb25zdAogewotICAgIGF1dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46
OmNyZWF0ZSgpOworICAgIGF1dG8gZGVzY3JpcHRpb24gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAK
ICAgICBmb3IgKGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KQogICAgICAgICBkZXNj
cmlwdGlvbi0+YWRkSXRlbShzaGFwZS0+aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CkBAIC01
MDQsOCArNTA0LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVy
ZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICBSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IGN1cnJlbnRTaGFwZSh0aGlzKTsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUp
IHsKLSAgICAgICAgYXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKLSAgICAgICAgYXV0byBvcHRpb25hbEZpZWxkcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9
IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxG
aWVsZHMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1
dG8gZmllbGQgOiBjdXJyZW50U2hhcGUtPm1fZmllbGRzKQogICAgICAgICAgICAgZmllbGRzLT5h
ZGRJdGVtKGZpZWxkLmdldCgpKTsKICAgICAgICAgZm9yIChhdXRvIGZpZWxkIDogY3VycmVudFNo
YXBlLT5tX29wdGlvbmFsRmllbGRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5oCmluZGV4IDE2MWJmZTg3Yjk1M2JhYTRlMjU4NjFjMzY5Mzg1YmQ5NjIzMjMwYWIuLjk1YTM1
ZDE4ZTZmZWM2ZDhlZGExM2UyYzViYTBmMzI3ZTA0ODBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSdW50aW1l
VHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIG5hbWVzcGFjZSBQcm90b2NvbCAgewotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
QXJyYXk7CiAKIG5hbWVzcGFjZSBSdW50aW1lIHsKIGNsYXNzIFN0cnVjdHVyZURlc2NyaXB0aW9u
OwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsK
ICAgICBTdHJpbmcgZHVtcFR5cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkg
Y29uc3Q7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVz
ZW50YXRpb25zKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNl
bnRhdGlvbnMoKSBjb25zdDsKICAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc092ZXJmbG93bigpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyZmxvd247IH0KICAgICBT
dHJpbmcgbGVhc3RDb21tb25BbmNlc3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSlNPTlZhbHVlcy5oIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCmluZGV4IDlh
NzRkMWVhOTdlYzgxNjY3NzUyZjgyYWMwNjE5MWQyNjMyODljZDQuLjU5N2JjYzliODIwYmViOTc4
ODk0ODliMjFjMTJiMGVhYTZlZTRlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05W
YWx1ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKQEAgLTQyMyw2ICs0MjMs
NDggQEAgaW5saW5lIHZvaWQgQXJyYXlCYXNlOjpwdXNoQXJyYXkoUmVmUHRyPEFycmF5QmFzZT4m
JiB2YWx1ZSkKICAgICBtX21hcC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlPZiA6IHB1YmxpYyBBcnJheUJhc2UgeworcHJpdmF0
ZToKKyAgICBBcnJheU9mKCkgeyB9CisKKyAgICBBcnJheSYgb3BlbkFjY2Vzc29ycygpCisgICAg
eworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXkpID09IHNpemVvZihBcnJheU9m
PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEFycmF5Kj4o
c3RhdGljX2Nhc3Q8QXJyYXlCYXNlKj4odGhpcykpOworICAgIH0KKworcHVibGljOgorICAgIHZv
aWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3Nv
cnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFk
ZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3NvcnMo
KS5wdXNoU3RyaW5nKHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVl
KQorICAgIHsKKyAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hJbnRlZ2VyKHZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgb3Bl
bkFjY2Vzc29ycygpLnB1c2hEb3VibGUodmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8
QXJyYXlPZjxUPj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFycmF5T2Y8VD4oKSk7CisgICAgfQorCisgICAgdXNpbmcgQXJyYXlCYXNlOjpnZXQ7CisgICAg
dXNpbmcgQXJyYXlCYXNlOjpiZWdpbjsKKyAgICB1c2luZyBBcnJheUJhc2U6OmVuZDsKK307CisK
IH0gLy8gbmFtZXNwYWNlIEpTT05JbXBsCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZWI5OWFlZjU3Yzgx
ZTBjM2VmMzEzZTE4NTZiMWJhYjA0NDBhY2Y0Li5kMmI1ZDk2NzM3OTZmODExNjY4NGE4YjVjOTQ5
ZTAyZWE3MmY1MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcApAQCAtMTM0LDEwICsxMzQsMTAgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29y
ZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb24KICAg
ICB9CiAKICAgICBpZiAoIW1fZnJhbWVzKQotICAgICAgICBtX2ZyYW1lcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+Ojpj
cmVhdGUoKTsKKyAgICAgICAgbV9mcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlY29yZGluZzo6RnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9jdXJyZW50
QWN0aW9ucykgewotICAgICAgICBtX2N1cnJlbnRBY3Rpb25zID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgbV9jdXJyZW50QWN0aW9u
cyA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKIAogICAgICAgICBhdXRv
IGZyYW1lID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZTo6Y3JlYXRlKCkK
ICAgICAgICAgICAgIC5zZXRBY3Rpb25zKG1fY3VycmVudEFjdGlvbnMpCkBAIC0xNjUsMTQgKzE2
NSwxNCBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3Rh
dGU+JiYgSW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlSQogICAgIHJldHVybiBXVEZNb3ZlKG1faW5p
dGlhbFN0YXRlKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiYmIEluc3BlY3RvckNhbnZhczo6cmVs
ZWFzZUZyYW1lcygpCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZWNvcmRpbmc6OkZyYW1lPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VGcmFtZXMoKQogewog
ICAgIGFwcGVuZEFjdGlvblNuYXBzaG90SWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBXVEZNb3Zl
KG1fZnJhbWVzKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKK1JlZlB0cjxKU09OOjpB
cnJheU9mPEpTT046OlZhbHVlPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKIHsK
ICAgICBtX2luZGV4ZWREdXBsaWNhdGVEYXRhLmNsZWFyKCk7CiAgICAgcmV0dXJuIFdURk1vdmUo
bV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgaW50IEluc3Bl
Y3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAg
fQogCiAgICAgaWYgKCFtX3NlcmlhbGl6ZWREdXBsaWNhdGVEYXRhKQotICAgICAgICBtX3Nlcmlh
bGl6ZWREdXBsaWNhdGVEYXRhID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFs
dWU+OjpjcmVhdGUoKTsKKyAgICAgICAgbV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YSA9IEpTT046
OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gaXRlbTsKICAgICBXVEY6OnN3aXRjaE9uKGRhdGEsCkBAIC0zNjksNyArMzY5LDcgQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAgICAgICAgIFsmXSAoY29uc3QgSW1hZ2VEYXRhKiBpbWFnZURhdGEpIHsgaXRlbSA9IGJ1aWxk
QXJyYXlGb3JJbWFnZURhdGEoKmltYWdlRGF0YSk7IH0sCiAgICAgICAgIFsmXSAoY29uc3QgSW1h
Z2VCaXRtYXAqIGltYWdlQml0bWFwKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXAo
KmltYWdlQml0bWFwKTsgfSwKICAgICAgICAgWyZdIChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIHNj
cmlwdENhbGxGcmFtZSkgewotICAgICAgICAgICAgYXV0byBhcnJheSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PGRvdWJsZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcnJheSA9
IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhcnJheS0+YWRk
SXRlbShpbmRleEZvckRhdGEoc2NyaXB0Q2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSgpKSk7CiAgICAg
ICAgICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoc2NyaXB0Q2FsbEZyYW1lLnNvdXJj
ZVVSTCgpKSk7CiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHNj
cmlwdENhbGxGcmFtZS5saW5lTnVtYmVyKCkpKTsKQEAgLTM4OSw5ICszODksOSBAQCBpbnQgSW5z
cGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbmRleCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPj4gYnVpbGRBcnJheUZvckFmZmluZVRyYW5z
Zm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSkKK3N0YXRpYyBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxkb3VibGU+PiBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKQogewotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxkb3VibGU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PGRvdWJsZT46OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJh
eU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9y
bS5hKCkpOwogICAgIGFycmF5LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9ybS5iKCkpOwogICAgIGFy
cmF5LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9ybS5jKCkpOwpAQCAtNDAyLDkgKzQwMiw5IEBAIHN0
YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPj4gYnVpbGRBcnJh
eUZvckFmZmluZVRyYW5zZm9ybShjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGlj
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJy
YXlGb3JWZWN0b3IoY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCitzdGF0aWMgUmVmUHRyPEpTT046
OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxU
PiYgdmVjdG9yKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09O
OjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+
OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46
OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgaXRlbSA6IHZlY3RvcikKICAgICAgICAgYXJyYXkt
PmFkZEl0ZW0oaXRlbSk7CiAgICAgcmV0dXJuIGFycmF5OwpAQCAtNDEyLDE0ICs0MTIsMTQgQEAg
c3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1
aWxkQXJyYXlGb3JWZWN0b3IoY29uc3QKIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRl
KCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFs
U3RhdGU+IGluaXRpYWxTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5p
dGlhbFN0YXRlOjpjcmVhdGUoKQorICAgIGF1dG8gaW5pdGlhbFN0YXRlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU6OmNyZWF0ZSgpCiAgICAgICAgIC5yZWxl
YXNlKCk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGF0dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ3aWR0aCIpLCBjYW52YXMo
KS53aWR0aCgpKTsKICAgICBhdHRyaWJ1dGVzLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaGVp
Z2h0IiksIGNhbnZhcygpLmhlaWdodCgpKTsKIAotICAgIGF1dG8gcGFyYW1ldGVycyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBw
YXJhbWV0ZXJzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogCiAgICAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA9IGNhbnZhcygp
LnJlbmRlcmluZ0NvbnRleHQoKTsKICAgICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PihjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgewpAQCAtNDQwLDcgKzQ0MCw3IEBAIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEluaXRpCiAKICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciB0byBgc2V0TGluZURh
c2hgIGlzIGl0c2VsZiBhbiBhcnJheSwgc28gd2UgbmVlZCB0byB3cmFwIHRoZSBwYXJhbWV0ZXJz
CiAgICAgICAgIC8vIGxpc3QgaW4gYW4gYXJyYXkgdG8gYWxsb3cgc3ByZWFkaW5nLgotICAgICAg
ICBhdXRvIHNldExpbmVEYXNoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFs
dWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzZXRMaW5lRGFzaCA9IEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAgICAgICAgc2V0TGluZURhc2gtPmFkZEl0ZW0oYnVp
bGRBcnJheUZvclZlY3RvcihzdGF0ZS5saW5lRGFzaCkpOwogICAgICAgICBhdHRyaWJ1dGVzLT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoInNldExpbmVEYXNoIiksIFdURk1vdmUoc2V0TGluZURhc2gp
KTsKIApAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNv
cmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpCiAgICAgICAg
IGF0dHJpYnV0ZXMtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJpbWFnZVNtb290aGluZ0VuYWJs
ZWQiKSwgY29udGV4dDJkLT5pbWFnZVNtb290aGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIGF0dHJp
YnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpbWFnZVNtb290aGluZ1F1YWxpdHkiKSwg
aW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbnRleHQyZC0+aW1hZ2VT
bW9vdGhpbmdRdWFsaXR5KCkpKSk7CiAKLSAgICAgICAgYXV0byBzZXRQYXRoID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBz
ZXRQYXRoID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBz
ZXRQYXRoLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShidWlsZFN0cmluZ0Zyb21QYXRoKGNvbnRleHQy
ZC0+Z2V0UGF0aCgpLT5wYXRoKCkpKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldEFycmF5KEFT
Q0lJTGl0ZXJhbCgic2V0UGF0aCIpLCBXVEZNb3ZlKHNldFBhdGgpKTsKICAgICB9CkBAIC01MDIs
MTMgKzUwMiwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0
aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0aQogICAgIHJldHVybiBpbml0aWFs
U3RhdGU7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1
ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0
b3I8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQorUmVmUHRyPEpTT046
OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0
IFN0cmluZyYgbmFtZSwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgcGFyYW1l
dGVycykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFs
dWU+PiBhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNy
ZWF0ZSgpOworICAgIGF1dG8gYWN0aW9uID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNy
ZWF0ZSgpOwogICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZvckRhdGEobmFtZSkpOwogCi0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gcGFyYW1ldGVy
c0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBzd2l6emxlVHlw
ZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBhdXRv
IHBhcmFtZXRlcnNEYXRhID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3dpenpsZVR5cGVzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKIAog
ICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZwYXJhbWV0ZXJzRGF0YSwgJnN3aXp6bGVUeXBlc10g
KGF1dG8gdmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlcyBzd2l6emxlVHlwZSkgewogICAgICAg
ICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRlbSh2YWx1ZSk7CkBAIC01MjQsNyArNTI0LDcgQEAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFjdGlvbihjb24KICAgICAgICAgICAgIFsmXSAoQ2FudmFzVGV4dEFsaWduIHZh
bHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAogICAgICAgICAg
ICAgWyZdIChDYW52YXNUZXh0QmFzZWxpbmUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9y
RGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OlN0cmluZyk7IH0sCiAgICAgICAgICAgICBbJl0gKGNvbnN0IERPTU1hdHJpeDJESW5p
dCYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8ZG91YmxlPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxkb3VibGU+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxkb3VibGU+
PiBhcnJheSA9IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAg
ICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuYS52YWx1ZV9vcigxKSk7CiAgICAgICAgICAgICAgICAg
YXJyYXktPmFkZEl0ZW0odmFsdWUuYi52YWx1ZV9vcigwKSk7CiAgICAgICAgICAgICAgICAgYXJy
YXktPmFkZEl0ZW0odmFsdWUuYy52YWx1ZV9vcigwKSk7CkBAIC01ODEsNyArNTgxLDcgQEAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFjdGlvbihjb24KICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0
ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJsZT4+IHRyYWNlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3JlYXRlKCk7CisgICAgYXV0byB0
cmFjZSA9IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byBzdGFja1Ry
YWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFj
ZS0+c2l6ZSgpOyArK2kpCiAgICAgICAgIHRyYWNlLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzdGFj
a1RyYWNlLT5hdChpKSkpOwpAQCAtNTkwLDEzICs1OTAsMTMgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlv
bihjb24KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52
YXNHcmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYgY2FudmFzR3JhZGllbnQpCitSZWZQdHI8
SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZv
ckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZhc0dyYWRpZW50JiBjYW52YXNHcmFkaWVudCkKIHsK
ICAgICBjb25zdCBhdXRvJiBncmFkaWVudCA9IGNhbnZhc0dyYWRpZW50LmdyYWRpZW50KCk7CiAK
ICAgICBTdHJpbmcgdHlwZSA9IGdyYWRpZW50LnR5cGUoKSA9PSBHcmFkaWVudDo6VHlwZTo6UmFk
aWFsID8gQVNDSUlMaXRlcmFsKCJyYWRpYWwtZ3JhZGllbnQiKSA6IEFTQ0lJTGl0ZXJhbCgibGlu
ZWFyLWdyYWRpZW50Iik7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
ZmxvYXQ+PiBwYXJhbWV0ZXJzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZmxvYXQ+Ojpj
cmVhdGUoKTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpBcnJheU9mPGZsb2F0Pjo6Y3Jl
YXRlKCk7CiAgICAgV1RGOjpzd2l0Y2hPbihncmFkaWVudC5kYXRhKCksCiAgICAgICAgIFsmcGFy
YW1ldGVyc10gKGNvbnN0IEdyYWRpZW50OjpMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAg
ICBwYXJhbWV0ZXJzLT5hZGRJdGVtKGRhdGEucG9pbnQwLngoKSk7CkBAIC02MTQsMjIgKzYxNCwy
MiBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNw
ZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYQogICAgICAgICB9CiAgICAgKTsKIAotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IHN0b3BzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBhdXRv
IHN0b3BzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgY29sb3JTdG9wIDogZ3JhZGllbnQuc3RvcHMoKSkgewotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBzdG9wID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzdG9w
ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBzdG9wLT5h
ZGRJdGVtKGNvbG9yU3RvcC5vZmZzZXQpOwogICAgICAgICBzdG9wLT5hZGRJdGVtKGluZGV4Rm9y
RGF0YShjb2xvclN0b3AuY29sb3IuY3NzVGV4dCgpKSk7CiAgICAgICAgIHN0b3BzLT5hZGRJdGVt
KFdURk1vdmUoc3RvcCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YSh0
eXBlKSk7CiAgICAgYXJyYXktPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgYXJy
YXktPmFkZEl0ZW0oV1RGTW92ZShzdG9wcykpOwogICAgIHJldHVybiBhcnJheTsKIH0KIAotUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJiBjYW52
YXNQYXR0ZXJuKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNh
bnZhc1BhdHRlcm4pCiB7CiAgICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0
dGVybigpLnRpbGVJbWFnZSgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpAQCAtNjQ3LDI5ICs2NDcsMjkgQEAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWls
ZEFycmF5Rm9yQ2EKICAgICBlbHNlCiAgICAgICAgIHJlcGVhdCA9IEFTQ0lJTGl0ZXJhbCgibm8t
cmVwZWF0Iik7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6
VmFsdWU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6
Y3JlYXRlKCk7CisgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+Ojpj
cmVhdGUoKTsKICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoaW1hZ2VCdWZmZXItPnRv
RGF0YVVSTCgiaW1hZ2UvcG5nIikpKTsKICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEo
cmVwZWF0KSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JJ
bWFnZURhdGEoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEpCitSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdlRGF0YShj
b25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pj4gZGF0YSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46
OmNyZWF0ZSgpOworICAgIGF1dG8gZGF0YSA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbWFnZURhdGEuZGF0YSgpLT5sZW5ndGgoKTsg
KytpKQogICAgICAgICBkYXRhLT5hZGRJdGVtKGltYWdlRGF0YS5kYXRhKCktPml0ZW0oaSkpOwog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJy
YXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwor
ICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAg
ICAgYXJyYXktPmFkZEl0ZW0oV1RGTW92ZShkYXRhKSk7CiAgICAgYXJyYXktPmFkZEl0ZW0oaW1h
Z2VEYXRhLndpZHRoKCkpOwogICAgIGFycmF5LT5hZGRJdGVtKGltYWdlRGF0YS5oZWlnaHQoKSk7
CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JJbWFnZUJpdG1h
cChjb25zdCBJbWFnZUJpdG1hcCYgaW1hZ2VCaXRtYXApCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdlQml0bWFwKGNv
bnN0IEltYWdlQml0bWFwJiBpbWFnZUJpdG1hcCkKIHsKICAgICAvLyBGSVhNRTogTmVlZHMgdG8g
aW5jbHVkZSB0aGUgZGF0YSBzb21laG93LgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0PGlu
dD4oaW1hZ2VCaXRtYXAud2lkdGgoKSkpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0
PGludD4oaW1hZ2VCaXRtYXAuaGVpZ2h0KCkpKTsKICAgICByZXR1cm4gYXJyYXk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggMGI5NjExYjJlZDY5Mzhm
MTlkZjQ5N2ZlM2NiYmQzZWYwMzE4ZmJmZC4uMmY2YzY0NzI0ODI3MzE1YzVlNzRmYmEyNGRkMTEx
Nzc3ZmFjMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
aApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRBY3Rpb24oY29uc3Qg
U3RyaW5nJiwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiYm
IHJlbGVhc2VJbml0aWFsU3RhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+JiYgcmVsZWFzZUZy
YW1lcygpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1
ZT4+JiYgcmVsZWFzZURhdGEoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZWNvcmRpbmc6OkZyYW1lPj4mJiByZWxlYXNlRnJhbWVzKCk7CisgICAgUmVm
UHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiYmIHJlbGVhc2VEYXRhKCk7CiAKICAgICB2
b2lkIGZpbmFsaXplRnJhbWUoKTsKICAgICB2b2lkIG1hcmtDdXJyZW50RnJhbWVJbmNvbXBsZXRl
KCk7CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCBwcml2YXRlOgogCiAgICAgaW50IGluZGV4Rm9yRGF0
YShEdXBsaWNhdGVEYXRhVmFyaWFudCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBidWlsZEluaXRpYWxTdGF0ZSgpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWls
ZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoY29uc3QgQ2FudmFzR3JhZGllbnQmKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9y
Q2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJik7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckltYWdlRGF0YShj
b25zdCBJbWFnZURhdGEmKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXAoY29uc3QgSW1hZ2VCaXRtYXAm
KTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsK
KyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52
YXNHcmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYpOworICAgIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFz
UGF0dGVybiYpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRB
cnJheUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JJbWFnZUJpdG1hcChjb25zdCBJbWFnZUJp
dG1hcCYpOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBIVE1MQ2FudmFzRWxlbWVu
dCYgbV9jYW52YXM7CiAgICAgU3RyaW5nIG1fY3NzQ2FudmFzTmFtZTsKIAogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gbV9pbml0aWFsU3Rh
dGU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiBtX2ZyYW1lczsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBtX2N1cnJlbnRBY3Rpb25zOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVl
ZGluZ1NuYXBzaG90OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09O
OjpWYWx1ZT4+IG1fc2VyaWFsaXplZER1cGxpY2F0ZURhdGE7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+IG1fZnJhbWVzOwor
ICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9jdXJyZW50QWN0aW9uczsK
KyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVlZGluZ1Nu
YXBzaG90OworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9zZXJpYWxp
emVkRHVwbGljYXRlRGF0YTsKICAgICBWZWN0b3I8RHVwbGljYXRlRGF0YVZhcmlhbnQ+IG1faW5k
ZXhlZER1cGxpY2F0ZURhdGE7CiAgICAgZG91YmxlIG1fY3VycmVudEZyYW1lU3RhcnRUaW1lIHsg
TkFOIH07CiAgICAgc2l6ZV90IG1fYnVmZmVyTGltaXQgeyAxMDAgKiAxMDI0ICogMTAyNCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGFiM2JkZmMxOWVjZGY1N2MyZWE2NTBkMmI1ZTgxNzJiNWZkNTk2YmQuLmEzYzJmMDhjZDRh
NjQyZTdkNDNkMjEzMmFhZGI0NGQ2ZDBhYjQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmdldEhpZ2hsaWdodChIaWdobGlnaHQmIGhpZ2hsaWdodCwg
SW5zcGVjdG9yT3ZlcmxheTo6QwogICAgIG1fb3ZlcmxheS0+Z2V0SGlnaGxpZ2h0KGhpZ2hsaWdo
dCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4g
SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29u
c3QKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
Tm9kZUhpZ2hsaWdodERhdGE+PiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhp
Z2hsaWdodGVkTm9kZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX292ZXJsYXktPmJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYmE5YTMyYmU1ZTZiMDBhNzg5ZjMxN2ZmMGE0
MmFhY2ExZjE1MTc3My4uNGJkN2U3YjZkYjNmZjIzYjAwZmNmODIyZTMxMzM3OThkMGFmMWU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWls
ZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVI
aWdobGlnaHREYXRhPj4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbXBvc2l0ZShGcmFtZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggYTI0MzM2ZjUz
NjA5ZTUyMDYxMDM3ZjM2NjA1MTJiMWRlMTY4MzM2Ny4uZmUwZGEwYWUxZGIzMWUzZmYxZWQ0N2Uz
MzhjY2Y5NzU2MWU3YzY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9h
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVu
dEhpZ2hsaWdodERhdGE+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGNvbnN0IEhpZ2hsaWdodCYg
aGlnaGxpZ2h0KQogewotICAgIGF1dG8gYXJyYXlPZlF1YWRzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPjo6Y3JlYXRl
KCk7CisgICAgYXV0byBhcnJheU9mUXVhZHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcXVh
ZCA6IGhpZ2hsaWdodC5xdWFkcykKICAgICAgICAgYXJyYXlPZlF1YWRzLT5hZGRJdGVtKGJ1aWxk
QXJyYXlGb3JRdWFkKHF1YWQpKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogCiB2b2lkIEluc3BlY3Rvck92
ZXJsYXk6OmRyYXdQYWludFJlY3RzKCkKIHsKLSAgICBhdXRvIGFycmF5T2ZSZWN0cyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
UmVjdD46OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZlJlY3RzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVhdGUoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCiAgICAgICAgIGFycmF5T2ZSZWN0
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclJlY3QocGFpci5zZWNvbmQpKTsKIApAQCAtNDI2LDkg
KzQyNiw5IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAgICAgZXZhbHVh
dGVJbk92ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1zdGF0aWMgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJh
Z21lbnRzKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29u
ZmlnKQorc3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVy
RnJhZ21lbnRzKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYg
Y29uZmlnKQogewotICAgIGF1dG8gYXJyYXlPZkZyYWdtZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBhcnJheU9mRnJhZ21lbnRzID0gSlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxp
Z2h0RGF0YT46OmNyZWF0ZSgpOwogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBidWls
ZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBjb25maWcsIGhpZ2hsaWdodCwgSW5zcGVjdG9y
T3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CkBAIC01NjAsNyArNTYwLDcgQEAgc3Rh
dGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRh
PiBidWlsZE9iamVjdEZvckVsZW0KICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChlbGVt
ZW50Lmhhc0NsYXNzKCkgJiYgaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAg
YXV0byBjbGFzc2VzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CisgICAgICAgIGF1dG8gY2xhc3NlcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRl
KCk7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKICAgICAg
ICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmluZyA9IGRvd25jYXN0PFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLmNsYXNzTmFtZXMoKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjbGFzc05hbWVzU3RyaW5nLnNpemUoKTsgKytpKSB7CkBAIC02MjIsNyArNjIy
LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hs
aWdodERhdGE+IEluc3BlY3Rvck92ZXJsYXk6OmIKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0
YT4+IGFycmF5T2ZGcmFnbWVudEhpZ2hsaWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFn
bWVudHMocmVuZGVyZXIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZyk7CisgICAgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hs
aWdodERhdGE+PiBhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRzID0gYnVpbGRBcnJheUZvclJlbmRl
cmVyRnJhZ21lbnRzKHJlbmRlcmVyLCBtX25vZGVIaWdobGlnaHRDb25maWcpOwogICAgIGlmICgh
YXJyYXlPZkZyYWdtZW50SGlnaGxpZ2h0cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTY0Miw5ICs2NDIsOSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpOb2RlSGlnaGxpZ2h0RGF0YT4gSW5zcGVjdG9yT3ZlcmxheTo6YgogICAgIHJldHVybiBXVEZN
b3ZlKG5vZGVIaWdobGlnaHRPYmplY3QpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0
YT4+IEluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNv
bnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdo
bGlnaHRlZE5vZGVzKCkgY29uc3QKIHsKLSAgICBhdXRvIGhpZ2hsaWdodHMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVI
aWdobGlnaHREYXRhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBoaWdobGlnaHRzID0gSlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRh
Pjo6Y3JlYXRlKCk7CiAKICAgICBpZiAobV9oaWdobGlnaHROb2RlKSB7CiAgICAgICAgIGlmIChS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0
YT4gbm9kZUhpZ2hsaWdodERhdGEgPSBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUobV9oaWdo
bGlnaHROb2RlLmdldCgpLCBIaWdobGlnaHRUeXBlOjpOb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDQ5ZDVlZmM0Y2E2YTZhNTczNmQ4YzMz
NjZmOWFmNDcwZDVlOGNhZTcuLmZmMTc5NzEyMzlhMmYyMjYyNWI0Zjg4MmY2NDg1N2E1YWZmZGEy
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAt
MTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRp
Y2F0aW5nKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
Ok5vZGVIaWdobGlnaHREYXRhPiBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUoTm9kZSosIEhp
Z2hsaWdodFR5cGUpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+
IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0OwogCiAgICAgdm9pZCBmcmVl
UGFnZSgpOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAppbmRleCBmN2NkOTQ5YTJjY2Y2NjUxMDdiZDAzYjZiNTI0NDg2NDVh
N2YxNzI3Li5jMTI0MjY1YjhiYWFmMWRjYjI1ZjE4YmYwMDY0NmRhNTdjMDlkNzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC02
MSw3ICs2MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1
ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIAotdXNpbmcgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk7Cit1c2luZyBKU09OOjpBcnJheU9mOwogdXNpbmcgV2ViQ29yZTo6UnVsZVNvdXJj
ZURhdGFMaXN0OwogdXNpbmcgV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE7CiAKQEAgLTQ2Myw3
ICs0NjMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1J1
bGUqIHJ1bGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxNZWRp
YUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU01lZGlhPiYgbWVkaWFBcnJheSkKK3N0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihD
U1NSdWxlKiBydWxlLCBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
TWVkaWE+JiBtZWRpYUFycmF5KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENT
U1J1bGUqIHBhcmVudFJ1bGUgPSBydWxlOwpAQCAtNTQ4LDkgKzU0OCw5IEBAIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSgpCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0
ZWRTdHlsZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0
eWxlKCkgY29uc3QKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JD
b21wdXRlZFN0eWxlKCkgY29uc3QKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7
CiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9w
dWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIApAQCAtNjE5LDggKzYxOSw4IEBAIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5
bGVXaXRoUHJvcGVydGllcygpIGNvCiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+
IHByb3BlcnRpZXM7CiAgICAgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAot
ICAgIGF1dG8gcHJvcGVydGllc09iamVjdCA9IEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBhdXRvIHNob3J0aGFuZEVudHJpZXMgPSBB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7
CisgICAgYXV0byBwcm9wZXJ0aWVzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBzaG9ydGhhbmRF
bnRyaWVzID0gQXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5
Pjo6Y3JlYXRlKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3Bl
cnR5OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHBy
ZXZpb3VzUHJpb3JpdHk7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxw
ZXIoYwogICAgICAgICAgICAgc3BlY2lmaWNpdHkgPSBzZWxlY3Rvci5zdGF0aWNTcGVjaWZpY2l0
eShva2F5KTsKIAogICAgICAgICBpZiAob2theSkgewotICAgICAgICAgICAgYXV0byB0dXBsZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAg
YXV0byB0dXBsZSA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB0
dXBsZS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KChzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9y
OjppZE1hc2spID4+IDE2KSk7CiAgICAgICAgICAgICB0dXBsZS0+YWRkSXRlbShzdGF0aWNfY2Fz
dDxpbnQ+KChzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjpjbGFzc01hc2spID4+IDgpKTsKICAg
ICAgICAgICAgIHR1cGxlLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oc3BlY2lmaWNpdHkgJiBD
U1NTZWxlY3Rvcjo6ZWxlbWVudE1hc2spKTsKQEAgLTEwOTcsMTEgKzEwOTcsMTEgQEAgc3RhdGlj
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZv
clNlbGVjdG9ySGVscGVyKGMKICAgICByZXR1cm4gaW5zcGVjdG9yU2VsZWN0b3I7CiB9CiAKLXN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJj
ZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBSZWY8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0
b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3Qg
U3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBF
bGVtZW50KiBlbGVtZW50KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZYXJyOjpU
ZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAotICAgIGF1
dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7
CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7
CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2VzKSB7CiAg
ICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzZWxlY3RvciwgdGhhdCBtZWFucyB0aGUgU291
cmNlRGF0YSBmb3IgdGhpcyBDU1NTdHlsZVNoZWV0CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNl
RGF0YTsKICAgICBpZiAoZW5zdXJlUGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAgIHNvdXJjZURh
dGEgPSBydWxlU291cmNlRGF0YUZvcigmcnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0
b3I+PiBzZWxlY3RvcnM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yczsKIAogICAgIC8vIFRoaXMgaW50ZW50
aW9uYWxseSBkb2VzIG5vdCByZWx5IG9uIHRoZSBzb3VyY2UgZGF0YSB0byBhdm9pZCBjYXRjaGlu
ZyB0aGUgdHJhaWxpbmcgY29tbWVudHMgKGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcg
J3snKS4KICAgICBTdHJpbmcgc2VsZWN0b3JUZXh0ID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBA
IC0xMTM5LDcgKzExMzksNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rv
ckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAgIGlmIChzb3Vy
Y2VEYXRhKQogICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURh
dGEuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUoKS5z
ZWxlY3Rvckxpc3QoKSwgZWxlbWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9ycyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U2VsZWN0b3I+OjpjcmVhdGUoKTsKKyAgICAgICAgc2VsZWN0b3JzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgICAg
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c3R5bGVSdWxlKCku
c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9y
TGlzdDo6bmV4dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCkpOwpAQCAtMTE3Nyw3ICsxMTc3
LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWwKICAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVs
ZUlkKGlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGVJ
ZD4oKSk7CiAgICAgfQogCi0gICAgYXV0byBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOworICAgIGF1dG8gbWVkaWFBcnJheSA9
IEFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwog
CiAgICAgZmlsbE1lZGlhTGlzdENoYWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlm
IChtZWRpYUFycmF5LT5sZW5ndGgoKSkKQEAgLTExOTUsOCArMTE5NSw4IEBAIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclN0CiAgICAgSW5zcGVjdG9yQ1NTSWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxl
KTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1Byb3Bl
cnRpZXMoQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0
ZSgpKQotICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKQorICAgICAgICAgICAgLnNl
dENzc1Byb3BlcnRpZXMoQXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5Pjo6Y3JlYXRlKCkpCisgICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKSkKICAg
ICAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4g
aW5zcGVjdG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKQEAgLTE0NDIsOSArMTQ0
Miw5IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3Ry
aW5nKiByZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVM
aXN0KQorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxl
Pj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0
KiBydWxlTGlzdCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIGF1
dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApp
bmRleCAyNmU1ZWVkYjkyMDkwOTc0NzY5NzMxMGM0ZmUwNjI4NzZkOGMwYTNjLi4zOGE4YjlkNDM0
NWE5MmM0ZDQ5NzYzODM5NDUyNjhjNTJlNGMwNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6
CiAKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQ
cm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CisgICAgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJv
cGVydHk+PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgRXhjZXB0
aW9uT3I8U3RyaW5nPiB0ZXh0KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VGV4
dChjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
b3JpZ2luYWxTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBy
ZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIGlu
bGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4g
YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUmVmPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVM
aXN0KENTU1J1bGVMaXN0Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBFbGVt
ZW50Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBi
dWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqLCBFbGVtZW50KiwgaW50JiBl
bmRpbmdMaW5lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDQ2
OTQ3ODkwNGU5YzZiNDAzNDY1NTVhODFhMTgyYzVjMzdhNTA3ODAuLjYyMzZiYWYwNDk2NGM2MmQ2
NTMwMmU1ZGZkMjJmMTdhYTM5NmY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3
b3JrU3RhdGVVcGRhdGVkKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUo
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNX
aXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlm
ZXN0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRG
cmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYg
cmVzdWx0KQogewotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3Jl
YXRlKCk7CisgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD46OmNyZWF0ZSgpOwogCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CkBAIC0xNDUsOSArMTQ1
LDkgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW8KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAot
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29u
c3QgVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+JiBhcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzKQorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
cyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mIGFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcykKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGluZm8pKTsKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMDgwZmU1MTViYzJmMjc1Zjg1YmRl
YzI3N2VmNjg3Mjc2MTZiMWRjZS4uNzk1MWY4MzYyNWMxNmMwMjU1M2ZkNTdlMzg4MTU1YWM0ZDcy
ODVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01NiwxMyArNTYsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5p
ZmVzdHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYg
cmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgU3RyaW5nKiBtYW5pZmVzdFVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlv
bkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
PiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGUoY29uc3QgVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+
JiwgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOwotICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25D
YWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNl
SW5mbz4mKTsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6
OlJlc291cmNlSW5mbz4mKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRp
b25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZv
Jik7CiAKICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2MDI1
YWRjZjMwMDE5OGJiNTRiNWVhMGYyYTJiMTE1MDdkZjZhMTNkLi45ODgyODY0ODJlOTMxNzA5NDMw
YTU1NDJlZWI3N2U2YmQ3N2IyYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJv
b2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50
OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhl
cml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hl
cz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVk
RW50cmllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2Rl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVk
ZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVz
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVz
KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vCiAgICAgaWYgKCFvcmlnaW5hbEVsZW1lbnQtPmlzUHNldWRvRWxlbWVudCgp
KSB7CiAgICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgaWYgKCFpbmNsdWRlUHNl
dWRvIHx8ICppbmNsdWRlUHNldWRvKSB7Ci0gICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQ
c2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHNldWRvRWxlbWVu
dHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRj
aGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklS
U1RfUFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURP
SUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5
bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENT
U1J1bGVzKTsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsK
QEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAgICAgIC8v
IEluaGVyaXRlZCBzdHlsZXMuCiAgICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5j
bHVkZUluaGVyaXRlZCkgewotICAgICAgICAgICAgYXV0byBlbnRyaWVzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVu
dHJ5Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAg
ICAgICAgU3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQt
PnN0eWxlUmVzb2x2ZXIoKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IG5vZAogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBudWxscHRyOwogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5bGUpCiB7
CiAgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsK
ICAgICBpZiAoIWVsZW1lbnQpCkBAIC01MTksOSArNTE5LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm8KICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRT
dHlsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVh
ZGVyPj4mIHN0eWxlSW5mb3MpCiB7Ci0gICAgc3R5bGVJbmZvcyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46
OmNyZWF0ZSgpOworICAgIHN0eWxlSW5mb3MgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9y
PEluc3BlY3RvclN0eWxlU2hlZXQqPiBpbnNwZWN0b3JTdHlsZVNoZWV0czsKICAgICBjb2xsZWN0
QWxsU3R5bGVTaGVldHMoaW5zcGVjdG9yU3R5bGVTaGVldHMpOwpAQCAtNzExLDkgKzcxMSw5IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVl
dC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVy
dGllcykKIHsKLSAgICBhdXRvIHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOwor
ICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RD
U1NQcm9wZXJ0eTsgaSA8PSBsYXN0Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9w
ZXJ0eUlEIGlkID0gY29udmVydFRvQ1NTUHJvcGVydHlJRChpKTsKICAgICAgICAgaWYgKGlzSW50
ZXJuYWxDU1NQcm9wZXJ0eShpZCkpCkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3IKICAgICAgICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0oV1RGTW92ZShwcm9wZXJ0
eSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBsb25n
aGFuZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAg
ICAgICAgYXV0byBsb25naGFuZHMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2op
IHsKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgbG9uZ2hhbmRJRCA9IHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbal07CiAgICAgICAgICAgICBsb25naGFuZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlO
YW1lU3RyaW5nKGxvbmdoYW5kSUQpKTsKQEAgLTczOSw5ICs3MzksOSBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEluc3BlY3RvcgogICAgIGNzc1Byb3BlcnRpZXMgPSBXVEZNb3ZlKHByb3BlcnRpZXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFt
ZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mIGZvbnRGYW1pbHlOYW1lcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRl
ZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+JiBmb250RmFtaWx5TmFtZXMpCiB7Ci0gICAgYXV0byBmYW1pbGllcyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZmFtaWxp
ZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gc3lzdGVtRm9udEZhbWlsaWVzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250
RmFtaWxpZXMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZhbWlseU5hbWUgOiBzeXN0ZW1Gb250
RmFtaWxpZXMpCkBAIC04ODgsOSArODg4LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAg
ICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxk
T2JqZWN0Rm9yUnVsZShydWxlLCBudWxscHRyKSA6IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRj
aD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAg
ICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNr
ZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcyk7CiAgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVk
b0lkID8gcHNldWRvSWQgOiBlbGVtZW50LnBzZXVkb0lkKCk7CkBAIC05MDEsNyArOTAxLDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UnVsZU1hdGNoPj4gSW5zcGVjdG8KICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIG1hdGNo
aW5nU2VsZWN0b3JzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBtYXRjaGVkUnVsZS0+c2VsZWN0b3JM
aXN0KCk7CiAgICAgICAgIGludCBpbmRleCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3Rv
ciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA2YjgwNDIw
MTA3MWQ0MjNmODM1MzVkMWVlOTMyNzkxZDA5YTMxOGJhLi5kYTM4OTUyYmRmOTJmOWRiZGU0MDZj
ZTlhMWMzMWQ3ZWQ3ODk3ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05NywxMCArOTcsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKERvY3VtZW50Jik7CiAgICAgYm9vbCBm
b3JjZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlKTsKIAotICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOworICAg
IHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogY29u
c3QgaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUluaGVyaXRlZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJ
bmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
Pj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1
ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRD
U1NSdWxlcywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQ
c2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4m
IHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFN0eWxlU2hlZXRU
ZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkgb3ZlcnJpZGU7CkBAIC0xMDgsOCArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBydWxlSWQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1J1bGU+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlU3R5bGVTaGVldChF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
cmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlO
YW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZVBzZXVk
b1N0YXRlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGZvcmNl
ZFBzZXVkb0NsYXNzZXMpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTQxLDcgKzE0MSw3IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxl
PiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQm
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9i
amVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJh
eUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5
bGVSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0
Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29s
dmVyJiwgRWxlbWVudCYsIFBzZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxl
bWVudCYpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVu
dGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDc4MTY1MjRmMjJmNmY1MWI1ZmRjZDQ4NTE1ZWU4
ZThkM2UyNGU1MzcuLjMyMjZjOTliYTM1YTg1NTk2NmRkNGExNzUxNDI0NGY3MGE0Yjc4ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCkBAIC0xOTEsMTMgKzE5MSwxMyBAQCB2b2lkIEluc3BlY3RvckNhbnZh
c0FnZW50OjpyZXF1ZXN0Q29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZwogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQgY2Fu
dmFzIGNvbnRleHQgdHlwZSIpOwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1
ZXN0Q1NTQ2FudmFzQ2xpZW50Tm9kZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGNhbnZhc0lkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4m
IHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDU1NDYW52YXNDbGll
bnROb2RlcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQs
IFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiByZXN1bHQpCiB7CiAgICAgYXV0byogaW5zcGVj
dG9yQ2FudmFzID0gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKGVycm9yU3RyaW5nLCBjYW52YXNJZCk7
CiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3Vs
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIHJlc3Vs
dCA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChFbGVtZW50KiBlbGVt
ZW50IDogaW5zcGVjdG9yQ2FudmFzLT5jYW52YXMoKS5jc3NDYW52YXNDbGllbnRzKCkpIHsKICAg
ICAgICAgaWYgKGludCBkb2N1bWVudE5vZGVJZCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpLT5ib3VuZE5vZGVJZCgmZWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAg
ICAgICAgICByZXN1bHQtPmFkZEl0ZW0obV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRP
TUFnZW50KCktPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQs
IGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCA1M2YxMmExN2RlNjQwYWE2OWIyM2NiOWVhMzcz
MDE4MjA3OGJlYzZhLi5kY2JiNjJiNGQ4ZTkxNmVhZGE3NGM2ODdhYWExYzk0ZmU4N2Q3MjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVxdWVzdENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBT
dHJpbmcqIGNvbnRlbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdENTU0NhbnZhc0NsaWVu
dE5vZGVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0
Q1NTQ2FudmFzQ2xpZW50Tm9kZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lk
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2
ZUNhbnZhc0NvbnRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZWNvcmRp
bmcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25z
dCBzaW5nbGVGcmFtZSwgY29uc3QgaW50KiBjb25zdCBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJ
ZCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGZhYzVhNDc2YjU1MGI2MDQ1ODZmOGFlODRkNjg1
YjFkMTRhMWNjOGQuLmQyYzYzNWRmZTVhMDgzOWE2M2E5ZDBjNjcyZmUwZjlhN2JjYzQwOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVl
cnlTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAg
ICAgICAgKmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZWxlbWVudCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+
JiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjCiAgICAgfQogCiAgICAgYXV0byBub2RlcyA9IHF1ZXJ5UmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOworICAgIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVzLT5sZW5ndGgoKTsgKytpKQogICAg
ICAgICByZXN1bHQtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShp
KSkpOwogfQpAQCAtNTk3LDcgKzU5Nyw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICAgICAgYXV0byBuZXdN
YXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xp
bmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBz
LmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7
CiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBXVEZN
b3ZlKGNoaWxkcmVuKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTgzMCw5ICs4MzAsOSBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIG1fZG9tRWRpdG9yLT5yZXBsYWNlV2hvbGVUZXh0
KGRvd25jYXN0PFRleHQ+KCpub2RlKSwgdmFsdWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZl
bnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKIHsK
LSAgICBsaXN0ZW5lcnNBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOworICAgIGxpc3RlbmVy
c0FycmF5ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlz
dGVuZXI+OjpjcmVhdGUoKTsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTk2OSw3ICs5
NjksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB3aAogICAgICpyZXN1bHRDb3VudCA9IHJlc3Vs
dHNWZWN0b3Iuc2l6ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hS
ZXN1bHRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwg
aW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+PiYgbm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJl
c3VsdHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBp
bnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mIG5v
ZGVJZHMpCiB7CiAgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3Vs
dHMuZmluZChzZWFyY2hJZCk7CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkg
ewpAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJl
c3VsdHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
aW50Pjo6Y3JlYXRlKCk7CisgICAgbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKICAgICAg
ICAgbm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ld
LmdldCgpKSk7CiB9CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
CiAgICAgcmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRB
dHRyaWJ1dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIWVsZW1lbnQpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUq
CiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291
bnQgPSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRO
b2RlQ291bnQobm9kZUNvdW50KTsKLSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJh
eUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAgIFJl
ZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVu
ID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7
CiAgICAgICAgIGlmIChjaGlsZHJlbi0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUt
PnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICB9CkBAIC0xNDg2LDcgKzE0ODYs
NyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoU2hh
ZG93Um9vdCogcm9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICBhdXRv
IHNoYWRvd1Jvb3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHNoYWRvd1Jvb3Rz
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUo
KTsKICAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShy
b290LCAwLCBub2Rlc01hcCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKFdU
Rk1vdmUoc2hhZG93Um9vdHMpKTsKICAgICAgICAgfQpAQCAtMTU0MSw5ICsxNTQxLDkgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTm9kZShOb2RlKgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKK1JlZjxKU09OOjpBcnJheU9m
PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXNWYWx1ZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gYXR0cmli
dXRlc1ZhbHVlID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0
aHJvdWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KICAgICBpZiAoIWVsZW1l
bnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKQEAg
LTE1NTUsOSArMTU1NSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBCiAgICAgcmV0dXJuIGF0
dHJpYnV0ZXNWYWx1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5
Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCkKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsK
LSAgICBhdXRvIGNoaWxkcmVuID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBjaGlsZHJlbiA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAg
ICAgaWYgKGRlcHRoID09IDApIHsKICAgICAgICAgLy8gU3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRl
eHQgY2hpbGQgLSBwcmV0ZW5kIHRoYXQgY29udGFpbmVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJl
cXVlc3RlZC4KICAgICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGls
ZCgpOwpAQCAtMTU3OSwxNCArMTU3OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbgogICAg
IHJldHVybiBjaGlsZHJlbjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgTm9kZVRvSWRN
YXAqIG5vZGVzTWFwKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50
cyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7CiAgICAg
UHNldWRvRWxlbWVudCogYmVmb3JlRWxlbWVudCA9IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVu
dCgpOwogICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1
ZG9FbGVtZW50KCk7CiAgICAgaWYgKCFiZWZvcmVFbGVtZW50ICYmICFhZnRlckVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNy
ZWF0ZSgpOworICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChiZWZvcmVFbGVtZW50
KQogICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVm
b3JlRWxlbWVudCwgMCwgbm9kZXNNYXApKTsKICAgICBpZiAoYWZ0ZXJFbGVtZW50KQpAQCAtMTY1
NiwxNCArMTY1NiwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3Rl
bmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgIHJldHVybiB2YWx1
ZTsKIH0KICAgICAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW4oUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYmIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiYg
Y2hpbGROb2RlSWRzKQogewogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYXhPYmplY3QtPmNo
aWxkcmVuKCk7CiAgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBpZiAoIWNoaWxkTm9kZUlkcykKLSAgICAgICAgY2hpbGROb2RlSWRzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIGNoaWxkTm9kZUlk
cyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZE9iamVjdCA6IGNoaWxkcmVuKSB7CiAgICAgICAgIGlmIChOb2RlKiBjaGlsZE5v
ZGUgPSBjaGlsZE9iamVjdC0+bm9kZSgpKQpAQCAtMTY4NSwxMyArMTY4NSwxMyBAQCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aQogICAgIE5vZGUqIGFjdGl2ZURlc2NlbmRhbnROb2RlID0gbnVsbHB0
cjsKICAgICBib29sIGJ1c3kgPSBmYWxzZTsKICAgICBhdXRvIGNoZWNrZWQgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRz
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjb250cm9sbGVk
Tm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBjaGlsZE5vZGVJZHM7Cisg
ICAgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4gY29udHJvbGxlZE5vZGVJZHM7CiAgICAgYXV0
byBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzOjpDdXJyZW50OjpGYWxzZTsKICAgICBib29sIGV4aXN0cyA9IGZhbHNlOwogICAg
IGJvb2wgZXhwYW5kZWQgPSBmYWxzZTsKICAgICBib29sIGRpc2FibGVkID0gZmFsc2U7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGZsb3dlZE5vZGVJZHM7Cisg
ICAgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4gZmxvd2VkTm9kZUlkczsKICAgICBib29sIGZv
Y3VzZWQgPSBmYWxzZTsKICAgICBib29sIGlnbm9yZWQgPSB0cnVlOwogICAgIGJvb2wgaWdub3Jl
ZEJ5RGVmYXVsdCA9IGZhbHNlOwpAQCAtMTY5OSwxNyArMTY5OSwxNyBAQCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aQogICAgIGJvb2wgaGlkZGVuID0gZmFsc2U7CiAgICAgU3RyaW5nIGxhYmVsOwog
ICAgIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYyA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgUmVmUHRy
PEpTT046OkFycmF5T2Y8U3RyaW5nPj4gbGl2ZVJlZ2lvblJlbGV2YW50OwogICAgIGF1dG8gbGl2
ZVJlZ2lvblN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM6OkxpdmVSZWdpb25TdGF0dXM6Ok9mZjsKICAgICBOb2RlKiBtb3VzZUV2ZW50Tm9k
ZSA9IG51bGxwdHI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+
IG93bmVkTm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBvd25lZE5vZGVJ
ZHM7CiAgICAgTm9kZSogcGFyZW50Tm9kZSA9IG51bGxwdHI7CiAgICAgYm9vbCBwcmVzc2VkID0g
ZmFsc2U7CiAgICAgYm9vbCByZWFkb25seSA9IGZhbHNlOwogICAgIGJvb2wgcmVxdWlyZWQgPSBm
YWxzZTsKICAgICBTdHJpbmcgcm9sZTsKICAgICBib29sIHNlbGVjdGVkID0gZmFsc2U7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IHNlbGVjdGVkQ2hpbGROb2Rl
SWRzOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRz
OwogICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0V4
cGFuZGVkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24gPSBmYWxzZTsKQEAg
LTE3NTAsNyArMTc1MCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICBW
ZWN0b3I8RWxlbWVudCo+IGNvbnRyb2xsZWRFbGVtZW50czsKICAgICAgICAgICAgIGF4T2JqZWN0
LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoY29udHJvbGxlZEVsZW1lbnRzLCBhcmlhX2NvbnRyb2xz
QXR0cik7CiAgICAgICAgICAgICBpZiAoY29udHJvbGxlZEVsZW1lbnRzLnNpemUoKSkgewotICAg
ICAgICAgICAgICAgIGNvbnRyb2xsZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgY29udHJvbGxlZE5vZGVJZHMgPSBK
U09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoRWxlbWVu
dCogY29udHJvbGxlZEVsZW1lbnQgOiBjb250cm9sbGVkRWxlbWVudHMpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRyb2xsZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
Y29udHJvbGxlZEVsZW1lbnQpKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODksNyArMTc4OSw3IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGZs
b3dlZEVsZW1lbnRzOwogICAgICAgICAgICAgYXhPYmplY3QtPmVsZW1lbnRzRnJvbUF0dHJpYnV0
ZShmbG93ZWRFbGVtZW50cywgYXJpYV9mbG93dG9BdHRyKTsKICAgICAgICAgICAgIGlmIChmbG93
ZWRFbGVtZW50cy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAg
Zmxvd2VkTm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAg
ICAgICAgZm9yIChFbGVtZW50KiBmbG93ZWRFbGVtZW50IDogZmxvd2VkRWxlbWVudHMpCiAgICAg
ICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZChmbG93ZWRFbGVtZW50KSk7CiAgICAgICAgICAgICB9CkBAIC0xODI4LDcgKzE4MjgsNyBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXJp
YVJlbGV2YW50QWRkaXRpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVn
aW9uUmVsZXZhbnQ6OkFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlh
UmVsZXZhbnRSZW1vdmFscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6TGl2ZVJlZ2lv
blJlbGV2YW50OjpSZW1vdmFscyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRUZXh0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZh
bnQ6OlRleHQpOwotICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUo
KTsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0g
U3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgICAgICAgICAvLyBAYXJpYS1yZWxldmFudD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRp
b25zIiwicmVtb3ZhbHMiLCJ0ZXh0Il0sIGluIG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIG9yZGVyIGlzIGNvbnRyb2xsZWQgaW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2Vi
SW5zcGVjdG9yVUkuCkBAIC0xODYwLDcgKzE4NjAsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aQogICAgICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gb3duZWRFbGVtZW50czsKICAgICAg
ICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKG93bmVkRWxlbWVudHMs
IGFyaWFfb3duc0F0dHIpOwogICAgICAgICAgICAgICAgIGlmIChvd25lZEVsZW1lbnRzLnNpemUo
KSkgewotICAgICAgICAgICAgICAgICAgICBvd25lZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgb3duZWROb2Rl
SWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChFbGVtZW50KiBvd25lZEVsZW1lbnQgOiBvd25lZEVsZW1lbnRzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgb3duZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
b3duZWRFbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTg4Niw3ICsxODg2LDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICAg
ICAgYXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAg
ICAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBzZWxl
Y3RlZENoaWxkTm9kZUlkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0
ZSgpOworICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlP
ZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdGVkQ2hp
bGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChO
b2RlKiBzZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5vZGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzLT5hZGRJdGVtKHB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQoc2VsZWN0ZWRDaGlsZE5vZGUpKTsKQEAgLTIxNDEsNyArMjE0MSw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0
eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMp
CiB7Ci0gICAgYXV0byBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6
Y3JlYXRlKCk7CisgICAgYXV0byBub2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUo
KTsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICBpbnQgaWQg
PSBib3VuZE5vZGVJZChlbGVtZW50KTsKICAgICAgICAgLy8gSWYgbm9kZSBpcyBub3QgbWFwcGVk
IHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGMyMDcxZDlhNjJjYjg4OGIzNDJm
ZGFkNzE4ZWNlYWExZTM1ZDFmN2QuLjBkMDAyYmFhYWQxMGQyNzA5ZjgyODliYWQyMTY0ZjRlODIw
M2UyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXRo
b2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCiAg
ICAgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVudElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHF1ZXJ5
U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1bHQpIG92
ZXJyaWRlOworICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYg
cmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nJiwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBp
bnQqIGRlcHRoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3Ry
aW5nJiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBvdmVycmlkZTsKQEAgLTEyMywxNCArMTIzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJI
VE1MKSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydEFkamFjZW50SFRNTChFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVu
ZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBjb25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJh
eSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJp
bmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkLCBib29sIGRpc2FibGVkKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1TZWFyY2go
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0
IEpTT046OkFycmF5KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRT
ZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZy
b21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgc2VhcmNoSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRJbnNw
ZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IEpTT046Ok9i
amVjdCogaGlnaGxpZ2h0Q29uZmlnKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CkBAIC0yMzEsMTIgKzIzMSwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQs
IGludCBkZXB0aCA9IDEpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0g
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JF
bGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0
IEVsZW1lbnQmLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFJlZjxKU09OOjpBcnJheU9m
PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CisgICAg
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2Rl
VG9JZE1hcCogbm9kZXNNYXApOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBF
bGVtZW50JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQsIGJv
b2wgZGlzYWJsZWQgPSBmYWxzZSk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXMoTm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PGludD4+JiYpOworICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4m
Jik7CiAgICAgCiAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAg
ICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHAKaW5kZXggZjExOTI5ZmJjYjU1ZDhkYWIyNjlkOGU4NTEyMWFmODkyYjcw
NGQwMi4uY2YwYjI4NGVkYmMyZGQ2MmIzNDQxMDY2NjM3NWE5YTFkNmVmY2FlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+PiYgaXRlbXMpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9N
U3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0
JiBzdG9yYWdlSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+
JiBpdGVtcykKIHsKICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFt
ZSk7CkBAIC05NywxMyArOTcsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Omdl
dERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgp
OworICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSlNPTjo6QXJyYXlPZjxKU09OOjpBcnJheU9mPFN0
cmluZz4+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdl
QXJlYS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEt
PmtleShpKTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsK
IAotICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46
OmNyZWF0ZSgpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAgICAgICBlbnRyeS0+
YWRkSXRlbSh2YWx1ZSk7CiAgICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRlbShXVEZNb3ZlKGVu
dHJ5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCA1NzdjMmU3MmUyZWJkNTg0MTU2OGQ4OTZi
YWIxNjE2MGYwZmVjM2NmLi4yODllNDYzYTY0OTdjYTJlNzZlNTVmNTNhYTVmOGZjMTJiOThmYTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVj
dCYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3Jh
Z2VJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6QXJyYXlPZjxTdHJpbmc+Pj4mIGl0ZW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29u
c3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9y
U3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggMmM3NzBmNmJiMGE5Zjk3ZjY1
YzMxNjEwNTY2NzBjNGU1MjhiNjc0OS4uNmVjYjdjZTkxYzMxYjU2ODUwYWVhZTU4YWMxNjliNmM5
NDNjMTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC04MywxMSArODMsMTEgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIGF1dG8mIHJvd0xpc3QgPSByZXN1bHRTZXQucm93cygpOwogCi0g
ICAgICAgIGF1dG8gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBjb2x1bW5OYW1lcyA9IEpTT046OkFycmF5T2Y8
U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgY29sdW1uIDogcm93TGlzdC5j
b2x1bW5OYW1lcygpKQogICAgICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uKTsK
IAotICAgICAgICBhdXRvIHZhbHVlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gdmFsdWVzID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcm93TGlz
dC52YWx1ZXMoKSkgewogICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9IFdURjo6c3dp
dGNoT24odmFsdWUsCiAgICAgICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
eyByZXR1cm4gSlNPTjo6VmFsdWU6Om51bGwoKTsgfSwKQEAgLTI1NiwxNCArMjU2LDE0IEBAIHZv
aWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9l
bmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0
YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQor
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JT
dHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPFN0cmluZz4+JiBuYW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICBl
cnJvciA9IEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgbmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogCiAgICAgaWYgKGF1dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChk
YXRhYmFzZUlkKSkgewogICAgICAgICBmb3IgKGF1dG8mIHRhYmxlTmFtZSA6IGRhdGFiYXNlLT50
YWJsZU5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDlhODU1OTg5YTcxZDVhZmEyM2JmYjM3
MDA1NmM2ODI5OGVjM2I0ZjUuLjk0NjEyN2Y0NjRmYzdhMDAyZTkzODYzMzc1MjJiOGNkYzA4OTdj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgbmFt
ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiYgbmFtZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1dGVT
UUxDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0
ZWQgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA4ZTQ0YjA2MDI2YWU1ZTk3ZjBj
MGZhY2U3MTQ3YjJiMDUxZTRhOGMxLi40NjVjMzkxMWJhZTZhMWQwZGFiNWVhYzk3YzJiZTMwN2M5
ZjMwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjksNyArNjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNp
bmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk7Cit1c2luZyBKU09OOjpBcnJheU9mOwogdXNp
bmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9y
ZXM7CiB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKIHVz
aW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OwpAQCAtMTc2LDcgKzE3Niw3
IEBAIHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhz
dHJpbmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmVjdG9yKSB7Ci0gICAgICAgIGF1dG8gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBhcnJheSA9IEpTT046
OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyaW5nIDog
dmVjdG9yKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKICAgICAgICAgUmVm
UHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6
OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgCiAgICAgICAgIGF1dG8mIGRhdGFiYXNlSW5mbyA9IGRh
dGFiYXNlLmluZm8oKTsKLSAgICAgICAgYXV0byBvYmplY3RTdG9yZXMgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
Pjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb2JqZWN0U3RvcmVzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGF1dG8gb2JqZWN0U3RvcmVOYW1lcyA9IGRhdGFiYXNlSW5mby5vYmplY3RTdG9yZU5h
bWVzKCk7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IG9iamVjdFN0b3JlTmFtZXMpIHsKICAg
ICAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGRhdGFiYXNlSW5mby5pbmZvRm9yRXhp
c3RpbmdPYmplY3RTdG9yZShuYW1lKTsKICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmVJbmZv
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGluZGV4ZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlSW5kZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhl
cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RT
dG9yZUluZGV4Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGluZGV4
SW5mbyA6IG9iamVjdFN0b3JlSW5mby0+aW5kZXhNYXAoKS52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gb2JqZWN0U3RvcmVJbmRleCA9IE9iamVjdFN0b3JlSW5kZXg6OmNyZWF0ZSgp
CkBAIC00MTksMTQgKzQxOSwxNCBAQCBwcml2YXRlOgogICAgICAgICA6IEV2ZW50TGlzdGVuZXIo
RXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgICAgICwgbV9pbmplY3Rl
ZFNjcmlwdChpbmplY3RlZFNjcmlwdCkKICAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZN
b3ZlKHJlcXVlc3RDYWxsYmFjaykpCi0gICAgICAgICwgbV9yZXN1bHQoQXJyYXk8RGF0YUVudHJ5
Pjo6Y3JlYXRlKCkpCisgICAgICAgICwgbV9yZXN1bHQoSlNPTjo6QXJyYXlPZjxEYXRhRW50cnk+
OjpjcmVhdGUoKSkKICAgICAgICAgLCBtX3NraXBDb3VudChza2lwQ291bnQpCiAgICAgICAgICwg
bV9wYWdlU2l6ZShwYWdlU2l6ZSkKICAgICB7CiAgICAgfQogICAgIEluamVjdGVkU2NyaXB0IG1f
aW5qZWN0ZWRTY3JpcHQ7CiAgICAgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENh
bGxiYWNrOwotICAgIFJlZjxBcnJheTxEYXRhRW50cnk+PiBtX3Jlc3VsdDsKKyAgICBSZWY8SlNP
Tjo6QXJyYXlPZjxEYXRhRW50cnk+PiBtX3Jlc3VsdDsKICAgICBpbnQgbV9za2lwQ291bnQ7CiAg
ICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKIH07CkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb24KICAgICAgICAgaWYgKCFjYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4gZGF0YWJhc2VOYW1lQXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gZGF0
YWJhc2VOYW1lQXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAg
ICBmb3IgKGF1dG8mIGRhdGFiYXNlTmFtZSA6IGRhdGFiYXNlTmFtZXMpCiAgICAgICAgICAgICBk
YXRhYmFzZU5hbWVBcnJheS0+YWRkSXRlbShkYXRhYmFzZU5hbWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCmluZGV4IGRjNmZhOWViMzUzZTE4YmIyZDgwNzE0YTI3MjkwMjJiNjkxZjExOWIuLmMx
YWIwZTMxOWVkODIzOWNlZDdkOTNkYzVjMzRlZmMwYWNjOTZlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCkBAIC0xMDIsOSArMTAyLDkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW4KICAgICB1
bmJpbmRQc2V1ZG9FbGVtZW50KCZwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6
OkxheWVyPj4mIGxheWVycykKIHsKLSAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7Cisg
ICAgbGF5ZXJzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6
OkxheWVyPjo6Y3JlYXRlKCk7CiAKICAgICBhdXRvKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9k
ZSkgewpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Omxh
eWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgICAg
IGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpLCBsYXllcnMpOwogfQogCi12b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVu
ZGVyZXIuaGFzTGF5ZXIoKSkgewogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVy
SGllcmFyY2h5KGVycm9yU3RyaW5nLCBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0Pihy
ZW5kZXJlcikubGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShlcnJvclN0cmluZywgY2hpbGQsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6Okxh
eWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVy
c1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXll
ci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckxheWVyKGVycm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4
IDEwODdjZjcyNjM2N2FlYmE0ZWNiNTdiNzQ5NGE3MjU4OWY3YTIzNTQuLjg5NTc3OWUzMGQzZjE0
Nzk5N2RkZjMzZGVkMDViM2M1Mjc3NWRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXll
cnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgbGF5ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6Q29tcG9z
aXRpbmdSZWFzb25zPiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtNzEsOCArNzEsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBiaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAgdm9pZCB1
bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdS
ZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBSZW5kZXJFbGVtZW50JiwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJl
ZTo6TGF5ZXI+PiYpOwotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJh
cmNoeShFcnJvclN0cmluZyYsIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAg
IHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcm
LCBSZW5kZXJFbGVtZW50JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRl
ckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAogICAg
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZv
ckxheWVyKEVycm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3Qg
SW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBlMjdjZDI2NzI3N2QyMGIzMDlkNmEwZTlj
NmEyNGUxMmNkMGNiYTJmLi5jZWM4M2JiZmFmZWU0MjI0YzE2Mzg5MzZjNjUxMjUyOTY1MWZjM2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6OmNvbGxlY3RTYW1wbGUoY29uc3QgUmVzb3VyY2VVc2FnZURhdGEmIGRhdGEpCiAg
ICAgICAgIC5zZXRTaXplKGRhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6T3RoZXJdLnRv
dGFsU2l6ZSgpKQogICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgYXV0byBjYXRlZ29yaWVzID0g
UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpNZW1vcnk6OkNhdGVnb3J5RGF0YT46OmNyZWF0ZSgp
OworICAgIGF1dG8gY2F0ZWdvcmllcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6Ok1lbW9yeTo6
Q2F0ZWdvcnlEYXRhPjo6Y3JlYXRlKCk7CiAgICAgY2F0ZWdvcmllcy0+YWRkSXRlbShXVEZNb3Zl
KGphdmFzY3JpcHRDYXRlZ29yeSkpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShq
aXRDYXRlZ29yeSkpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShpbWFnZXNDYXRl
Z29yeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGY1YmQzNWE5ZjFiMzc2NmZiZjE1NWZkYjcw
YWIxMTNmYjg3MzJlYzguLjI0YjU4ZTIyZWZjYjc1MTYzZTU0MDVjYmNlYWY1OTE5NjRjNDZiYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hS
ZXN1bHQoYwogICAgIHJldHVybiBzZWFyY2hSZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mIHJlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24mIHJlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0KQogewogICAgIFZlY3RvcjxOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzID0gbV9yZXNvdXJjZXNE
YXRhLT5yZXNvdXJjZXMoKTsKICAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNl
cykgewpAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFy
Y2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3NpCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFy
Y2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaElu
UmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShyZXF1
ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA0OWYy
MDhmODJkN2Y5MTYxZDg1ZmMwN2MxYzMxNzdhZGRhMDEzYThjLi45NzU2OGNkZTc0M2RkZDU5ZTg2
OGEwZGUxNDdkZDdjZGM2OGEzMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw4ICsxMDEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNj
aGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHNlYXJjaE90
aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFy
Y2hSZXN1bHQ+PiYpOwotICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNp
dGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdm9p
ZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24m
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+PiYpOworICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2
ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3Vt
ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBjMzUxNTk2OTQ3OTcwMWU2Y2NhOGZiMTJlNzFlMGYw
YTFkOTUzNDU1Li4yY2E0ZGViOWMwNzZlYzVkZjMwYmE2MWFmZDExNzE3MWFiYzIzMmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC00MjYsOSArNDI2LDkgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29v
a2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKK3N0YXRpYyBSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9y
Q29va2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNv
b2tpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9y
IChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRk
SXRlbShidWlsZE9iamVjdEZvckNvb2tpZShjb29raWUpKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBz
dGF0aWMgVmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29v
a2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykKK3ZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8g
SWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nv
b2tpZXNMaXN0OwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFyCiAg
ICAgaWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJy
YXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpD
b29raWU+OjpjcmVhdGUoKTsKKyAgICAgICAgY29va2llcyA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNTU1LDkgKzU1NSw5IEBAIHN0YXRpYyBi
b29sIHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlLCBTdHJpbmcqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
JiByZXN1bHRzKQogewotICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7
CisgICAgcmVzdWx0cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0
aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUg
OiBmYWxzZTsKQEAgLTYwNSw5ICs2MDUsOSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAg
ICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5S
ZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1Jl
Z2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0
Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9
IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNh
c2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlIDogZmFsc2U7CkBAIC04MzEsNyArODMxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWMK
ICAgICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFt
ZSk7Ci0gICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAg
YXV0byBzdWJyZXNvdXJjZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lUmVzb3VyY2U+OjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAu
c2V0RnJhbWUoV1RGTW92ZShmcmFtZU9iamVjdCkpCiAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3Vi
cmVzb3VyY2VzLmNvcHlSZWYoKSkKQEAgLTg1NiwxMCArODU2LDEwIEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50Ojpi
dWlsZE9iamVjCiAgICAgICAgIHN1YnJlc291cmNlcy0+YWRkSXRlbShXVEZNb3ZlKHJlc291cmNl
T2JqZWN0KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5B
cnJheTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hp
bGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewotICAg
ICAgICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjaGlsZHJlbkFycmF5ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgcmVzdWx0
LT5zZXRDaGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAgICAgICAgfQogICAgICAgICBjaGls
ZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCA2NTAzOTU4YTVmNjM1NmViNDQxZDNlMTM2YTBiZWU5ZDUwMmEwZjFhLi41ZDU5NmY3
ZDEwYzI3ZjMwMmU0MzVmZDMyZDIxMTM2YzA5ZDMyZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkyLDEyICs5
MiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bFJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmV2YWxpZGF0ZUFs
bFJlc291cmNlcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJp
bmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Q29va2ll
cyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1
cmwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBi
YXNlNjRFbmNvZGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBpc1JlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Uo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25z
dCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wq
IGNvbnN0IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wg
c2hvdykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRl
eCBhMDViYmFiN2VkYTY4YTczYmQ2ZTQ2MGQwYjQyMDUzNjRjYjJlODAxLi42OWUwOTRhNjdlMjNl
ZWRmZDc1ZTFlMTRlOTcxMzkzZjQ2NGNiNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFdl
YkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCwgSW5z
cGVjdG9ySGVhcEFnZW50KiBoZWFwCiB7CiB9CiAKLXZvaWQgV2ViQ29uc29sZUFnZW50OjpnZXRM
b2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JiBjaGFubmVscykK
K3ZvaWQgV2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
Pj4mIGNoYW5uZWxzKQogewogICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ2hhbm5lbFRhYmxlIHsK
ICAgICAgICAgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lOwpAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIFdlYkNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jbwogICAgICAgICB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJNZWRpYSIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpN
ZWRpYSB9LAogICAgIH07CiAKLSAgICBjaGFubmVscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAg
ICBjaGFubmVscyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2hhbm5lbD46OmNyZWF0ZSgpOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IFdURl9BUlJBWV9MRU5H
VEgoY2hhbm5lbFRhYmxlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNv
bGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuaAppbmRleCBhYWYyMTMyNzA4Njc4NzUzZTdmNTY5NzFjNWM5MzEyOWJmYWRkM2YyLi4wYzhj
OTg5N2FiMWM2NThkMDU3YTA0NGIzODE0NjcxODE5OWVhNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqKTsK
IAotICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5u
ZWw+PiYpIGZpbmFsOworICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bD4+JikgZmluYWw7CiAgICAgdm9pZCBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjaGFubmVsLCBjb25zdCBTdHJpbmcmIGxldmVsKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
OTY4NzljMzg2OGI5NGRjYTA1MjhiNDczMjRkNzNlMTU0ZDBkNWU2My4uNTdiM2I2NGQxZThmZTZi
M2FhNzRiMzIyYjhiOGYwMTA0ZmRhZWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIz
Myw3ICsyMzMsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3Np
bmdDb250ZXh0PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YnVpbAogCiAvLyBQbGF0Zm9ybS1pbmRl
cGVuZGVudCBDb21tYW5kcy4KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0TmV4dENv
bnRleHQoUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uPiYmIHByb3RlY3RlZFRoaXMsIFZlY3RvcjxS
ZWY8V2ViUGFnZVByb3h5Pj4mJiBwYWdlcywgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+IGNvbnRl
eHRzLCBSZWY8V2ViQXV0b21hdGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFj
az4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0
KFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiBwcm90ZWN0ZWRUaGlzLCBWZWN0b3I8UmVmPFdl
YlBhZ2VQcm94eT4+JiYgcGFnZXMsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+IGNvbnRleHRzLCBSZWY8V2ViQXV0b21h
dGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAocGFnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vz
cyhXVEZNb3ZlKGNvbnRleHRzKSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0cyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBnZXROZXh0Q29udGV4dChtYWtl
UmVmKCp0aGlzKSwgV1RGTW92ZShwYWdlcyksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgZ2V0TmV4dENvbnRleHQobWFrZVJlZigqdGhpcyks
IFdURk1vdmUocGFnZXMpLCBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxH
ZXRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTExMTcsOSArMTExNyw5
IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29va2llPiBi
dWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBXCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2ll
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvckNvb2tpZShjb29raWUpKTsKQEAgLTEyNDAsOSArMTI0
MCw5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgY29va2llTWFuYWdlci0+ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
YWN0aXZlVVJMLmhvc3QoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNl
c3Npb25QZXJtaXNzaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lv
bkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0
U2Vzc2lvblBlcm1pc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91
dF9wZXJtaXNzaW9ucykKIHsKLSAgICBhdXRvIHBlcm1pc3Npb25zT2JqZWN0QXJyYXkgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpT
ZXNzaW9uUGVybWlzc2lvbkRhdGE+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHBlcm1pc3Npb25zT2Jq
ZWN0QXJyYXkgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlNlc3Npb25QZXJtaXNzaW9uRGF0YT46OmNyZWF0ZSgpOwogICAgIGF1dG8gZ2V0VXNlck1lZGlh
UGVybWlzc2lvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Np
b25QZXJtaXNzaW9uRGF0YTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFBlcm1pc3Npb24oSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb246OkdldFVzZXJNZWRp
YSkKICAgICAgICAgLnNldFZhbHVlKG1fcGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uaAppbmRleCAzODQ5Njc5MmJlOTkzYjlhOTRjMDRhZWEyMjkxYjk5YTA0OTQ4MTU1
Li5iMWRiMTJiMTkzZjM1MzMxYzg3NTcwZGY0ZGIzODQxYTM5ZTMwNGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlU2luZ2xl
Q29va2llKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29v
a2llQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkU2luZ2xlQ29va2llKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwg
Y29uc3QgSlNPTjo6T2JqZWN0JiBjb29raWUsIFJlZjxBZGRTaW5nbGVDb29raWVDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRTZXNzaW9uUGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldFNlc3Npb25QZXJtaXNzaW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRTZXNzaW9uUGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0
IEpTT046OkFycmF5JiBpbl9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9y
bTogbWFjT1MKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSog
d2ViUGFnZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVG
b3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5Jik7CiAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gYnVpbGRCcm93c2luZ0NvbnRl
eHRGb3JQYWdlKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSk7
Ci0gICAgdm9pZCBnZXROZXh0Q29udGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZl
Y3RvcjxSZWY8V2ViUGFnZVByb3h5Pj4mJiwgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+LCBSZWY8
V2ViQXV0b21hdGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJik7Cisg
ICAgdm9pZCBnZXROZXh0Q29udGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZlY3Rv
cjxSZWY8V2ViUGFnZVByb3h5Pj4mJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pj4sIFJlZjxXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmKTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHdlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWludDY0X3QgZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWYwYjk1ZDZlZDFmOTZjZGE2
ZjljMWQ1YjY3YjRkMzlkNGQ2YzFhYS4uMGExNWUxYzRkNTE5NDk1ZTQxMjJiNjAwMWM2YTUxMDE0
ZWNhNWY3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8VD4gdG8gSlNPTiBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBkdXBsaWNhdGUgdGVzdCBjYXNlcyBmb3IgSlNPTjo6QXJy
YXlPZjxUPiBiYXNlZCBvbiBKU09OOjpBcnJheS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0pTT05WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KwogMjAxNy0xMS0zMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBZGQgYSBzY3JpcHQgZm9yIGF1dG9tYXRpY2FsbHkgcnVubmluZyB0
aGUgYnVpbGRib3QgY29uZmlndXJhdGlvbnMgb24gYSB0ZXN0IGVudmlyb25tZW50LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1ZS5jcHAKaW5kZXggNTliYmY4NDMxNWFj
YTE3OTI0ZTkxMTg0YzFjZmZmYjFlZmE5NDFiYS4uOWMwZmYxYzcxYTMzOWUyOTcxNGEyNzA5YTVl
Yjc5N2M0ZTk4ZmVkNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SlNPTlZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFs
dWUuY3BwCkBAIC0xMzMsNiArMTMzLDEyIEBAIFRFU1QoSlNPTlZhbHVlLCBDb25zdHJ1Y3QpCiAg
ICAgICAgIEVYUEVDVF9UUlVFKG9iamVjdC0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpP
YmplY3QpOwogICAgICAgICBFWFBFQ1RfRVEob2JqZWN0LT5zaXplKCksIDApOwogICAgIH0KKwor
ICAgIHsKKyAgICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRl
KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFycmF5LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5
cGU6OkFycmF5KTsKKyAgICAgICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgMFUpOworICAg
IH0KIH0KIAogVEVTVChKU09OQXJyYXksIEJhc2ljKQpAQCAtMjI5LDYgKzIzNSw5NSBAQCBURVNU
KEpTT05BcnJheSwgQmFzaWMpCiAgICAgRVhQRUNUX1RSVUUoaXQgPT0gYXJyYXktPmVuZCgpKTsK
IH0KIAorVEVTVChKU09OQXJyYXlPZiwgQmFzaWMpCit7CisgICAgUmVmPEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+PiBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUo
KTsKKworICAgIGFycmF5LT5hZGRJdGVtKEpTT046OlZhbHVlOjpudWxsKCkpOworICAgIEVYUEVD
VF9FUShhcnJheS0+bGVuZ3RoKCksIDFVKTsKKyAgICBhdXRvIHZhbHVlID0gYXJyYXktPmdldCgw
KTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+aXNOdWxsKCkpOworCisgICAgLy8gTm90ZTogYWRk
SXRlbShib29sKSBpcyBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCB3b3VsZCBiZSBhbWJpZ3Vv
dXMKKyAgICAvLyB3aXRoIGFkZEl0ZW0oUmVmUHRyPFQ+KSwgYW5kIHRoZSBsYXR0ZXIgaXMgbXVj
aCBtb3JlIGNvbW1vbiB0byBkby4KKworICAgIGFycmF5LT5hZGRJdGVtKDEpOworICAgIEVYUEVD
VF9FUShhcnJheS0+bGVuZ3RoKCksIDNVKTsKKyAgICB2YWx1ZSA9IGFycmF5LT5nZXQoMik7Cisg
ICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdl
cik7CisgICAgaW50IGludGVnZXJWYWx1ZTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+YXNJbnRl
Z2VyKGludGVnZXJWYWx1ZSkpOworICAgIEVYUEVDVF9FUShpbnRlZ2VyVmFsdWUsIDEpOworCisg
ICAgYXJyYXktPmFkZEl0ZW0oMS41KTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCA0
VSk7CisgICAgdmFsdWUgPSBhcnJheS0+Z2V0KDMpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50
eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkRvdWJsZSk7CisgICAgZG91YmxlIGRvdWJsZVZh
bHVlOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5hc0RvdWJsZShkb3VibGVWYWx1ZSkpOworICAg
IEVYUEVDVF9FUShkb3VibGVWYWx1ZSwgMS41KTsKKworICAgIGFycmF5LT5hZGRJdGVtKCJ3ZWJr
aXQiKTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCA1VSk7CisgICAgdmFsdWUgPSBh
cnJheS0+Z2V0KDQpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFs
dWU6OlR5cGU6OlN0cmluZyk7CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlOworICAgIEVYUEVDVF9U
UlVFKHZhbHVlLT5hc1N0cmluZyhzdHJpbmdWYWx1ZSkpOworICAgIEVYUEVDVF9FUShzdHJpbmdW
YWx1ZSwgIndlYmtpdCIpOworCisgICAgYXJyYXktPmFkZEl0ZW0oSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKSk7CisgICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgNlUpOworICAgIHZhbHVlID0g
YXJyYXktPmdldCg1KTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZh
bHVlOjpUeXBlOjpPYmplY3QpOworICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdFZhbHVl
OworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5hc09iamVjdChvYmplY3RWYWx1ZSkpOworICAgIEVY
UEVDVF9FUShvYmplY3RWYWx1ZS0+c2l6ZSgpLCAwKTsKKworICAgIGFycmF5LT5hZGRJdGVtKEpT
T046OkFycmF5OjpjcmVhdGUoKSk7CisgICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgN1Up
OworICAgIHZhbHVlID0gYXJyYXktPmdldCg2KTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlw
ZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSk7CisgICAgUmVmUHRyPEpTT046OkFycmF5
PiBhcnJheVZhbHVlOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5hc0FycmF5KGFycmF5VmFsdWUp
KTsKKyAgICBFWFBFQ1RfRVEoYXJyYXlWYWx1ZS0+bGVuZ3RoKCksIDBVKTsKKworICAgIGF1dG8g
aXQgPSBhcnJheS0+YmVnaW4oKTsKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1Rf
VFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpOdWxsKTsKKyAgICArK2l0
OworICAgIEVYUEVDVF9GQUxTRShpdCA9PSBhcnJheS0+ZW5kKCkpOworCisgICAgdmFsdWUgPSBp
dC0+Z2V0KCk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6
VHlwZTo6Qm9vbGVhbik7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRkFMU0UoaXQgPT0gYXJyYXkt
PmVuZCgpKTsKKworICAgIHZhbHVlID0gaXQtPmdldCgpOworICAgIEVYUEVDVF9UUlVFKHZhbHVl
LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkludGVnZXIpOworICAgICsraXQ7CisgICAg
RVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQo
KTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpE
b3VibGUpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7
CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgp
ID09IEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmcpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZB
TFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBF
WFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpOwor
ICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2
YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046
OlZhbHVlOjpUeXBlOjpBcnJheSk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfVFJVRShpdCA9PSBh
cnJheS0+ZW5kKCkpOworfQorCiBURVNUKEpTT05PYmplY3QsIEJhc2ljKQogewogICAgIFJlZjxK
U09OOjpPYmplY3Q+IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328058</attachid>
            <date>2017-11-30 16:56:19 -0800</date>
            <delta_ts>2017-12-01 11:15:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173662-20171130165618.patch</filename>
            <type>text/plain</type>
            <size>194797</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZTk3N2YyNDZjZjFlZWJkNWNjY2QxMmIzMmFlMzA2Y2E5MTJiM2UwLi4xNzJiZTk1YTVhNWJhMDEx
MGQ1MWMyODZiZWI2OWZlYTBlMDhjZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFQ+
IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4gRml4IHByb3RvY29sIGdlbmVyYXRvciB0
byB1c2UgY29ycmVjdCB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQpOgorICAgICAgICBJbXByb3ZlIG5hbWluZ3MgYW5kIHVzZSAnYXV0bycgd2hlbiB0aGUg
dHlwZSBpcyBvYnZpb3VzIGFuZCByZXBlYXRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENv
bGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOgorICAgICAg
ICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+Pjo6
cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk6OkFycmF5
KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OjpvcGVuQWNj
ZXNzb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojph
ZGRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1Ry
YWl0czxQcm90b2NvbDo6QXJyYXk8VD4+OjpydW50aW1lQ2FzdCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSB0aGUg
aW1wbGVtZW50YXRpb24gb3V0IG9mIHRoaXMgZmlsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21h
aW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURv
bWFpbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2Nrcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFNhbXBsZXMpOgorICAg
ICAgICBVc2UgbW9yZSAnYXV0bycgYW5kIHJlbmFtZSBhIHZhcmlhYmxlLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3Bw
R2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKToKKyAgICAgICAgQWRvcHQgbmV3
IHR5cGUgbmFtZXMuIFRoaXMgZXhwb3NlZCBhIGxhdGVudCBidWcgd2hlcmUgd2Ugc2hvdWxkIGhh
dmUgYmVlbgorICAgICAgICB1bndyYXBwaW5nIGFuIEFsaWFzZWRUeXBlIHByaW9yIHRvIGdlbmVy
YXRpbmcgYSBDKysgdHlwZSBmb3IgaXQuIFRoZSBhbGlhc2VkCisgICAgICAgIHR5cGUgbWF5IGJl
IGFuIGFycmF5LCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSB3cm9u
ZyB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5OgorICAgICAgICAoX2dlbmVyYXRlX3R5cGVkZWZz
X2Zvcl9kb21haW4uSlNPTik6CisgICAgICAgIChfZ2VuZXJhdGVfdHlwZWRlZnNfZm9yX2RvbWFp
bi5JbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5
cGVfZm9yX3R5cGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9y
dF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICBSZWJh
c2VsaW5lLgorCisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVNldDo6YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVTZXQuaDoKKwogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXVtGVExdIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eSBkb2VzIG5vdCBjb25zaWRlciBuZWdhdGl2ZSBpbnQzMl90CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI5MzAxN2I3
N2YzNjcwYjM1ZWQ3MjhmYTBkMWE1OGJkNDgyOTFjZmQuLjVhMWRlMTEyNGQ0ZDBkMWEzY2VjMDM5
ODBlMzc2OWUwMmQ0NDcwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTEtMzAgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxUPiB0byBKU09OOjpBcnJheU9mPFQ+LgorCisgICAgICAgICogd3RmL0pT
T05WYWx1ZXMuaDoKKyAgICAgICAgKFdURjo6SlNPTkltcGw6OkFycmF5T2Y6OkFycmF5T2YpOgor
ICAgICAgICAoV1RGOjpKU09OSW1wbDo6QXJyYXlPZjo6b3BlbkFjY2Vzc29ycyk6CisgICAgICAg
IChXVEY6OkpTT05JbXBsOjpBcnJheU9mOjphZGRJdGVtKToKKyAgICAgICAgKFdURjo6SlNPTklt
cGw6OkFycmF5T2Y6OmNyZWF0ZSk6CisKIDIwMTctMTEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3B1bGF0ZSBzZWxmLnJlZ2lzdHJhdGlvbi5pbnN0YWxs
aW5nL3dhaXRpbmcvYWN0aXZlIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDg3NGNjZmJiMzViZjI5ZDk5MTMyY2QxNzI3MDQ1YThhNDE4NGE3Li43MjcxMzE4NGE0ZDU0ZDE2
ZTA3MTE2N2VkZDVjNTliZmI0NWZiZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisy
MDE3LTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8VD4gdG8gSlNPTiBuYW1l
c3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
b3B0IG5ldyB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VGcmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
QXJyYXlGb3JWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWls
ZEluaXRpYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZv
ckNhbnZhc0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVp
bGRBcnJheUZvckNhbnZhc1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdlQml0bWFwKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZE9iamVjdEZvckVsZW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmJ1aWxkSGlnaGxpZ2h0T2JqZWN0Rm9yTm9kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMg
Y29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsbE1lZGlhTGlzdENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpi
dWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVj
dG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnJlcXVlc3RDU1NDYW52YXNDbGllbnROb2Rlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZv
clBzZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
cm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRl
bXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNl
VGFibGVOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVz
dERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmxheWVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRl
ckxheWVySGllcmFyY2h5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y29s
bGVjdFNhbXBsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFy
Y2hPdGhlclJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2VhcmNoSW5SZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29raWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oOgorCiAyMDE3LTExLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIC8gU1dTZXJ2ZXJXb3JrZXIgZG8gbm90IG5lZWQgdG8gYmUgVGhyZWFkU2FmZVJlZkNv
dW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODRkZmI2YzY2NjFhMzk3NDA1MWE0M2U4OGM0NzFlNmI3N2MxNzdj
Mi4uMmU2YjhkYTczYTA1ODI5MmViYzU5YTlhNTVlZThjNGQ5MzRkZTVkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFQ+IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dHMpOgorICAgICAgICAoV2Vi
S2l0OjpidWlsZEFycmF5Rm9yQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpnZXRTZXNzaW9uUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisKIDIwMTctMTEtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIHJlbW92ZSB1bm5lZWRlZCBS
ZXRhaW5QdHIgdXNlIGludHJvZHVjZWQgaW4gcjIyNTE0MgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCAwNDQzMGFiYjY2NTBj
ZTllNWY4ZTI1YWZkMWRmMmIyNWI0OTNlNGE1Li5jMDI4YWNhOTIwMTUzNDc2M2Y5OTNiZmI1OGQw
OTJiMTJkNzI4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTcyLDI2ICsxNzIsMjYgQEAgc3RhdGljIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxW
YWx1ZShNZXMKIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7
Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBq
c29uT2JqID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNy
ZWF0ZSgpCisgICAgYXV0byBtZXNzYWdlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2Fn
ZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZh
bHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2UpCiAgICAgICAgIC5yZWxl
YXNlKCk7CiAKICAgICAvLyBGSVhNRTogb25seSBzZW5kIG91dCB0eXBlIGZvciBDb25zb2xlQVBJ
IHNvdXJjZSBtZXNzYWdlcy4KLSAgICBqc29uT2JqLT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFsdWUo
bV90eXBlKSk7Ci0gICAganNvbk9iai0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkp
OwotICAgIGpzb25PYmotPnNldENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7Ci0g
ICAganNvbk9iai0+c2V0VXJsKG1fdXJsKTsKLSAgICBqc29uT2JqLT5zZXRSZXBlYXRDb3VudChz
dGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRU
eXBlKG1lc3NhZ2VUeXBlVmFsdWUobV90eXBlKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0TGlu
ZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOworICAgIG1lc3NhZ2VPYmplY3QtPnNldENvbHVt
bihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0VXJs
KG1fdXJsKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxp
bnQ+KG1fcmVwZWF0Q291bnQpKTsKIAogICAgIGlmIChtX3NvdXJjZSA9PSBNZXNzYWdlU291cmNl
OjpOZXR3b3JrICYmICFtX3JlcXVlc3RJZC5pc0VtcHR5KCkpCi0gICAgICAgIGpzb25PYmotPnNl
dE5ldHdvcmtSZXF1ZXN0SWQobV9yZXF1ZXN0SWQpOworICAgICAgICBtZXNzYWdlT2JqZWN0LT5z
ZXROZXR3b3JrUmVxdWVzdElkKG1fcmVxdWVzdElkKTsKIAogICAgIGlmIChtX2FyZ3VtZW50cyAm
JiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
KG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJn
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudHNP
YmplY3QgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBNZXNzYWdlVHlw
ZTo6VGFibGUgJiYgZ2VuZXJhdGVQcmV2aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50
KCkpIHsKICAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1f
YXJndW1lbnRzLT5hcmd1bWVudEF0KDApOwogICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1f
YXJndW1lbnRzLT5hcmd1bWVudEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKQEAg
LTIwMCw5ICsyMDAsOSBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNw
ZWN0b3JWYWx1ZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+
YWRkSXRlbShpbnNwZWN0b3JWYWx1ZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGlmICht
X2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAganNv
bkFyZ3MtPmFkZEl0ZW0oaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxp
dGVyYWwoImNvbnNvbGUiKSwgdHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNP
YmplY3QtPmFkZEl0ZW0oaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxp
dGVyYWwoImNvbnNvbGUiKSwgdHJ1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3Jp
cHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgQVNDSUlMaXRlcmFsKCJj
b25zb2xlIiksIGdlbmVyYXRlUHJldmlldyk7CkBAIC0yMTAsMTcgKzIxMCwxNyBAQCB2b2lkIENv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNv
bnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFs
dWUuY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJ
dGVtKGluc3BlY3RvclZhbHVlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAganNvbk9iai0+c2V0UGFyYW1ldGVycyhXVEZNb3ZlKGpzb25B
cmdzKSk7CisgICAgICAgICAgICBtZXNzYWdlT2JqZWN0LT5zZXRQYXJhbWV0ZXJzKFdURk1vdmUo
YXJndW1lbnRzT2JqZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9jYWxsU3Rh
Y2spCi0gICAgICAgIGpzb25PYmotPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5z
cGVjdG9yQXJyYXkoKSk7CisgICAgICAgIG1lc3NhZ2VPYmplY3QtPnNldFN0YWNrVHJhY2UobV9j
YWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAKLSAgICBjb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyLm1lc3NhZ2VBZGRlZChXVEZNb3ZlKGpzb25PYmopKTsKKyAgICBjb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyLm1lc3NhZ2VBZGRlZChXVEZNb3ZlKG1lc3NhZ2VPYmplY3QpKTsKIH0K
IAogdm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29s
ZUZyb250ZW5kRGlzcGF0Y2hlciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwCmluZGV4IDQ5OTA4MGNjYzJiMzk1ZjlhYzAyNjA2MTc1MmE4NDEzZjA5YjlkZjcu
LmIxYjA1ODVhMjUzNDQwZjA0ZGEwMGRlMzAyOWQyZDJkZjA2NjE4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmNwcApAQCAtMTUxLDkgKzE1MSw5IEBAIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0
Y2hlcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5
TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKK1JlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRl
eHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0gICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAg
YXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNU
eXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJl
Z2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNh
c2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJp
bmc+PiBtYXRjaGVzID0gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwg
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRl
bnRTZWFyY2hVdGlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5oCmluZGV4IDdjMDFiOTBkYTE5MzdhZTViZTlhMjM2NDQ4MzE1
ZmJlZjAzMGFmZDkuLjU1YjE5MWVhMjM4OWNjMWY5ZmZhNzhjZmFjZDIyYzFiYzFjZTA1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNo
VXRpbGl0aWVzIHsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5z
aXRpdmUsIGJvb2wgaXNSZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1bGFy
RXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIGNv
bnN0IFN0cmluZyYpOwotSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBz
ZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wgaXNSZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0
aW9uRnJvbU9mZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVu
ZGluZ3MpOwogSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+
PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBmZDhlNGFkYzc5MGNkZGE1
ODkwZmVmZjFiODdmMjZlYmU3YTExMTQ0Li5kNzgwZjI1M2MyN2NhMTI0NmJkODVkZWJkNDk4NGRj
YzkzYjVmN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5OwotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZAogICAgICpyZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZh
bHVlKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRp
ZXMsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJh
bCgiZ2V0UHJvcGVydGllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE1
NSwxMCArMTUzLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAqcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgKnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46
OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRp
ZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJ
TGl0ZXJhbCgiZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwpAQCAtMTcxLDEwICsxNjksMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0
czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IEJpbmRp
bmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3Bl
cnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVz
IiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTg3LDExICsxODUsMTEgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gYXJyYXkgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVz
dWx0KSk7CisgICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Ojpy
dW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogICAgICpwcm9wZXJ0aWVzID0gYXJyYXktPmxl
bmd0aCgpID4gMCA/IGFycmF5IDogbnVsbHB0cjsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwg
aW50IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlJ1bnRp
bWU6OkNvbGxlY3Rpb25FbnRyeT4+KiBlbnRyaWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50
IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpD
b2xsZWN0aW9uRW50cnk+PiogZW50cmllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJn
ZXRDb2xsZWN0aW9uRW50cmllcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAg
LTIwNiw3ICsyMDQsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb2xsZWN0aW9uRW50cmll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgKmVudHJpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PFByb3RvY29sOjpS
dW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsK
KyAgICAqZW50cmllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KQpAQCAtMjI2LDcgKzIyNCw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGNhbGxBcmd1CiAgICAgICAgICpzYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRS
ZXN1bHRJbmRleEludDsKIH0KIAotUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoSlNDOjpKU1Zh
bHVlIGNhbGxGcmFtZXMpIGNvbnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVz
KEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjM1LDEzICsyMzMs
MTMgQEAgUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmEKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZh
bHNlOwogICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQot
ICAgICAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxG
cmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFo
YWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0
b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0
LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmlu
ZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVs
ZWFzZU5vbk51bGwoKTsKIAotICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQog
CiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0MDk4ZDc2NGE3MWY4
NDQwY2E5ZmM1ZGVhNThiYWVmMDBiNmEwYjJkLi45MWYyNTUxNTYzNzRlMmM2YTYzN2QyOWYyMWI0
MmU1NGZiODQzOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAg
IHZvaWQgZnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8
UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQg
Z2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Q
cm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9p
ZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90
b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBn
ZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lk
IGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJU
b0ZldGNoLCBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0
aW9uRW50cnk+PiogZW50cmllcyk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4qIGVudHJpZXMpOwogICAgIHZv
aWQgc2F2ZVJlc3VsdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3VtZW50SlNP
TiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgp
OwogCi0gICAgUmVmPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IHdyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSkgY29uc3Q7CisgICAgUmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhKU0M6
OkpTVmFsdWUpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6
OkpTVmFsdWUgY29sdW1ucykgY29uc3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiBwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5
cGVzLmgKaW5kZXggZDhmZjhmZGZkMzQ1ZjAyMDE5NDhiNDE5MjBhMTJjZGYwNjIzYjIyZC4uMDc2
NTczZWE1YmQ3MzNiNDIyZDllNjhhZjkzZmY3ZDAyYWQ5MmUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgK
QEAgLTYxLDQ5ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0
T3V0cHV0KTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1Ymxp
YyBKU09OOjpBcnJheUJhc2UgewotcHJpdmF0ZToKLSAgICBBcnJheSgpIHsgfQotCi0gICAgSlNP
Tjo6QXJyYXkmIG9wZW5BY2Nlc3NvcnMoKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEpTT046OkFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0g
ICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXkqPihzdGF0aWNfY2FzdDxKU09O
OjpBcnJheUJhc2UqPih0aGlzKSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVt
KFJlZjxUPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hWYWx1
ZSgmdmFsdWUuZ2V0KCkpOwotICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2
YWx1ZSkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoU3RyaW5nKHZhbHVlKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFj
Y2Vzc29ycygpLnB1c2hJbnRlZ2VyKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0o
ZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hEb3VibGUo
dmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8QXJyYXk8VD4+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19Owot
CiAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJl
IHByb3ZpZGVkIGJ5CiAvLyBzcGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29t
ZSBhcmUgZ2VuZXJhdGVkIGZvciBwcm90b2NvbCB0eXBlcy4KIApAQCAtMTMwLDggKzg3LDggQEAg
c3RydWN0IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHMgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewotICAgIHN0YXRp
YyBSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1
ZSkKK3N0cnVjdCBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8VD4+IHsKKyAgICBzdGF0aWMg
UmVmUHRyPEpTT046OkFycmF5T2Y8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICAg
ICAgUmVmUHRyPEpTT046OkFycmF5PiBhcnJheTsKQEAgLTE0MCw4ICs5Nyw4IEBAIHN0cnVjdCBC
aW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXkuZ2V0KCkpOwogI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5
PFQ+KSA9PSBzaXplb2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEpTT046OkFycmF5QmFz
ZSo+KGFycmF5LmdldCgpKSk7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU09OOjpB
cnJheU9mPFQ+KSA9PSBzaXplb2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU09OOjpBcnJheU9mPFQ+Kj4oc3RhdGljX2Nhc3Q8
SlNPTjo6QXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5jcHAKaW5kZXggNjBkZmY3NzU5YjFlZjVjZDc0NjQyNzQyMzBiZDhjNmM2MjhmM2M5
Mi4uOTVjZTMzMTNlMzQ0MDY0OTg0YjNhZmMxZmYxNWU4NWE3ZThiNjViMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAt
MTA1LDkgKzEwNSw5IEBAIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxT
dGFjayogbykgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNj
cmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxs
U3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gZnJhbWVzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1l
cy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICBy
ZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmgKaW5kZXggNDlmY2M0ZjBjMzMwZDAyMGVhMjY4ZmNmODY1MmMwMTBmNmI2
YzU5Yi4uOTkyODBiMDY0YWNhNzc1MTU3NzA5M2JiMzU0ZTNlODY0NTQyNzAyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sq
KSBjb25zdDsKIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29u
c3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6
Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IFNjcmlwdENhbGxTdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDVlOTAyNmE3Mjk5MTE3
YzQ0MGRlZGNjZDcyNDRhYmNlNDQ4YWMyYzguLjAzOTU5Njg3YzZlOThlODNjZjJjNDRlNGIwMGQ4
OWZjMzkyMzk0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZv
aWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lKQogewogICAgIGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5n
RXh0cmFEb21haW5zRGF0YSkKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgICAgICBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhLT5hZGRJdGVtKGRvbWFp
bk5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkb21haW5OYW1lcyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8g
ZG9tYWluTmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGRvbWFp
bk5hbWVzLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5h
Y3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGV4dHJhRG9tYWlucykKICAgICBpZiAoZXh0cmFEb21haW5zLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFt
ZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBkb21h
aW5OYW1lIDogZXh0cmFEb21haW5zKQogICAgICAgICBkb21haW5OYW1lcy0+YWRkSXRlbShkb21h
aW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggMjFjNDQ1NmQ2ZjAxYzU3ZjZmOGNmYTUyMDA2
NzJiZTYzNTUwY2RkMy4uOTJjODFjNWNjMTE1Y2U1Y2I5YzMxZTY4NjcxM2M4ZDQyYjJhOGRkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEpTT046Ok9iamVjdD4+
IG1fcGVuZGluZ0luc3BlY3REYXRhOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBtX3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0
cmluZz4+IG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKICAgICBib29sIG1fZW5h
YmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXgg
ZmI4YzVjODAyZDI3NTBkZTU1ZTVmMjNjZTRhN2NhZGMwMjdhZmUzNC4uOTY0OTc0NzZlZjQzOTli
YmU4ZDg1NjdkZjlmZWViNzYzMzVkMGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRk
Q29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPiBjbwogICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJv
clN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYgY2hhbm5lbHMp
CiB7CiAgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gbG9nZ2luZyBjaGFubmVs
cy4KLSAgICBjaGFubmVscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0
ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TG9nZ2luZ0NoYW5uZWxM
ZXZlbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDJlNTQxODgxZTcxNTdlMmQ1ZjEz
NWFkNDJiMThkMWJkNjVjNzVhMzYuLjlmOGMxOWI4NTUwYjU2YmM2MmMyMmViZDBmN2Q5YmZiNzA2
MmNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAg
ICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpOwog
Ci0gICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsPj4mKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDIzNDM0NWJiZGQwZTdjZWNkMTkxNjc2MmIwMzE5YjZmYjEzNTc5OTguLmQ2OWRkYTIzMjc4Yzdj
OThkZGNlMmVkMzhhYTU2YWFmMmUzZGIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC00MzUsOSArNDM1LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0
aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29u
c3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlm
ICghb3B0aW9uYWxVUkwgPT0gIW9wdGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZp
ZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJp
bmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCog
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0
SURTdHIudG9JbnRQdHIoKTsKICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQp
OwpAQCAtODY2LDExICs4NjYsMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICAgICAg
YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xh
dGlvbiwgYnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAK
LVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFt
ZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmpl
Y3RlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTUxNjIwZWJiNmRkMWJlY2Q2MzU3
NDY4NDU4ZjJkZWVmZjJkMDljYy4uYmYwZTljNjgyNjQ3NWQzOTA5ZTUyODFkNzg3MzJjZDYxMjU1
NGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjQsMTIgKzY0LDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUp
IGZpbmFsOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZp
bmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJl
ciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CiAgICAgdm9pZCBz
ZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
T2JqZWN0JiBsb2NhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZv
aWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZp
bmFsOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVu
Y3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5h
bDsKICAgICB2b2lkIHBhdXNlKEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC0xMzgsNyArMTM4LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURh
dGEoKSB7IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJh
bWVzKGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNv
bnN0IEluamVjdGVkU2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291
cmNlSUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBp
bnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBkMjI2MGU1OWY3Nzg2MjgwZGFmMWRmZjQ3YjA1
ZWM2ZWQzNGMxMTE4Li5mNWQyNTA1ZDQ5NTc0N2I1YTRhNTk2YjJkMTNlOTkwZmQ3MWY5NDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgbwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9w
ZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5l
cmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4mIGludGVybmFsUHJvcGVydGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQo
b2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgIHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxl
UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBp
bnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7
CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGMKICAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IGNvbnN0IGludCogc3RhcnRJbmRleCwgY29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0
SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCiB7
CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0yNTcsMTEgKzI1NywxMSBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBvYmplYwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RH
cm91cChvYmplY3RHcm91cCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4m
IHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlwZURl
c2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlw
dGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJl
bnRseSBoYXZlIFR5cGUgSW5mb3JtYXRpb24uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTM3Miw3
ICszNzIsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9m
aWxlckVuYWJsZWRTdGF0ZShib29sIGlzQ29udHJvbEZsbwogICAgIH0pOwogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5n
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2Zp
bGVyKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2Vz
IG5vdCBjdXJyZW50bHkgaGF2ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iKTsKQEAgLTM4Myw3
ICszODMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0cl90IHNvdXJjZUlE
ID0gc291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSk7CiAgICAgQVNTRVJUKG9r
YXkpOwogICAgIGNvbnN0IFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2Vz
ID0gbV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQo
c291cmNlSUQsIG1fdm0pOwotICAgIGJhc2ljQmxvY2tzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgp
OworICAgIGJhc2ljQmxvY2tzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2Nr
UmFuZ2UmIGJsb2NrIDogYmFzaWNCbG9ja1JhbmdlcykgewogICAgICAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFN0
YXJ0T2Zmc2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CmluZGV4IGI2ZmU3MWZiOWM2MzNkZjRhMTBjNzhkODYwNDViMWU3OGY1YTFmODUuLjRiZDhlYTRk
ZTZkM2I0YWVhODBjNzY1MmUwMDBkZGI1NWMzM2QzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oCkBAIC02MiwxNyArNjIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEZ1bmN0aW9u
T24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IEpTT046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9v
bCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBmaW5h
bDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmlu
ZyYgb2JqZWN0SWQpIGZpbmFsOwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpPYmplY3RQcmV2aWV3PiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3Bl
cnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5
RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCog
Y29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3Vs
dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGll
cykgZmluYWw7Ci0gICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNv
bnN0IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNo
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJv
b2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJu
YWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25F
bnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgaW50KiBjb25zdCBzdGFydEluZGV4LCBjb25zdCBp
bnQqIGNvbnN0IG51bWJlclRvRmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBmaW5hbDsKICAg
ICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIGNhbGxB
cmd1bWVudCwgY29uc3QgaW50KiBjb25zdCBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2
b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApIGZpbmFsOwotICAgIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZz
ZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5
cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JW
YXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRp
b25zLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpU
eXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVy
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVy
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQcm9m
aWxlcihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+
JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Js
b2Nrcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApp
bmRleCBlNDQ0MTBhZDI5NDgyMTNiYjZhZGZiODU0Y2NkNzA3NjRjNTA5OTg2Li41ZTg5NWFlODUy
MDE1YjlkNGNkMDU1MWNmMWI4OWJiOGVmNjMzZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMTY2LDExICsxNjYsMTEgQEAgdm9pZCBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUg
ZW5kVGltZSwgUHIKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBzdGF0aWMgUmVmPFBy
b3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U2FtcGxlcz4gYnVpbGRTYW1wbGVzKFZNJiB2bSwgVmVj
dG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJhY2U+JiYgc2FtcGxpbmdQcm9maWxlclN0YWNr
VHJhY2VzKQogewotICAgIFJlZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2Zp
bGVyOjpTdGFja1RyYWNlPj4gc3RhY2tUcmFjZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdGFja1Ry
YWNlcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNl
Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja1RyYWNlJiBzdGFj
a1RyYWNlIDogc2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKSB7Ci0gICAgICAgIFJlZjxQcm90
b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPj4gZnJhbWVz
ID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZT46
OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZyYW1lcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoU2Ft
cGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZSYgc3RhY2tGcmFtZSA6IHN0YWNrVHJhY2UuZnJhbWVz
KSB7Ci0gICAgICAgICAgICBSZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1l
PiBmcmFtZSA9IFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZTo6Y3JlYXRlKCkK
KyAgICAgICAgICAgIGF1dG8gZnJhbWVPYmplY3QgPSBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6
OlN0YWNrRnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldFNvdXJjZUlEKFN0cmlu
Zzo6bnVtYmVyKHN0YWNrRnJhbWUuc291cmNlSUQoKSkpCiAgICAgICAgICAgICAgICAgLnNldE5h
bWUoc3RhY2tGcmFtZS5kaXNwbGF5TmFtZSh2bSkpCiAgICAgICAgICAgICAgICAgLnNldExpbmUo
c3RhY2tGcmFtZS5mdW5jdGlvblN0YXJ0TGluZSgpKQpAQCAtMTgzLDEwICsxODMsMTAgQEAgc3Rh
dGljIFJlZjxQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlNhbXBsZXM+IGJ1aWxkU2FtcGxlcyhW
TSYgdm0sIFZlY3RvcjxTYW1wbGkKICAgICAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tG
cmFtZS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb2x1bW4oc3RhY2tG
cmFtZS5jb2x1bW5OdW1iZXIoKSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+c2V0RXhwcmVzc2lvbkxvY2F0aW9uKFdURk1vdmUoZXhwcmVz
c2lvbkxvY2F0aW9uKSk7CisgICAgICAgICAgICAgICAgZnJhbWVPYmplY3QtPnNldEV4cHJlc3Np
b25Mb2NhdGlvbihXVEZNb3ZlKGV4cHJlc3Npb25Mb2NhdGlvbikpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmcmFtZXMtPmFkZEl0ZW0oV1RGTW92ZShmcmFtZSkpOworICAgICAgICAg
ICAgZnJhbWVzLT5hZGRJdGVtKFdURk1vdmUoZnJhbWVPYmplY3QpKTsKICAgICAgICAgfQogICAg
ICAgICBSZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPiBpbnNwZWN0b3JT
dGFja1RyYWNlID0gUHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlOjpjcmVhdGUo
KQogICAgICAgICAgICAgLnNldFRpbWVzdGFtcChzdGFja1RyYWNlLnRpbWVzdGFtcCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2Nw
cF9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CmluZGV4IDA0ZGRmY2I4ZGE4OTA1Y2Q2NjE1N2MxM2Uw
YzQxNzU5ZjE1ZTE5MzAuLmE5MGMwZGJmZTY2ZDBjNGU0M2JkNDA2ZmMxZDg4Yjg1ODhlY2IyODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2NwcF9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQpAQCAtOTcsMTIgKzk3LDE1IEBAIGNs
YXNzIENwcEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICMgR2VuZXJhdGUgdHlwZSByZXByZXNl
bnRhdGlvbnMgZm9yIHZhcmlvdXMgc2l0dWF0aW9ucy4KICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ZGVmIGNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgorICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlh
c2VkX3R5cGUgICMgRmFsbCB0aHJvdWdoIHRvIGVudW0gb3IgcHJpbWl0aXZlLgorCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpIGFuZCBsZW4oX3R5cGUubWVtYmVycykg
PT0gMDoKICAgICAgICAgICAgIHJldHVybiAnSlNPTjo6T2JqZWN0JwogICAgICAgICBpZiBpc2lu
c3RhbmNlKF90eXBlLCBBcnJheVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUo
KSBpcyBOb25lOiAgIyBPdGhlcndpc2UsIGZhbGwgdGhyb3VnaCBhbmQgdXNlIHR5cGVkZWYnZCBu
YW1lLgotICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
JXM+JyAlIENwcEdlbmVyYXRvci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVt
ZW50X3R5cGUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlh
c2VkVHlwZSwgRW51bVR5cGUsIEFycmF5VHlwZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiAn
SlNPTjo6QXJyYXlPZjwlcz4nICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90
eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9i
amVjdFR5cGUsIEVudW1UeXBlLCBBcnJheVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnSW5z
cGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9u
YW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmlt
aXRpdmVUeXBlKToKICAgICAgICAgICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9y
X3ByaW1pdGl2ZV90eXBlKF90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hl
YWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggMTJlMDk1MzkzNGZj
MDc2ODBlZmIyZWE4MmI3NWZmNTBiNThmNmU4Mi4uNWQ0MTFkNDlmOWQxZTk4ODc2YTZhOWZlMzVi
OWVlOGE3MWQ3NWQxYyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xh
c3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAg
ICAgICAgdHlwZWRlZl9saW5lcyA9IFtdCiAgICAgICAgICAgICBpZiBsZW4oZGVjbGFyYXRpb24u
ZGVzY3JpcHRpb24pID4gMDoKICAgICAgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgn
LyogJXMgKi8nICUgZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgICAgICB0eXBlZGVm
X2xpbmVzLmFwcGVuZCgndHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwlcz4gJXM7
JyAlIChlbGVtZW50X3R5cGUsIGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAgICAgICB0
eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlwZWRlZiBKU09OOjpBcnJheU9mPCVzPiAlczsnICUgKGVs
ZW1lbnRfdHlwZSwgZGVjbGFyYXRpb24udHlwZV9uYW1lKSkKICAgICAgICAgICAgIHNlY3Rpb25z
LmFwcGVuZCgnXG4nLmpvaW4odHlwZWRlZl9saW5lcykpCiAKICAgICAgICAgbGluZXMgPSBbXQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQppbmRleCA2OTkwMmZiMzU5YzkxMjQ4NjQ4
NGVmYTNkYjkzZDQwNzk5NDg4NzdkLi5lNTJmMzE1NDRjMTFmYjc2YzRiYWFjNjdlN2JhOTI3MjI0
MGNmY2Q3IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjYyLDcgKzI2
Miw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJldHVy
biAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRv
bWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlw
ZSwgQXJyYXlUeXBlKSk6CiAgICAgICAgICAgICBzdWJfdHlwZSA9IE9iakNHZW5lcmF0b3IucHJv
dG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PCVzPicgJSBzdWJfdHlwZQorICAgICAgICAg
ICAgcmV0dXJuICdKU09OOjpBcnJheU9mPCVzPicgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4g
Tm9uZQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRl
Z29yeS5BcnJheToKICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnBy
b3RvY29sX3R5cGVfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAg
b2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5
cGUpCi0gICAgICAgICAgICBpZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+JzoKKyAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgPT0gJ0pTT046
OkFycmF5T2Y8U3RyaW5nPic6CiAgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJpbmdB
cnJheUFycmF5KCVzKScgJSB2YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBp
cyAnU3RyaW5nJyBhbmQgb2JqY19jbGFzcyBpcyAnTlNTdHJpbmcnOgogICAgICAgICAgICAgICAg
IHJldHVybiAndG9KU09OU3RyaW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDc2ZTg2ZGQyYjQ3
MmQxZmMxOWQzYmYyNjY5MTFjZDcwYjBkMjhlMmIuLmMyMGRkMDgxMTZhNmE0OWFjNmNkYjI0MDlk
ZDQwMjk5Mjg0OWIzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CkBAIC0xNTcsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIFll
bGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50
Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29s
dW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0
X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90
aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBv
cHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVl
Piogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
b3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50
Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVy
blZhbHVlcyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGlu
X3F1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1l
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFt
cCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRf
dmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRf
b3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0
X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikg
PSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJl
ZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2Vz
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1l
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2Vz
cyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxKU09OOjpPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxKU09OOjpWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxp
bnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiog
c2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JM
aXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0
cmluZz4qIHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVTUUxTeW5jKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
aW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0
X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBK
U09OOjpPYmplY3QqIG91dF92YWx1ZXMsIEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBv
dXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJv
cj4mIG91dF9zcWxFcnJvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpD
b2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91
dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwg
SlNPTjo6T2JqZWN0KiBvdXRfdmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCog
b3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xh
c3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFj
ayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1
Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIEpTT046Ok9iamVj
dCB2YWx1ZXMsIEpTT046OlZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJp
bmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7Cisg
ICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBj
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6
T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9y
KTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcm
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVT
UUxBc3luY0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6CkBAIC0yOTQsMTIg
KzI5NCwxMiBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0SQogCiAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgUmVmPEpTT046Ok9iamVjdD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2Nv
bHVtbk5hbWVzOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9jb2x1bW5O
YW1lczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90
ZXM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVz
dGFtcDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiBv
dXRfdmFsdWVzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1
ZT4gb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJy
b3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0
X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlcyhsb25nIHJlcXVlc3RJCiAKIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBi
YWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxT
dHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRp
bWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZh
bHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3Zv
aWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxT
dHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRp
bWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZh
bHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsK
ICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgaWYgKGNvbHVtbk5hbWVzKQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVm
UHRyPEpTT046Ok9iamUKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpP
YmplY3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgU3RyaW5nIG91
dF9ub3RlczsKICAgICBkb3VibGUgb3V0X3RpbWVzdGFtcDsKICAgICBKU09OOjpPYmplY3Qgb3V0
X3ZhbHVlczsKICAgICBKU09OOjpWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKKyAgICBpbnQgb3V0
X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gb3V0X3NxbEVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKQEAgLTQ0MCw3
ICs0NDAsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
KGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6T2JqZQogCiBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0Nh
bGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlk
KSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0
Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBKU09OOjpPYmplY3QgdmFsdWVzLCBKU09OOjpWYWx1ZSBwYXls
b2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3Jz
LCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rlcywg
ZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9h
ZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25N
ZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1lcyk7CkBAIC02MjksNyAr
NjI5LDcgQEAgZW51bSBjbGFzcyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsK
IC8qIFVuaXF1ZSBpZGVudGlmaWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50
IERhdGFiYXNlSWQ7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVm
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM+IENvbG9yTGlzdDsKIH0gLy8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDBjZTBjMThkMjYxYTliODM0NDhlZTFkZDgz
NzhiYmMzNmUzYzgyNTguLjI0MmQ2YWMxYjgzYzU2MGQ4ZmIzOWZhNzcyNmRmMmNlYWE5M2RiNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTE1Miw4ICsxNTIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBl
bnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0X2luX25vdGVzLCBjb25zdCBkb3VibGUqIGNv
bnN0IG9wdF9pbl90aW1lc3RhbXAsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3ZhbHVlcywg
Y29uc3QgSlNPTjo6VmFsdWUqIGNvbnN0IG9wdF9pbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0
IG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl9zcWxFcnJvciwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5
KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9wcmlu
dENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9v
dXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBv
cHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0
X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmpl
Y3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046
OlZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xv
cnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0
X3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpP
YmplY3QmIGluX3ZhbHVlcywgSlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IEpTT046Ok9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2Ny
ZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyYgaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90
aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXls
b2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3Ry
aW5nJiwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRfaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFt
cCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSog
Y29uc3Qgb3B0X2luX3BheWxvYWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQs
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG9wdF9pbl9zY3JlZW5Db2xvciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3Is
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046
OkFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGlu
X3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZhbHVlIGlu
X3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3NxbEVy
cm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBk
b3VibGUqIG91dF90aW1lc3RhbXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFs
dWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xv
cnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJp
bnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMjg5LDEyICsyODksMTIgQEAgdm9pZCBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVx
dWVzdElkLCBSZWYKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X25vdGVzOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IG91dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RGF0YWJhc2VJZD4gb3V0X2RhdGFiYXNlSWQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4gb3V0X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0
ZUNvbG9yczsKQEAgLTM1NSwxMiArMzU1LDEyIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWZQCiAK
ICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwogICAgIFN0cmluZyBvdXRfbm90ZXM7CiAgICAgZG91
YmxlIG91dF90aW1lc3RhbXA7CiAgICAgSlNPTjo6T2JqZWN0IG91dF92YWx1ZXM7CiAgICAgSlNP
Tjo6VmFsdWUgb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkRhdGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7CisgICAgaW50IG91dF9kYXRhYmFzZUlkOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJv
cjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRf
c2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpD
b2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CkBAIC01MzAsNyArNTMwLDcgQEAgZW51bSBj
bGFzcyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVu
dGlmaWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10
eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsK
IH0gLy8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50
cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZjYyMDU4MTFhYTA4
NGEyYjBkNDNmM2EzNTM1NDU3ODY0NDBmODU0YS4uZDUyM2I3MjI0YzM0NWFkM2VhMWY5ODFkMWEx
MDQyMzU5ZmRlYmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3MgRnJvbnRlbmRSb3V0
ZXI7CiBjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgRGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKSA6
IG1fZnJvbnRlbmRSb3V0ZXIoZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJs
ZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBj
b25zdCBwcmludENvbG9yKTsKLSAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFy
YW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBw
cmludENvbG9yKTsKKyAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rl
cywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYg
bV9mcm9udGVuZFJvdXRlcjsKIH07CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRp
ZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25z
dCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyogY29uc3QgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6
OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5n
Pj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSog
Y29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMs
IGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0
PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2Ut
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNl
LmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMiKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9p
ZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjoKICAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIERhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENv
bG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNP
Tjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNv
bk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwo
IkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTM4Nyw3ICsz
ODcsNyBAQCBuYW1lc3BhY2UgRGF0YWJhc2UgewogLyogVW5pcXVlIGlkZW50aWZpZXIgb2YgRGF0
YWJhc2Ugb2JqZWN0LiAqLwogdHlwZWRlZiBTdHJpbmcgRGF0YWJhc2VJZDsKIHR5cGVkZWYgU3Ry
aW5nIFByaW1hcnlDb2xvcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0
eXBlZGVmIEpTT046OkFycmF5T2Y8U3RyaW5nPiBDb2xvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAv
LyBFbmQgb2YgdHlwZWRlZnMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUt
c2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBiMjEwNmVmZTNkNjNhYTFiOWY5MDU4NTQ3ZTU3OGRm
YWQ4OWJkZmU0Li40YjMxYTVkYmYyN2IyYmUyNWY5ODdmYThhNDg3MDY2NzMyMTY0MmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBA
IC00MDAsNyArNDAwLDcgQEAgcHVibGljOgogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQg
c2V0QXJyYXkoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVl
KQorICAgIHZvaWQgc2V0QXJyYXkoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUp
CiAgICAgewogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwo
ImFycmF5IiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggMjY2MWI4NmVhYTRmN2UxYTYyMzEyNDhk
YmQzOTk1MWI2Mjg2NTRkMC4uN2ZlNTg2YzBhNWJlNWJmNzI3OTBiN2QyZTg3YjE2MjA5Y2U0NzAz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApA
QCAtMzMxLDExICszMzEsMTEgQEAgdHlwZWRlZiBpbnQgQnJlYWtwb2ludElkOwogCiBuYW1lc3Bh
Y2UgUnVudGltZSB7CiB0eXBlZGVmIGludCBPYmplY3RJZDsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50PiBMdWNreU51bWJlcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4gQmFieU5hbWVzOwotdHlwZWRlZiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RJZD4gTmV3T2Jq
ZWN0czsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZD4gT2xkT2JqZWN0czsKLXR5cGVkZWYgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNv
bj4gU3RvcFJlYXNvbnM7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBMdWNreU51bWJlcnM7
Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8U3RyaW5nPiBCYWJ5TmFtZXM7Cit0eXBlZGVmIEpTT046
OkFycmF5T2Y8aW50PiBOZXdPYmplY3RzOwordHlwZWRlZiBKU09OOjpBcnJheU9mPGludD4gT2xk
T2JqZWN0czsKK3R5cGVkZWYgSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6UmVhc29uPiBTdG9wUmVhc29uczsKIH0gLy8gUnVudGltZQogLy8gRW5kIG9mIHR5cGVk
ZWZzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dAppbmRleCA2NDk1NzAyNzhhYWUyY2I3MTNlZDY5NWM2NmY1YmE4OGFlN2RlZWY0Li40YTgyYjY0
Mjc1NTc4NTNmYzVlYmY3YTYwMThjMTZlMzI3ZGRhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTMzNyw3ICszMzcsNyBAQCBjbGFz
cyBQYXJhbWV0ZXJCdW5kbGU7CiAKIC8vIFR5cGVkZWZzLgogbmFtZXNwYWNlIERhdGFiYXNlIHsK
LXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7CiB9IC8vIERhdGFiYXNl
CiAvLyBFbmQgb2YgdHlwZWRlZnMuCiAKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEpTT046Ok9iamVjdDo6Y3JlYXRlKCkp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVm
UHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBKU09OOjpP
YmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIFdURk1vdmUo
dmFsdWUpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEJ1dHRvbnMoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRv
bj4+IHZhbHVlKQorICAgIHZvaWQgc2V0QnV0dG9ucyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEpTT046Ok9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIp
LCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQpAQCAtNTYwLDE0ICs1NjAsMTQgQEAgcHVibGljOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUGFyYW1ldGVyQnVuZGxlOwogICAgIHB1YmxpYzoKIAotICAg
ICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1
aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09O
OjpBcnJheU9mPFN0cmluZz4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVCghKFNUQVRFICYgQ29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19h
bHJlYWR5X3NldCk7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OYW1lcyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENv
bHVtbk5hbWVzU2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1
dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAg
ICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9u
c1NldCksIHByb3BlcnR5X2J1dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1
bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CkBAIC03OTMsMTQg
Kzc5MywxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPERpcmVjdGlv
bmFsaXR5U2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRv
bnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAg
QnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1Nl
dCksIHByb3BlcnR5X2J1dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gY2FzdFN0YXRlPEJ1dHRvbnNTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWls
ZGVyPFNUQVRFIHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RB
VEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9m
PFN0cmluZz4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCgh
KFNUQVRFICYgQ29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3Nl
dCk7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5O
YW1lcyIpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDdiMzJlYWY1MGFhZTJkNDhhYmFmNmJhZjU3NTAwNTZkYjc3ODhmMTUuLjdhNDEyZTYw
OTU1OWJkMTlkMjE5YjkxYzAzMTQ1MTNmNzE2ZGI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0yMTcsOSArMjE3LDkgQEAgU3RyaW5nIFR5cGVTZXQ6
OmxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBTdHJ1Y3R1cmVTaGFwZTo6
bGVhc3RDb21tb25BbmNlc3RvcihtX3N0cnVjdHVyZUhpc3RvcnkpOwogfQogCi1SZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBj
b25zdAorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3Ry
dWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMo
KSBjb25zdAogewotICAgIGF1dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46
OmNyZWF0ZSgpOworICAgIGF1dG8gZGVzY3JpcHRpb24gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAK
ICAgICBmb3IgKGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KQogICAgICAgICBkZXNj
cmlwdGlvbi0+YWRkSXRlbShzaGFwZS0+aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CkBAIC01
MDQsOCArNTA0LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVy
ZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICBSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IGN1cnJlbnRTaGFwZSh0aGlzKTsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUp
IHsKLSAgICAgICAgYXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKLSAgICAgICAgYXV0byBvcHRpb25hbEZpZWxkcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9
IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxG
aWVsZHMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1
dG8gZmllbGQgOiBjdXJyZW50U2hhcGUtPm1fZmllbGRzKQogICAgICAgICAgICAgZmllbGRzLT5h
ZGRJdGVtKGZpZWxkLmdldCgpKTsKICAgICAgICAgZm9yIChhdXRvIGZpZWxkIDogY3VycmVudFNo
YXBlLT5tX29wdGlvbmFsRmllbGRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5oCmluZGV4IDE2MWJmZTg3Yjk1M2JhYTRlMjU4NjFjMzY5Mzg1YmQ5NjIzMjMwYWIuLjk1YTM1
ZDE4ZTZmZWM2ZDhlZGExM2UyYzViYTBmMzI3ZTA0ODBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSdW50aW1l
VHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIG5hbWVzcGFjZSBQcm90b2NvbCAgewotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
QXJyYXk7CiAKIG5hbWVzcGFjZSBSdW50aW1lIHsKIGNsYXNzIFN0cnVjdHVyZURlc2NyaXB0aW9u
OwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsK
ICAgICBTdHJpbmcgZHVtcFR5cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkg
Y29uc3Q7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVz
ZW50YXRpb25zKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNl
bnRhdGlvbnMoKSBjb25zdDsKICAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc092ZXJmbG93bigpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyZmxvd247IH0KICAgICBT
dHJpbmcgbGVhc3RDb21tb25BbmNlc3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSlNPTlZhbHVlcy5oIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCmluZGV4IDlh
NzRkMWVhOTdlYzgxNjY3NzUyZjgyYWMwNjE5MWQyNjMyODljZDQuLjU5N2JjYzliODIwYmViOTc4
ODk0ODliMjFjMTJiMGVhYTZlZTRlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05W
YWx1ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKQEAgLTQyMyw2ICs0MjMs
NDggQEAgaW5saW5lIHZvaWQgQXJyYXlCYXNlOjpwdXNoQXJyYXkoUmVmUHRyPEFycmF5QmFzZT4m
JiB2YWx1ZSkKICAgICBtX21hcC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXlPZiA6IHB1YmxpYyBBcnJheUJhc2UgeworcHJpdmF0
ZToKKyAgICBBcnJheU9mKCkgeyB9CisKKyAgICBBcnJheSYgb3BlbkFjY2Vzc29ycygpCisgICAg
eworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXkpID09IHNpemVvZihBcnJheU9m
PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEFycmF5Kj4o
c3RhdGljX2Nhc3Q8QXJyYXlCYXNlKj4odGhpcykpOworICAgIH0KKworcHVibGljOgorICAgIHZv
aWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3Nv
cnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFk
ZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3NvcnMo
KS5wdXNoU3RyaW5nKHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVl
KQorICAgIHsKKyAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hJbnRlZ2VyKHZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgb3Bl
bkFjY2Vzc29ycygpLnB1c2hEb3VibGUodmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8
QXJyYXlPZjxUPj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFycmF5T2Y8VD4oKSk7CisgICAgfQorCisgICAgdXNpbmcgQXJyYXlCYXNlOjpnZXQ7CisgICAg
dXNpbmcgQXJyYXlCYXNlOjpiZWdpbjsKKyAgICB1c2luZyBBcnJheUJhc2U6OmVuZDsKK307CisK
IH0gLy8gbmFtZXNwYWNlIEpTT05JbXBsCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZWI5OWFlZjU3Yzgx
ZTBjM2VmMzEzZTE4NTZiMWJhYjA0NDBhY2Y0Li43ZGVhNDljNjVkNTliMWI4NWRlMzA3MDc4ZDUw
ZTVmYThlNmNkNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcApAQCAtMTM0LDEwICsxMzQsMTAgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29y
ZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb24KICAg
ICB9CiAKICAgICBpZiAoIW1fZnJhbWVzKQotICAgICAgICBtX2ZyYW1lcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+Ojpj
cmVhdGUoKTsKKyAgICAgICAgbV9mcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlY29yZGluZzo6RnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9jdXJyZW50
QWN0aW9ucykgewotICAgICAgICBtX2N1cnJlbnRBY3Rpb25zID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgbV9jdXJyZW50QWN0aW9u
cyA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKIAogICAgICAgICBhdXRv
IGZyYW1lID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZTo6Y3JlYXRlKCkK
ICAgICAgICAgICAgIC5zZXRBY3Rpb25zKG1fY3VycmVudEFjdGlvbnMpCkBAIC0xNjUsMTQgKzE2
NSwxNCBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3Rh
dGU+JiYgSW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlSQogICAgIHJldHVybiBXVEZNb3ZlKG1faW5p
dGlhbFN0YXRlKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiYmIEluc3BlY3RvckNhbnZhczo6cmVs
ZWFzZUZyYW1lcygpCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZWNvcmRpbmc6OkZyYW1lPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VGcmFtZXMoKQogewog
ICAgIGFwcGVuZEFjdGlvblNuYXBzaG90SWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBXVEZNb3Zl
KG1fZnJhbWVzKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKK1JlZlB0cjxKU09OOjpB
cnJheU9mPEpTT046OlZhbHVlPj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKIHsK
ICAgICBtX2luZGV4ZWREdXBsaWNhdGVEYXRhLmNsZWFyKCk7CiAgICAgcmV0dXJuIFdURk1vdmUo
bV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgaW50IEluc3Bl
Y3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAg
fQogCiAgICAgaWYgKCFtX3NlcmlhbGl6ZWREdXBsaWNhdGVEYXRhKQotICAgICAgICBtX3Nlcmlh
bGl6ZWREdXBsaWNhdGVEYXRhID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFs
dWU+OjpjcmVhdGUoKTsKKyAgICAgICAgbV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YSA9IEpTT046
OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gaXRlbTsKICAgICBXVEY6OnN3aXRjaE9uKGRhdGEsCkBAIC0zNjksNyArMzY5LDcgQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAgICAgICAgIFsmXSAoY29uc3QgSW1hZ2VEYXRhKiBpbWFnZURhdGEpIHsgaXRlbSA9IGJ1aWxk
QXJyYXlGb3JJbWFnZURhdGEoKmltYWdlRGF0YSk7IH0sCiAgICAgICAgIFsmXSAoY29uc3QgSW1h
Z2VCaXRtYXAqIGltYWdlQml0bWFwKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXAo
KmltYWdlQml0bWFwKTsgfSwKICAgICAgICAgWyZdIChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIHNj
cmlwdENhbGxGcmFtZSkgewotICAgICAgICAgICAgYXV0byBhcnJheSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PGRvdWJsZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcnJheSA9
IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhcnJheS0+YWRk
SXRlbShpbmRleEZvckRhdGEoc2NyaXB0Q2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSgpKSk7CiAgICAg
ICAgICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoc2NyaXB0Q2FsbEZyYW1lLnNvdXJj
ZVVSTCgpKSk7CiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHNj
cmlwdENhbGxGcmFtZS5saW5lTnVtYmVyKCkpKTsKQEAgLTM4OSw5ICszODksOSBAQCBpbnQgSW5z
cGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbmRleCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPj4gYnVpbGRBcnJheUZvckFmZmluZVRyYW5z
Zm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSkKK3N0YXRpYyBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxkb3VibGU+PiBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKQogewotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxkb3VibGU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PGRvdWJsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGRv
dWJsZT4+IGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBhcnJh
eS0+YWRkSXRlbShhZmZpbmVUcmFuc2Zvcm0uYSgpKTsKICAgICBhcnJheS0+YWRkSXRlbShhZmZp
bmVUcmFuc2Zvcm0uYigpKTsKICAgICBhcnJheS0+YWRkSXRlbShhZmZpbmVUcmFuc2Zvcm0uYygp
KTsKQEAgLTQwMiw5ICs0MDIsOSBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PGRvdWJsZT4+IGJ1aWxkQXJyYXlGb3JBZmZpbmVUcmFuc2Zvcm0oYwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxUPiYgdmVj
dG9yKQorc3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJh
eUZvclZlY3Rvcihjb25zdCBWZWN0b3I8VD4mIHZlY3RvcikKIHsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiB2ZWN0b3IpCiAgICAgICAgIGFycmF5LT5h
ZGRJdGVtKGl0ZW0pOwogICAgIHJldHVybiBhcnJheTsKQEAgLTQxOSw3ICs0MTksNyBAQCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3Rv
ckNhbnZhczo6YnVpbGRJbml0aQogICAgIGF0dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRl
cmFsKCJ3aWR0aCIpLCBjYW52YXMoKS53aWR0aCgpKTsKICAgICBhdHRyaWJ1dGVzLT5zZXRJbnRl
Z2VyKEFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IiksIGNhbnZhcygpLmhlaWdodCgpKTsKIAotICAgIGF1
dG8gcGFyYW1ldGVycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6
Y3JlYXRlKCk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1
ZT46OmNyZWF0ZSgpOwogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzUmVuZGVy
aW5nQ29udGV4dCA9IGNhbnZhcygpLnJlbmRlcmluZ0NvbnRleHQoKTsKICAgICBpZiAoaXM8Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEPihjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgewpAQCAtNDQw
LDcgKzQ0MCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRp
YWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpCiAKICAgICAgICAgLy8gVGhlIHBh
cmFtZXRlciB0byBgc2V0TGluZURhc2hgIGlzIGl0c2VsZiBhbiBhcnJheSwgc28gd2UgbmVlZCB0
byB3cmFwIHRoZSBwYXJhbWV0ZXJzCiAgICAgICAgIC8vIGxpc3QgaW4gYW4gYXJyYXkgdG8gYWxs
b3cgc3ByZWFkaW5nLgotICAgICAgICBhdXRvIHNldExpbmVEYXNoID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzZXRMaW5l
RGFzaCA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAgICAgICAgc2V0
TGluZURhc2gtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclZlY3RvcihzdGF0ZS5saW5lRGFzaCkpOwog
ICAgICAgICBhdHRyaWJ1dGVzLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInNldExpbmVEYXNoIiks
IFdURk1vdmUoc2V0TGluZURhc2gpKTsKIApAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFz
OjpidWlsZEluaXRpCiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFs
KCJpbWFnZVNtb290aGluZ0VuYWJsZWQiKSwgY29udGV4dDJkLT5pbWFnZVNtb290aGluZ0VuYWJs
ZWQoKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpbWFn
ZVNtb290aGluZ1F1YWxpdHkiKSwgaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKGNvbnRleHQyZC0+aW1hZ2VTbW9vdGhpbmdRdWFsaXR5KCkpKSk7CiAKLSAgICAgICAgYXV0
byBzZXRQYXRoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVh
dGUoKTsKKyAgICAgICAgYXV0byBzZXRQYXRoID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46
OmNyZWF0ZSgpOwogICAgICAgICBzZXRQYXRoLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShidWlsZFN0
cmluZ0Zyb21QYXRoKGNvbnRleHQyZC0+Z2V0UGF0aCgpLT5wYXRoKCkpKSk7CiAgICAgICAgIGF0
dHJpYnV0ZXMtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgic2V0UGF0aCIpLCBXVEZNb3ZlKHNldFBh
dGgpKTsKICAgICB9CkBAIC01MDIsMTMgKzUwMiwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0
aQogICAgIHJldHVybiBpbml0aWFsU3RhdGU7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29u
c3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJh
bWV0ZXJzKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFJlY29yZENhbnZhc0Fj
dGlvblZhcmlhbnQ+JiYgcGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpT
T046OlZhbHVlPj4gYWN0aW9uID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgp
OwogICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZvckRhdGEobmFtZSkpOwogCi0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gcGFyYW1ldGVyc0RhdGEg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBzd2l6emxlVHlwZXMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IHBhcmFtZXRlcnNEYXRhID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+IHN3
aXp6bGVUeXBlcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBhdXRvIGFk
ZFBhcmFtZXRlciA9IFsmcGFyYW1ldGVyc0RhdGEsICZzd2l6emxlVHlwZXNdIChhdXRvIHZhbHVl
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXMgc3dpenpsZVR5cGUpIHsKICAgICAgICAgcGFyYW1ldGVy
c0RhdGEtPmFkZEl0ZW0odmFsdWUpOwpAQCAtNTI0LDcgKzUyNCw3IEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24oY29uCiAgICAgICAgICAgICBbJl0gKENhbnZhc1RleHRBbGlnbiB2YWx1ZSkgeyBhZGRQ
YXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKICAgICAgICAgICAgIFsmXSAoQ2Fu
dmFzVGV4dEJhc2VsaW5lIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJp
bmcpOyB9LAogICAgICAgICAgICAgWyZdIChjb25zdCBET01NYXRyaXgyREluaXQmIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJs
ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8ZG91YmxlPj4gYXJyYXkgPSBK
U09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFycmF5LT5h
ZGRJdGVtKHZhbHVlLmEudmFsdWVfb3IoMSkpOwogICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJ
dGVtKHZhbHVlLmIudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVt
KHZhbHVlLmMudmFsdWVfb3IoMCkpOwpAQCAtNTgxLDcgKzU4MSw3IEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24oY29uCiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsK
ICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxkb3VibGU+PiB0cmFjZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGRvdWJsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJh
eU9mPGRvdWJsZT4+IHRyYWNlID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAg
ICBhdXRvIHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxT
dGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGFja1RyYWNlLT5zaXplKCk7ICsraSkKICAgICAgICAgdHJhY2UtPmFkZEl0ZW0oaW5k
ZXhGb3JEYXRhKHN0YWNrVHJhY2UtPmF0KGkpKSk7CkBAIC01OTAsMTMgKzU5MCwxMyBAQCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQWN0aW9uKGNvbgogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLVJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZhc0dyYWRpZW50JiBjYW52YXNHcmFk
aWVudCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFz
OjpidWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoY29uc3QgQ2FudmFzR3JhZGllbnQmIGNhbnZh
c0dyYWRpZW50KQogewogICAgIGNvbnN0IGF1dG8mIGdyYWRpZW50ID0gY2FudmFzR3JhZGllbnQu
Z3JhZGllbnQoKTsKIAogICAgIFN0cmluZyB0eXBlID0gZ3JhZGllbnQudHlwZSgpID09IEdyYWRp
ZW50OjpUeXBlOjpSYWRpYWwgPyBBU0NJSUxpdGVyYWwoInJhZGlhbC1ncmFkaWVudCIpIDogQVND
SUlMaXRlcmFsKCJsaW5lYXItZ3JhZGllbnQiKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxmbG9hdD4+IHBhcmFtZXRlcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxmbG9hdD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGZsb2F0Pj4g
cGFyYW1ldGVycyA9IEpTT046OkFycmF5T2Y8ZmxvYXQ+OjpjcmVhdGUoKTsKICAgICBXVEY6OnN3
aXRjaE9uKGdyYWRpZW50LmRhdGEoKSwKICAgICAgICAgWyZwYXJhbWV0ZXJzXSAoY29uc3QgR3Jh
ZGllbnQ6OkxpbmVhckRhdGEmIGRhdGEpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPmFkZEl0
ZW0oZGF0YS5wb2ludDAueCgpKTsKQEAgLTYxNCwyMiArNjE0LDIyIEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
cnJheUZvckNhCiAgICAgICAgIH0KICAgICApOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gc3RvcHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpT
T046OlZhbHVlPj4gc3RvcHMgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChhdXRvJiBjb2xvclN0b3AgOiBncmFkaWVudC5zdG9wcygpKSB7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IHN0b3AgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgICAg
ICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IHN0b3AgPSBKU09OOjpBcnJheU9m
PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgICAgIHN0b3AtPmFkZEl0ZW0oY29sb3JTdG9w
Lm9mZnNldCk7CiAgICAgICAgIHN0b3AtPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKGNvbG9yU3RvcC5j
b2xvci5jc3NUZXh0KCkpKTsKICAgICAgICAgc3RvcHMtPmFkZEl0ZW0oV1RGTW92ZShzdG9wKSk7
CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZh
bHVlPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBK
U09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0o
aW5kZXhGb3JEYXRhKHR5cGUpKTsKICAgICBhcnJheS0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKICAgICBhcnJheS0+YWRkSXRlbShXVEZNb3ZlKHN0b3BzKSk7CiAgICAgcmV0dXJuIGFy
cmF5OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+
PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZh
c1BhdHRlcm4mIGNhbnZhc1BhdHRlcm4pCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1
ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2Fu
dmFzUGF0dGVybiYgY2FudmFzUGF0dGVybikKIHsKICAgICBJbWFnZSYgdGlsZUltYWdlID0gY2Fu
dmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNp
emUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC02NDcsMjkgKzY0NywyOSBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYQogICAgIGVsc2UKICAgICAgICAgcmVwZWF0ID0gQVND
SUlMaXRlcmFsKCJuby1yZXBlYXQiKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShp
bWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKSkpOwogICAgIGFycmF5LT5hZGRJdGVt
KGluZGV4Rm9yRGF0YShyZXBlYXQpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLVJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6
YnVpbGRBcnJheUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkKK1JlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogewotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBkYXRhID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4g
ZGF0YSA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbWFnZURhdGEuZGF0YSgpLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBkYXRhLT5h
ZGRJdGVtKGltYWdlRGF0YS5kYXRhKCktPml0ZW0oaSkpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3Jl
YXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0oV1RGTW92ZShkYXRhKSk7CiAgICAgYXJyYXktPmFk
ZEl0ZW0oaW1hZ2VEYXRhLndpZHRoKCkpOwogICAgIGFycmF5LT5hZGRJdGVtKGltYWdlRGF0YS5o
ZWlnaHQoKSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JJ
bWFnZUJpdG1hcChjb25zdCBJbWFnZUJpdG1hcCYgaW1hZ2VCaXRtYXApCitSZWZQdHI8SlNPTjo6
QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdl
Qml0bWFwKGNvbnN0IEltYWdlQml0bWFwJiBpbWFnZUJpdG1hcCkKIHsKICAgICAvLyBGSVhNRTog
TmVlZHMgdG8gaW5jbHVkZSB0aGUgZGF0YSBzb21laG93LgotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0
ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oaW1hZ2VCaXRtYXAud2lk
dGgoKSkpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oaW1hZ2VCaXRtYXAu
aGVpZ2h0KCkpKTsKICAgICByZXR1cm4gYXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggMGI5NjExYjJlZDY5MzhmMTlkZjQ5N2ZlM2NiYmQzZWYw
MzE4ZmJmZC4uMmY2YzY0NzI0ODI3MzE1YzVlNzRmYmEyNGRkMTExNzc3ZmFjMjRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaApAQCAtNjIsOCArNjIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5nJiwgVmVjdG9yPFJl
Y29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogCiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiYmIHJlbGVhc2VJbml0aWFsU3Rh
dGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+JiYgcmVsZWFzZUZyYW1lcygpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+JiYgcmVsZWFzZURhdGEo
KTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRp
bmc6OkZyYW1lPj4mJiByZWxlYXNlRnJhbWVzKCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+PiYmIHJlbGVhc2VEYXRhKCk7CiAKICAgICB2b2lkIGZpbmFsaXplRnJhbWUo
KTsKICAgICB2b2lkIG1hcmtDdXJyZW50RnJhbWVJbmNvbXBsZXRlKCk7CkBAIC0xMDAsMjEgKzEw
MCwyMSBAQCBwcml2YXRlOgogCiAgICAgaW50IGluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFy
aWFudCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlh
bFN0YXRlPiBidWlsZEluaXRpYWxTdGF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yQ2FudmFzR3Jh
ZGllbnQoY29uc3QgQ2FudmFzR3JhZGllbnQmKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25z
dCBDYW52YXNQYXR0ZXJuJik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmKTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWls
ZEFycmF5Rm9ySW1hZ2VCaXRtYXAoY29uc3QgSW1hZ2VCaXRtYXAmKTsKKyAgICBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKKyAgICBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVudChjb25zdCBD
YW52YXNHcmFkaWVudCYpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFzUGF0dGVybiYpOworICAgIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckltYWdlRGF0YShj
b25zdCBJbWFnZURhdGEmKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+
IGJ1aWxkQXJyYXlGb3JJbWFnZUJpdG1hcChjb25zdCBJbWFnZUJpdG1hcCYpOwogCiAgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKICAgICBIVE1MQ2FudmFzRWxlbWVudCYgbV9jYW52YXM7CiAgICAg
U3RyaW5nIG1fY3NzQ2FudmFzTmFtZTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gbV9pbml0aWFsU3RhdGU7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6
RnJhbWU+PiBtX2ZyYW1lczsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+PiBtX2N1cnJlbnRBY3Rpb25zOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVlZGluZ1NuYXBzaG90OwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IG1fc2VyaWFs
aXplZER1cGxpY2F0ZURhdGE7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+IG1fZnJhbWVzOworICAgIFJlZlB0cjxKU09OOjpB
cnJheU9mPEpTT046OlZhbHVlPj4gbV9jdXJyZW50QWN0aW9uczsKKyAgICBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVlZGluZ1NuYXBzaG90OworICAgIFJlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YTsK
ICAgICBWZWN0b3I8RHVwbGljYXRlRGF0YVZhcmlhbnQ+IG1faW5kZXhlZER1cGxpY2F0ZURhdGE7
CiAgICAgZG91YmxlIG1fY3VycmVudEZyYW1lU3RhcnRUaW1lIHsgTkFOIH07CiAgICAgc2l6ZV90
IG1fYnVmZmVyTGltaXQgeyAxMDAgKiAxMDI0ICogMTAyNCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGFiM2JkZmMxOWVjZGY1
N2MyZWE2NTBkMmI1ZTgxNzJiNWZkNTk2YmQuLmEzYzJmMDhjZDRhNjQyZTdkNDNkMjEzMmFhZGI0
NGQ2ZDBhYjQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmdldEhpZ2hsaWdodChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6
QwogICAgIG1fb3ZlcmxheS0+Z2V0SGlnaGxpZ2h0KGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3Rl
bSk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVjdG9yQ29udHJvbGxl
cjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3QKK1JlZjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+
PiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBj
b25zdAogewogICAgIHJldHVybiBtX292ZXJsYXktPmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWRO
b2RlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggYmE5YTMyYmU1ZTZiMDBhNzg5ZjMxN2ZmMGE0MmFhY2ExZjE1MTc3My4uNGJk
N2U3YjZkYjNmZjIzYjAwZmNmODIyZTMxMzM3OThkMGFmMWU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWlsZE9iamVjdEZvckhpZ2hsaWdo
dGVkTm9kZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZENvbXBvc2l0ZShGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggYTI0MzM2ZjUzNjA5ZTUyMDYxMDM3ZjM2NjA1
MTJiMWRlMTY4MzM2Ny4uZmUwZGEwYWUxZGIzMWUzZmYxZWQ0N2UzMzhjY2Y5NzU2MWU3YzY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAt
MzM3LDcgKzMzNyw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpRdWFkPiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hCiAKIHN0YXRpYyBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+IGJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGNvbnN0IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQogewotICAg
IGF1dG8gYXJyYXlPZlF1YWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPjo6Y3JlYXRlKCk7CisgICAgYXV0byBhcnJh
eU9mUXVhZHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBl
czo6UXVhZD46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcXVhZCA6IGhpZ2hsaWdodC5xdWFk
cykKICAgICAgICAgYXJyYXlPZlF1YWRzLT5hZGRJdGVtKGJ1aWxkQXJyYXlGb3JRdWFkKHF1YWQp
KTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlUGFp
bnRSZWN0c1RpbWVyRmlyZWQoKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJl
Y3RzKCkKIHsKLSAgICBhdXRvIGFycmF5T2ZSZWN0cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVjdD46OmNyZWF0ZSgpOwor
ICAgIGF1dG8gYXJyYXlPZlJlY3RzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVhdGUoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX3BhaW50UmVjdHMpCiAgICAgICAgIGFycmF5T2ZSZWN0cy0+YWRkSXRlbShidWlsZE9i
amVjdEZvclJlY3QocGFpci5zZWNvbmQpKTsKIApAQCAtNDI2LDkgKzQyNiw5IEBAIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlM
aXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRI
aWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQorc3RhdGljIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21l
bnRIaWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQogewotICAgIGF1
dG8gYXJyYXlPZkZyYWdtZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPjo6Y3JlYXRl
KCk7CisgICAgYXV0byBhcnJheU9mRnJhZ21lbnRzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT46OmNyZWF0ZSgp
OwogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0
KHJlbmRlcmVyLCBjb25maWcsIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0
ZVN5c3RlbTo6Vmlldyk7CkBAIC01NjAsNyArNTYwLDcgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWlsZE9iamVjdEZvckVs
ZW0KICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYg
aXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgYXV0byBjbGFzc2VzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8g
Y2xhc3NlcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKICAgICAgICAgY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgY2xhc3NOYW1lc1N0cmluZyA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1l
bnQpLmNsYXNzTmFtZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05h
bWVzU3RyaW5nLnNpemUoKTsgKytpKSB7CkBAIC02MjIsNyArNjIyLDcgQEAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+IEluc3BlY3Rv
ck92ZXJsYXk6OmIKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFycmF5T2ZGcmFnbWVu
dEhpZ2hsaWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMocmVuZGVyZXIsIG1f
bm9kZUhpZ2hsaWdodENvbmZpZyk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+PiBhcnJheU9m
RnJhZ21lbnRIaWdobGlnaHRzID0gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKHJlbmRl
cmVyLCBtX25vZGVIaWdobGlnaHRDb25maWcpOwogICAgIGlmICghYXJyYXlPZkZyYWdtZW50SGln
aGxpZ2h0cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTY0Miw5ICs2NDIsOSBAQCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0
YT4gSW5zcGVjdG9yT3ZlcmxheTo6YgogICAgIHJldHVybiBXVEZNb3ZlKG5vZGVIaWdobGlnaHRP
YmplY3QpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IEluc3BlY3Rvck92ZXJs
YXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0CitSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRh
Pj4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29u
c3QKIHsKLSAgICBhdXRvIGhpZ2hsaWdodHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPjo6Y3Jl
YXRlKCk7CisgICAgYXV0byBoaWdobGlnaHRzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPjo6Y3JlYXRlKCk7CiAKICAg
ICBpZiAobV9oaWdobGlnaHROb2RlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gbm9kZUhpZ2hsaWdodERh
dGEgPSBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUobV9oaWdobGlnaHROb2RlLmdldCgpLCBI
aWdobGlnaHRUeXBlOjpOb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5oCmluZGV4IDQ5ZDVlZmM0Y2E2YTZhNTczNmQ4YzMzNjZmOWFmNDcwZDVlOGNhZTcu
LmZmMTc5NzEyMzlhMmYyMjYyNWI0Zjg4MmY2NDg1N2E1YWZmZGEyNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKIAogICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRh
PiBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUoTm9kZSosIEhpZ2hsaWdodFR5cGUpIGNvbnN0
OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVpbGRPYmplY3RGb3JIaWdobGln
aHRlZE5vZGVzKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlcygpIGNvbnN0OwogCiAgICAgdm9pZCBmcmVlUGFnZSgpOwogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCBmN2NkOTQ5YTJjY2Y2NjUxMDdiZDAzYjZiNTI0NDg2NDVhN2YxNzI3Li5jMTI0MjY1Yjhi
YWFmMWRjYjI1ZjE4YmYwMDY0NmRhNTdjMDlkNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4
cHJlc3Npb24uaD4KIAotdXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk7Cit1c2luZyBK
U09OOjpBcnJheU9mOwogdXNpbmcgV2ViQ29yZTo6UnVsZVNvdXJjZURhdGFMaXN0OwogdXNpbmcg
V2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMg
UmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1J1bGUqIHJ1bGUpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxl
KiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPiYgbWVkaWFB
cnJheSkKK3N0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+JiBtZWRpYUFycmF5
KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUg
PSBydWxlOwpAQCAtNTQ4LDkgKzU0OCw5IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpCiAgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4g
SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3QKK1JlZjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3QKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7
CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPEluc3Bl
Y3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9wdWxhdGVBbGxQcm9wZXJ0aWVz
KCZwcm9wZXJ0aWVzKTsKIApAQCAtNjE5LDggKzYxOSw4IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygp
IGNvCiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAg
cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAotICAgIGF1dG8gcHJvcGVydGll
c09iamVjdCA9IEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+Ojpj
cmVhdGUoKTsKLSAgICBhdXRvIHNob3J0aGFuZEVudHJpZXMgPSBBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBwcm9wZXJ0
aWVzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBzaG9ydGhhbmRFbnRyaWVzID0gQXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OwogICAgIEhhc2hTZXQ8
U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CkBA
IC0xMDg2LDcgKzEwODYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogICAgICAgICAgICAg
c3BlY2lmaWNpdHkgPSBzZWxlY3Rvci5zdGF0aWNTcGVjaWZpY2l0eShva2F5KTsKIAogICAgICAg
ICBpZiAob2theSkgewotICAgICAgICAgICAgYXV0byB0dXBsZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byB0dXBsZSA9IEpTT046
OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB0dXBsZS0+YWRkSXRlbShzdGF0
aWNfY2FzdDxpbnQ+KChzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjppZE1hc2spID4+IDE2KSk7
CiAgICAgICAgICAgICB0dXBsZS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KChzcGVjaWZpY2l0
eSAmIENTU1NlbGVjdG9yOjpjbGFzc01hc2spID4+IDgpKTsKICAgICAgICAgICAgIHR1cGxlLT5h
ZGRJdGVtKHN0YXRpY19jYXN0PGludD4oc3BlY2lmaWNpdHkgJiBDU1NTZWxlY3Rvcjo6ZWxlbWVu
dE1hc2spKTsKQEAgLTEwOTcsMTEgKzEwOTcsMTEgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKGMK
ICAgICByZXR1cm4gaW5zcGVjdG9yU2VsZWN0b3I7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+
IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEs
IGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9y
TGlzdCwgRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25z
dCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQs
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
PiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSwg
SlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rv
cj46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7CiAgICAgZm9yIChhdXRvJiBy
YW5nZSA6IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2VzKSB7CiAgICAgICAgIC8vIElmIHdlIGRv
bid0IGhhdmUgYSBzZWxlY3RvciwgdGhhdCBtZWFucyB0aGUgU291cmNlRGF0YSBmb3IgdGhpcyBD
U1NTdHlsZVNoZWV0CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9y
UwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YTsKICAgICBpZiAoZW5z
dXJlUGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAgIHNvdXJjZURhdGEgPSBydWxlU291cmNlRGF0
YUZvcigmcnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnM7Cisg
ICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxl
Y3Rvcj4+IHNlbGVjdG9yczsKIAogICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBy
ZWx5IG9uIHRoZSBzb3VyY2UgZGF0YSB0byBhdm9pZCBjYXRjaGluZyB0aGUgdHJhaWxpbmcgY29t
bWVudHMgKGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgJ3snKS4KICAgICBTdHJpbmcg
c2VsZWN0b3JUZXh0ID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBAIC0xMTM5LDcgKzExMzksNyBA
QCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAgICBz
ZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFyc2Vk
U3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUoKS5zZWxlY3Rvckxpc3QoKSwgZWxl
bWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9ycyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUo
KTsKKyAgICAgICAgc2VsZWN0b3JzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c3R5bGVSdWxlKCkuc2VsZWN0b3JMaXN0KCk7CiAg
ICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3Rv
cikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWxlY3Rv
cihzZWxlY3RvciwgZWxlbWVudCkpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRP
YmplY3RGb3JSdWwKICAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlkLmFzUHJvdG9jb2xW
YWx1ZTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGVJZD4oKSk7CiAgICAgfQogCi0g
ICAgYXV0byBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NN
ZWRpYT46OmNyZWF0ZSgpOworICAgIGF1dG8gbWVkaWFBcnJheSA9IEFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlz
dENoYWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5n
dGgoKSkKQEAgLTExOTUsOCArMTE5NSw4IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0CiAgICAg
SW5zcGVjdG9yQ1NTSWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMoQXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpKQotICAgICAgICAgICAg
LnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9y
dGhhbmRFbnRyeT46OmNyZWF0ZSgpKQorICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMoQXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCkpCisg
ICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKSkKICAgICAgICAgICAgIC5yZWxlYXNl
KCk7CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBp
bnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKQEAgLTE0NDIsOSArMTQ0Miw5IEBAIGJvb2wgSW5zcGVj
dG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQorUmVmPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAg
ICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCAyNmU1ZWVkYjkyMDkw
OTc0NzY5NzMxMGM0ZmUwNjI4NzZkOGMwYTNjLi4zOGE4YjlkNDM0NWE5MmM0ZDQ5NzYzODM5NDUy
NjhjNTJlNGMwNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBDU1NTdHlsZURl
Y2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RG
b3JTdHlsZSgpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJy
YXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBidWlsZEFycmF5
Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0ZXh0
KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VGV4dChjb25zdCBTdHJpbmcmKTsK
QEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3JpZ2luYWxTdHlsZVNoZWV0
VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCByZXNvdXJjZVN0eWxlU2hlZXRU
ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIGlubGluZVN0eWxlU2hlZXRUZXh0
KFN0cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVM
aXN0KENTU1J1bGVMaXN0Kik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7
CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2Jq
ZWN0Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kik7CiAgICAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVj
dG9yTGlzdChDU1NTdHlsZVJ1bGUqLCBFbGVtZW50KiwgaW50JiBlbmRpbmdMaW5lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDQ2OTQ3ODkwNGU5YzZiNDAzNDY1
NTVhODFhMTgyYzVjMzdhNTA3ODAuLjYyMzZiYWYwNDk2NGM2MmQ2NTMwMmU1ZGZkMjJmMTdhYTM5
NmY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTg1LDkgKzg1
LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNo
YW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3b3JrU3RhdGVVcGRhdGVkKE5l
dHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3Rz
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQogewotICAgIHJl
c3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFw
cGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpG
cmFtZVdpdGhNYW5pZmVzdD46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CkBAIC0xNDUsOSArMTQ1LDkgQEAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3Rv
ckFwcGxpY2F0aW8KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVp
bGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgVmVjdG9yPEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQor
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBw
bGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZXMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXBwbGljYXRpb25DYWNoZVJlc291cmNl
cykKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKGluZm8pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKaW5kZXggMDgwZmU1MTViYzJmMjc1Zjg1YmRlYzI3N2VmNjg3Mjc2MTZiMWRj
ZS4uNzk1MWY4MzYyNWMxNmMwMjU1M2ZkNTdlMzg4MTU1YWM0ZDcyODVkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KSBvdmVycmlkZTsK
KyAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdp
dGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0TWFuaWZlc3RGb3JG
cmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBtYW5pZmVz
dFVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgVmVj
dG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+JiwgY29uc3QgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25z
dCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mKTsKKyAgICBSZWY8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291
cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mKTsK
ICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7CiAKICAgICBEb2N1bWVu
dExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2MDI1YWRjZjMwMDE5OGJiNTRiNWVh
MGYyYTJiMTE1MDdkZjZhMTNkLi45ODgyODY0ODJlOTMxNzA5NDMwYTU1NDJlZWI3N2U2YmQ3N2Iy
YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6
OlBzCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wq
IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRj
aD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNo
ZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9v
bCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9J
ZE1hdGNoZXMsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKQogewogICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFl
bGVtZW50KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
aWYgKCFvcmlnaW5hbEVsZW1lbnQtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIC8vIFBz
ZXVkbyBlbGVtZW50cy4KICAgICAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRlUHNl
dWRvKSB7Ci0gICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+Ojpj
cmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVCTElDX1BTRVVET0lE
OyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBzZXVkb0lkID0gc3Rh
dGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAgICAgICAgICAgICAgICBhdXRv
IG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQo
ZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAg
ICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKQEAgLTQ3MSw3ICs0NzEsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAgICAgIC8vIEluaGVyaXRlZCBzdHlsZXMu
CiAgICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkgewot
ICAgICAgICAgICAgYXV0byBlbnRyaWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgRWxl
bWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAg
ICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgU3R5bGVSZXNvbHZl
ciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsK
QEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZAogICAgICAgICBhdHRy
aWJ1dGVzU3R5bGUgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRD
b21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5bGUpCiB7CiAgICAgYXV0byogZWxlbWVu
dCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQp
CkBAIC01MTksOSArNTE5LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRT
dHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICBzdHlsZSA9
IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlSW5mb3Mp
CiB7Ci0gICAgc3R5bGVJbmZvcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOworICAgIHN0
eWxlSW5mb3MgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlU2hl
ZXQqPiBpbnNwZWN0b3JTdHlsZVNoZWV0czsKICAgICBjb2xsZWN0QWxsU3R5bGVTaGVldHMoaW5z
cGVjdG9yU3R5bGVTaGVldHMpOwpAQCAtNzExLDkgKzcxMSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0
eWxlU2hlCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JS
dWxlKHJ1bGUsIG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBw
b3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNz
c1Byb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBhdXRv
IHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOworICAgIGF1dG8gcHJvcGVydGll
cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUlu
Zm8+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQcm9wZXJ0eTsgaSA8PSBs
YXN0Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkID0gY29udmVy
dFRvQ1NTUHJvcGVydHlJRChpKTsKICAgICAgICAgaWYgKGlzSW50ZXJuYWxDU1NQcm9wZXJ0eShp
ZCkpCkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9y
dGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3IKICAgICAgICAg
ICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0oV1RGTW92ZShwcm9wZXJ0eSkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBsb25naGFuZHMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBsb25naGFu
ZHMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsKICAgICAgICAgICAgIENT
U1Byb3BlcnR5SUQgbG9uZ2hhbmRJRCA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAg
ICAgICAgICBsb25naGFuZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGxvbmdoYW5k
SUQpKTsKQEAgLTczOSw5ICs3MzksOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBw
b3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3RvcgogICAgIGNz
c1Byb3BlcnRpZXMgPSBXVEZNb3ZlKHByb3BlcnRpZXMpOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIGZvbnRGYW1pbHlOYW1l
cykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlO
YW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBmb250RmFt
aWx5TmFtZXMpCiB7Ci0gICAgYXV0byBmYW1pbGllcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZmFtaWxpZXMgPSBKU09OOjpBcnJheU9m
PFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3lzdGVtRm9udEZhbWls
aWVzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250RmFtaWxpZXMoKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGZhbWlseU5hbWUgOiBzeXN0ZW1Gb250RmFtaWxpZXMpCkBAIC04ODgs
OSArODg4LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5z
cGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICByZXR1cm4gaW5zcGVjdG9y
U3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxl
LCBudWxscHRyKSA6IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxl
bWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
Pj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCYg
ZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46
OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3Rp
bmdSdWxlcyk7CiAgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVkb0lkID8gcHNldWRvSWQgOiBl
bGVtZW50LnBzZXVkb0lkKCk7CkBAIC05MDEsNyArOTAxLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5z
cGVjdG8KICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIG1hdGNoaW5nU2VsZWN0b3JzID0gSlNP
Tjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0
JiBzZWxlY3Rvckxpc3QgPSBtYXRjaGVkUnVsZS0+c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGlu
dCBpbmRleCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0g
c2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzZWxlY3RvcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA2YjgwNDIwMTA3MWQ0MjNmODM1MzVkMWVl
OTMyNzkxZDA5YTMxOGJhLi5kYTM4OTUyYmRmOTJmOWRiZGU0MDZjZTlhMWMzMWQ3ZWQ3ODk3ZjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5oCkBAIC05NywxMCArOTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWN0aXZlU3R5
bGVTaGVldHNVcGRhdGVkKERvY3VtZW50Jik7CiAgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKGNv
bnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAotICAgIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1ND
b21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Q29tcHV0ZWRT
dHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwg
aW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBp
bmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBh
dHRyaWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVBzZXVkbywg
Y29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNo
ZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVl
dHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZv
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJv
b2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVk
U3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEFs
bFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlU2hlZXRCb2R5PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRU
ZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVz
dWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7
CkBAIC0xMDgsOCArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVy
cm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQp
IG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlU3R5bGVTaGVldChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgYWRkUnVsZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5
SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0U3VwcG9ydGVkU3lzdGVtRm9u
dEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4m
IHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGZvcmNlZFBzZXVkb0NsYXNzZXMpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1
bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5
bGVSdWxlKik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlz
dChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1l
bnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYsIFBz
ZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4g
YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwogCiAgICAgLy8g
SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCmluZGV4IDc4MTY1MjRmMjJmNmY1MWI1ZmRjZDQ4NTE1ZWU4ZThkM2UyNGU1MzcuLjMyMjZj
OTliYTM1YTg1NTk2NmRkNGExNzUxNDI0NGY3MGE0Yjc4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBA
IC0xOTEsMTMgKzE5MSwxMyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0Q29u
dGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBlcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQgY2FudmFzIGNvbnRleHQgdHlwZSIp
OwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0Q1NTQ2FudmFzQ2xpZW50
Tm9kZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDU1NDYW52YXNDbGllbnROb2RlcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPGludD4+JiByZXN1bHQpCiB7CiAgICAgYXV0byogaW5zcGVjdG9yQ2FudmFzID0gYXNzZXJ0
SW5zcGVjdG9yQ2FudmFzKGVycm9yU3RyaW5nLCBjYW52YXNJZCk7CiAgICAgaWYgKCFpbnNwZWN0
b3JDYW52YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8
aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50IDogaW5zcGVjdG9yQ2Fu
dmFzLT5jYW52YXMoKS5jc3NDYW52YXNDbGllbnRzKCkpIHsKICAgICAgICAgaWYgKGludCBkb2N1
bWVudE5vZGVJZCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpLT5i
b3VuZE5vZGVJZCgmZWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAgICByZXN1bHQtPmFk
ZEl0ZW0obV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCktPnB1c2hOb2Rl
VG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGVsZW1lbnQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaAppbmRleCA1M2YxMmExN2RlNjQwYWE2OWIyM2NiOWVhMzczMDE4MjA3OGJlYzZhLi5kY2Ji
NjJiNGQ4ZTkxNmVhZGE3NGM2ODdhYWExYzk0ZmU4N2Q3MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03
MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
YW52YXNJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdENvbnRlbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBTdHJpbmcqIGNvbnRlbnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0Q1NTQ2FudmFzQ2xpZW50Tm9k
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25zdCBzaW5nbGVGcmFtZSwgY29u
c3QgaW50KiBjb25zdCBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IGZhYzVhNDc2YjU1MGI2MDQ1ODZmOGFlODRkNjg1YjFkMTRhMWNjOGQuLmQyYzYz
NWRmZTVhMDgzOWE2M2E5ZDBjNjcyZmUwZjlhN2JjYzQwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01NTAs
NyArNTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAgKmVsZW1lbnRJZCA9
IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PGludD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVj
dG9yQWxsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiByZXN1bHQpCiB7CiAgICAg
Tm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFu
b2RlKQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2Vs
ZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgfQog
CiAgICAgYXV0byBub2RlcyA9IHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAg
IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAg
IHJlc3VsdCA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5vZGVzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICByZXN1bHQtPmFkZEl0
ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOwogfQpAQCAtNTk3LDcg
KzU5Nyw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChO
b2RlKiBub2RlVG9QdXNoKQogICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0
KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVs
ZWFzZSgpKTsKLSAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7CiAgICAgICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBXVEZNb3ZlKGNoaWxkcmVuKSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTgzMCw5ICs4MzAsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdAogICAgIG1fZG9tRWRpdG9yLT5yZXBsYWNlV2hvbGVUZXh0KGRvd25jYXN0PFRleHQ+KCpu
b2RlKSwgdmFsdWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0
ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKIHsKLSAgICBsaXN0ZW5lcnNBcnJh
eSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOworICAgIGxpc3RlbmVyc0FycmF5ID0gSlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsK
ICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB3aAogICAgICpyZXN1bHRDb3VudCA9IHJlc3VsdHNWZWN0b3Iuc2l6ZSgpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50
IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgbm9kZUlk
cykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQg
dG9JbmRleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mIG5vZGVJZHMpCiB7CiAgICAgU2Vh
cmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmluZChzZWFyY2hJZCk7
CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewpAQCAtOTgzLDcgKzk4Myw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Cisg
ICAgbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQg
aSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKICAgICAgICAgbm9kZUlkcy0+YWRkSXRl
bShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgpKSk7CiB9CkBAIC0x
MzQwLDcgKzEzNDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAgcmVzdWx0ID0gb2Jq
ZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRy
aWJ1dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNz
ZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0x
NDY3LDcgKzE0NjcsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAgaWYgKG5vZGUtPmlz
Q29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291bnQgPSBpbm5lckNoaWxkTm9k
ZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGROb2RlQ291bnQobm9kZUNvdW50
KTsKLSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxk
cmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAgIFJlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CiAgICAgICAgIGlmIChjaGls
ZHJlbi0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENoaWxkcmVuKFdURk1v
dmUoY2hpbGRyZW4pKTsKICAgICB9CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVs
ZW1lbnQuc2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNoYWRvd1Jvb3RzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHNoYWRvd1Jvb3RzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHNo
YWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCBub2Rlc01hcCkp
OwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKFdURk1vdmUoc2hhZG93Um9vdHMp
KTsKICAgICAgICAgfQpAQCAtMTU0MSw5ICsxNTQxLDkgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2Rl
KgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoRWxlbWVudCogZWxlbWVudCkKK1JlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVu
dCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXNWYWx1ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gYXR0cmlidXRlc1ZhbHVlID0gSlNPTjo6
QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBhdHRyaWJ1
dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KICAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMo
KSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKQEAgLTE1NTUsOSArMTU1NSw5IEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRBcnJheUZvckVsZW1lbnRBCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKIH0K
IAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1Jl
ZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVy
LCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKLSAgICBhdXRvIGNoaWxkcmVu
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRoID09IDAp
IHsKICAgICAgICAgLy8gU3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBwcmV0ZW5k
IHRoYXQgY29udGFpbmVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAgICAgICAg
Tm9kZSogZmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwpAQCAtMTU3OSwxNCAr
MTU3OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbgogICAgIHJldHVybiBjaGlsZHJlbjsK
IH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxl
bWVudHMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7CiAgICAgUHNldWRvRWxlbWVudCogYmVm
b3JlRWxlbWVudCA9IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOwogICAgIFBzZXVkb0Vs
ZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CiAgICAg
aWYgKCFiZWZvcmVFbGVtZW50ICYmICFhZnRlckVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOworICAgIGF1dG8g
cHNldWRvRWxlbWVudHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChiZWZvcmVFbGVtZW50KQogICAgICAgICBwc2V1ZG9F
bGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVmb3JlRWxlbWVudCwgMCwgbm9k
ZXNNYXApKTsKICAgICBpZiAoYWZ0ZXJFbGVtZW50KQpAQCAtMTY1NiwxNCArMTY1NiwxNCBAQCBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgIHJldHVybiB2YWx1ZTsKIH0KICAgICAKLXZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUmVmUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxpbnQ+PiYmIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBy
b2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYg
YXhPYmplY3QsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiYgY2hpbGROb2RlSWRzKQogewog
ICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYXhPYmplY3QtPmNoaWxkcmVuKCk7CiAgICAgaWYg
KCFjaGlsZHJlbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoIWNoaWxk
Tm9kZUlkcykKLSAgICAgICAgY2hpbGROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIGNoaWxkTm9kZUlkcyA9IEpTT046OkFycmF5T2Y8
aW50Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZE9iamVjdCA6
IGNoaWxkcmVuKSB7CiAgICAgICAgIGlmIChOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZE9iamVjdC0+
bm9kZSgpKQpAQCAtMTY4NSwxMyArMTY4NSwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQog
ICAgIE5vZGUqIGFjdGl2ZURlc2NlbmRhbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIGJ1c3kg
PSBmYWxzZTsKICAgICBhdXRvIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFj
Y2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRzOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjb250cm9sbGVkTm9kZUlkczsKKyAgICBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBjaGlsZE5vZGVJZHM7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8aW50Pj4gY29udHJvbGxlZE5vZGVJZHM7CiAgICAgYXV0byBjdXJyZW50U3RhdGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50
OjpGYWxzZTsKICAgICBib29sIGV4aXN0cyA9IGZhbHNlOwogICAgIGJvb2wgZXhwYW5kZWQgPSBm
YWxzZTsKICAgICBib29sIGRpc2FibGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD4+IGZsb3dlZE5vZGVJZHM7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8aW50Pj4gZmxvd2VkTm9kZUlkczsKICAgICBib29sIGZvY3VzZWQgPSBmYWxzZTsKICAg
ICBib29sIGlnbm9yZWQgPSB0cnVlOwogICAgIGJvb2wgaWdub3JlZEJ5RGVmYXVsdCA9IGZhbHNl
OwpAQCAtMTY5OSwxNyArMTY5OSwxNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgIGJv
b2wgaGlkZGVuID0gZmFsc2U7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGJvb2wgbGl2ZVJlZ2lv
bkF0b21pYyA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8U3Ry
aW5nPj4gbGl2ZVJlZ2lvblJlbGV2YW50OwogICAgIGF1dG8gbGl2ZVJlZ2lvblN0YXR1cyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkxpdmVSZWdp
b25TdGF0dXM6Ok9mZjsKICAgICBOb2RlKiBtb3VzZUV2ZW50Tm9kZSA9IG51bGxwdHI7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IG93bmVkTm9kZUlkczsKKyAg
ICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBvd25lZE5vZGVJZHM7CiAgICAgTm9kZSogcGFy
ZW50Tm9kZSA9IG51bGxwdHI7CiAgICAgYm9vbCBwcmVzc2VkID0gZmFsc2U7CiAgICAgYm9vbCBy
ZWFkb25seSA9IGZhbHNlOwogICAgIGJvb2wgcmVxdWlyZWQgPSBmYWxzZTsKICAgICBTdHJpbmcg
cm9sZTsKICAgICBib29sIHNlbGVjdGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRzOworICAgIFJlZlB0cjxK
U09OOjpBcnJheU9mPGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRzOwogICAgIGJvb2wgc3VwcG9y
dHNDaGVja2VkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkID0gZmFsc2U7CiAg
ICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24gPSBmYWxzZTsKQEAgLTE3NTAsNyArMTc1MCw3IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGNv
bnRyb2xsZWRFbGVtZW50czsKICAgICAgICAgICAgIGF4T2JqZWN0LT5lbGVtZW50c0Zyb21BdHRy
aWJ1dGUoY29udHJvbGxlZEVsZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7CiAgICAgICAgICAg
ICBpZiAoY29udHJvbGxlZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRy
b2xsZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICAgICAgY29udHJvbGxlZE5vZGVJZHMgPSBKU09OOjpBcnJheU9mPGludD46
OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoRWxlbWVudCogY29udHJvbGxlZEVsZW1l
bnQgOiBjb250cm9sbGVkRWxlbWVudHMpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWRO
b2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoY29udHJvbGxlZEVsZW1lbnQp
KTsKICAgICAgICAgICAgIH0KQEAgLTE3ODksNyArMTc4OSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpCiAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGZsb3dlZEVsZW1lbnRzOwogICAg
ICAgICAgICAgYXhPYmplY3QtPmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93ZWRFbGVtZW50cywg
YXJpYV9mbG93dG9BdHRyKTsKICAgICAgICAgICAgIGlmIChmbG93ZWRFbGVtZW50cy5zaXplKCkp
IHsKLSAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgZmxvd2VkTm9kZUlkcyA9IEpT
T046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50
KiBmbG93ZWRFbGVtZW50IDogZmxvd2VkRWxlbWVudHMpCiAgICAgICAgICAgICAgICAgICAgIGZs
b3dlZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChmbG93ZWRFbGVtZW50
KSk7CiAgICAgICAgICAgICB9CkBAIC0xODI4LDcgKzE4MjgsNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aQogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QWRkaXRpb25z
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OkFkZGl0
aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRSZW1vdmFscyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2YW50OjpSZW1vdmFs
cyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRUZXh0ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlRleHQpOwotICAgICAg
ICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJl
bGV2YW50ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhh
cmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAvLyBAYXJp
YS1yZWxldmFudD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRpb25zIiwicmVtb3ZhbHMiLCJ0
ZXh0Il0sIGluIG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9yZGVyIGlzIGNv
bnRyb2xsZWQgaW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2ViSW5zcGVjdG9yVUkuCkBAIC0x
ODYwLDcgKzE4NjAsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgICAg
IFZlY3RvcjxFbGVtZW50Kj4gb3duZWRFbGVtZW50czsKICAgICAgICAgICAgICAgICBheE9iamVj
dC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKG93bmVkRWxlbWVudHMsIGFyaWFfb3duc0F0dHIpOwog
ICAgICAgICAgICAgICAgIGlmIChvd25lZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBvd25lZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+Ojpj
cmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgb3duZWROb2RlSWRzID0gSlNPTjo6QXJyYXlP
ZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBvd25l
ZEVsZW1lbnQgOiBvd25lZEVsZW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgb3duZWRO
b2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQob3duZWRFbGVtZW50KSk7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTg4Niw3ICsxODg2LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50
OjpidWkKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICAgICAgYXhPYmplY3QtPnNlbGVj
dGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRD
aGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZUlkcyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAg
ICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3Rl
ZENoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxk
Tm9kZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
c2VsZWN0ZWRDaGlsZE5vZGUpKTsKQEAgLTIxNDEsNyArMjE0MSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxp
ZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpCiB7Ci0gICAgYXV0byBub2Rl
SWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgYXV0
byBub2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZChlbGVt
ZW50KTsKICAgICAgICAgLy8gSWYgbm9kZSBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhl
IGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5oCmluZGV4IGMyMDcxZDlhNjJjYjg4OGIzNDJmZGFkNzE4ZWNlYWExZTM1ZDFm
N2QuLjBkMDAyYmFhYWQxMGQyNzA5ZjgyODliYWQyMTY0ZjRlODIwM2UyNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAg
LTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRo
ZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCiAgICAgdm9pZCBxdWVyeVNlbGVj
dG9yKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGlu
dCogZWxlbWVudElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZvaWQg
cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYgcmVzdWx0KSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdENoaWxk
Tm9kZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBpbnQqIGRlcHRoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nJiwgaW50IGVsZW1lbnRJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKQEAg
LTEyMywxNCArMTIzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dGVySFRNTChFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKSBvdmVycmlkZTsKICAg
ICB2b2lkIGluc2VydEFkamFjZW50SFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZl
bnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRFdmVu
dExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0
cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0
ZW5lcklkLCBib29sIGRpc2FibGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0
aWVzKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IEpTT046OkFycmF5KiBub2Rl
SWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElk
LCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5k
ZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNj
YXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEF0dHJp
YnV0ZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRBdHRyaWJ1
dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5n
Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJy
b3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IEpTT046Ok9iamVjdCogaGlnaGxpZ2h0Q29u
ZmlnKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaE5v
ZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQq
IG5vZGVJZCkgb3ZlcnJpZGU7CkBAIC0yMzEsMTIgKzIzMSwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGludCBkZXB0aCA9IDEpOwog
CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhF
bGVtZW50Kik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2Rl
KiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmLCBOb2RlVG9J
ZE1hcCogbm9kZXNNYXApOworICAgIFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGJ1aWxkQXJy
YXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNo
aWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXAp
OworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9kZVRvSWRN
YXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExp
c3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IE5vZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQsIGJvb2wgZGlzYWJsZWQgPSBmYWxz
ZSk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9kZSopOwot
ICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiYpOwor
ICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4mJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mJik7CiAgICAgCiAgICAgTm9k
ZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2RlRm9yT2Jq
ZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5k
ZXggZjExOTI5ZmJjYjU1ZDhkYWIyNjlkOGU4NTEyMWFmODkyYjcwNGQwMi4uY2YwYjI4NGVkYmMy
ZGQ2MmIzNDQxMDY2NjM3NWE5YTFkNmVmY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApA
QCAtODgsNyArODgsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMp
Cit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+JiBpdGVtcykKIHsKICAgICBG
cmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRT
dG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFtZSk7CkBAIC05NywxMyArOTcs
MTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgpOworICAgIGF1dG8gc3RvcmFn
ZUl0ZW1zID0gSlNPTjo6QXJyYXlPZjxKU09OOjpBcnJheU9mPFN0cmluZz4+OjpjcmVhdGUoKTsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+bGVuZ3RoKCk7ICsr
aSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShpKTsKICAgICAgICAg
U3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAgICAgICBhdXRvIGVu
dHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAg
ICAgIGF1dG8gZW50cnkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAg
ICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbSh2YWx1ZSk7CiAg
ICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaAppbmRleCA1NzdjMmU3MmUyZWJkNTg0MTU2OGQ4OTZiYWIxNjE2MGYwZmVjM2NmLi4y
ODllNDYzYTY0OTdjYTJlNzZlNTVmNTNhYTVmOGZjMTJiOThmYTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBm
cm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldERPTVN0b3Jh
Z2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgc3RvcmFnZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMo
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SlNPTjo6QXJyYXlPZjxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBz
dG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKaW5kZXggMmM3NzBmNmJiMGE5Zjk3ZjY1YzMxNjEwNTY2NzBjNGU1Mjhi
Njc0OS4uNmVjYjdjZTkxYzMxYjU2ODUwYWVhZTU4YWMxNjliNmM5NDNjMTU1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCkBAIC04MywxMSArODMsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IGF1dG8mIHJvd0xpc3QgPSByZXN1bHRTZXQucm93cygpOwogCi0gICAgICAgIGF1dG8gY29sdW1u
TmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAg
ICAgICAgYXV0byBjb2x1bW5OYW1lcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgICAgIGZvciAoYXV0byYgY29sdW1uIDogcm93TGlzdC5jb2x1bW5OYW1lcygpKQogICAg
ICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uKTsKIAotICAgICAgICBhdXRvIHZh
bHVlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7
CisgICAgICAgIGF1dG8gdmFsdWVzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0
ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcm93TGlzdC52YWx1ZXMoKSkgewogICAg
ICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9IFdURjo6c3dpdGNoT24odmFsdWUsCiAgICAg
ICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gSlNPTjo6VmFs
dWU6Om51bGwoKTsgfSwKQEAgLTI1NiwxNCArMjU2LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVy
cm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBuYW1l
cykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICBlcnJvciA9IEFTQ0lJTGl0ZXJh
bCgiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CisgICAgbmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKGF1dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKSkgewogICAg
ICAgICBmb3IgKGF1dG8mIHRhYmxlTmFtZSA6IGRhdGFiYXNlLT50YWJsZU5hbWVzKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oCmluZGV4IDlhODU1OTg5YTcxZDVhZmEyM2JmYjM3MDA1NmM2ODI5OGVjM2I0ZjUu
Ljk0NjEyN2Y0NjRmYzdhMDAyZTkzODYzMzc1MjJiOGNkYzA4OTdjY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJv
bnQtZW5kLgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXREYXRhYmFzZVRh
YmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpIG92ZXJyaWRlOworICAg
IHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgbmFtZXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAppbmRleCA4ZTQ0YjA2MDI2YWU1ZTk3ZjBjMGZhY2U3MTQ3YjJiMDUxZTRh
OGMxLi40NjVjMzkxMWJhZTZhMWQwZGFiNWVhYzk3YzJiZTMwN2M5ZjMwODg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk7Cit1c2luZyBKU09OOjpBcnJheU9mOwogdXNpbmcgSW5zcGVjdG9yOjpQcm90
b2NvbDo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7CiB1c2luZyBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKIHVzaW5nIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkluZGV4ZWREQjo6S2V5OwpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBSZWZQdHI8
S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4mIGlkCiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJpbmcpOwogICAgICAgICBy
ZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmVjdG9yKSB7
Ci0gICAgICAgIGF1dG8gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6
Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyaW5nIDogdmVjdG9yKQogICAgICAgICAg
ICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKICAgICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBh
dGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxl
YXNlKCk7CkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgICAgIGF1dG8mIGRhdGFiYXNlSW5mbyA9IGRhdGFiYXNlLmluZm8oKTsKLSAg
ICAgICAgYXV0byBvYmplY3RTdG9yZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0U3RvcmVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAgICAgICAgIGF1dG8gb2JqZWN0
U3RvcmVOYW1lcyA9IGRhdGFiYXNlSW5mby5vYmplY3RTdG9yZU5hbWVzKCk7CiAgICAgICAgIGZv
ciAoYXV0byYgbmFtZSA6IG9iamVjdFN0b3JlTmFtZXMpIHsKICAgICAgICAgICAgIGF1dG8qIG9i
amVjdFN0b3JlSW5mbyA9IGRhdGFiYXNlSW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShu
YW1lKTsKICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGluZGV4ZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5k
ZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhlcyA9IEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRl
KCk7CiAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGluZGV4SW5mbyA6IG9iamVjdFN0b3Jl
SW5mby0+aW5kZXhNYXAoKS52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gb2JqZWN0
U3RvcmVJbmRleCA9IE9iamVjdFN0b3JlSW5kZXg6OmNyZWF0ZSgpCkBAIC00MTksMTQgKzQxOSwx
NCBAQCBwcml2YXRlOgogICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQ
RXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgICAgICwgbV9pbmplY3RlZFNjcmlwdChpbmplY3RlZFNj
cmlwdCkKICAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFj
aykpCi0gICAgICAgICwgbV9yZXN1bHQoQXJyYXk8RGF0YUVudHJ5Pjo6Y3JlYXRlKCkpCisgICAg
ICAgICwgbV9yZXN1bHQoSlNPTjo6QXJyYXlPZjxEYXRhRW50cnk+OjpjcmVhdGUoKSkKICAgICAg
ICAgLCBtX3NraXBDb3VudChza2lwQ291bnQpCiAgICAgICAgICwgbV9wYWdlU2l6ZShwYWdlU2l6
ZSkKICAgICB7CiAgICAgfQogICAgIEluamVjdGVkU2NyaXB0IG1faW5qZWN0ZWRTY3JpcHQ7CiAg
ICAgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIFJlZjxB
cnJheTxEYXRhRW50cnk+PiBtX3Jlc3VsdDsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxEYXRhRW50
cnk+PiBtX3Jlc3VsdDsKICAgICBpbnQgbV9za2lwQ291bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdl
U2l6ZTsKIH07CkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KICAg
ICAgICAgaWYgKCFjYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZGF0YWJhc2VO
YW1lQXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsK
KyAgICAgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gZGF0YWJhc2VOYW1lQXJyYXkgPSBK
U09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFi
YXNlTmFtZSA6IGRhdGFiYXNlTmFtZXMpCiAgICAgICAgICAgICBkYXRhYmFzZU5hbWVBcnJheS0+
YWRkSXRlbShkYXRhYmFzZU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGRjNmZh
OWViMzUzZTE4YmIyZDgwNzE0YTI3MjkwMjJiNjkxZjExOWIuLmMxYWIwZTMxOWVkODIzOWNlZDdk
OTNkYzVjMzRlZmMwYWNjOTZlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0xMDIsOSAr
MTAyLDkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVudERlc3Ry
b3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW4KICAgICB1bmJpbmRQc2V1ZG9FbGVtZW50
KCZwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5
ZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6
OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykK
IHsKLSAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CisgICAgbGF5ZXJzID0gSlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7
CiAKICAgICBhdXRvKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5n
UmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCBkb3duY2FzdDxSZW5kZXJFbGVtZW50
PigqcmVuZGVyZXIpLCBsYXllcnMpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXll
cnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRl
ck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXIuaGFzTGF5ZXIoKSkg
ewogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3Ry
aW5nLCBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikubGF5ZXIoKSwg
bGF5ZXJzKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZwogICAg
ICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmluZywg
Y2hpbGQsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJI
aWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6
TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkp
CiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKGVycm9yU3RyaW5n
LCByZW5kZXJMYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IDEwODdjZjcyNjM2N2FlYmE0
ZWNiNTdiNzQ5NGE3MjU4OWY3YTIzNTQuLjg5NTc3OWUzMGQzZjE0Nzk5N2RkZjMzZGVkMDViM2M1
Mjc3NWRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXllcnNGb3JOb2RlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFzb25zRm9yQ29t
cG9zaXRpbmdMYXllcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBiaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVy
TGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJj
aHkoRXJyb3JTdHJpbmcmLCBSZW5kZXJFbGVtZW50JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAg
IHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyYs
IFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBSZW5kZXJFbGVtZW50Jiwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXll
cj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVy
cm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAogICAgIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5n
JiwgUmVuZGVyTGF5ZXIqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAppbmRleCBlMjdjZDI2NzI3N2QyMGIzMDlkNmEwZTljNmEyNGUxMmNkMGNiYTJmLi5j
ZWM4M2JiZmFmZWU0MjI0YzE2Mzg5MzZjNjUxMjUyOTY1MWZjM2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNvbGxlY3RT
YW1wbGUoY29uc3QgUmVzb3VyY2VVc2FnZURhdGEmIGRhdGEpCiAgICAgICAgIC5zZXRTaXplKGRh
dGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6T3RoZXJdLnRvdGFsU2l6ZSgpKQogICAgICAg
ICAucmVsZWFzZSgpOwogCi0gICAgYXV0byBjYXRlZ29yaWVzID0gUHJvdG9jb2w6OkFycmF5PFBy
b3RvY29sOjpNZW1vcnk6OkNhdGVnb3J5RGF0YT46OmNyZWF0ZSgpOworICAgIGF1dG8gY2F0ZWdv
cmllcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6Ok1lbW9yeTo6Q2F0ZWdvcnlEYXRhPjo6Y3Jl
YXRlKCk7CiAgICAgY2F0ZWdvcmllcy0+YWRkSXRlbShXVEZNb3ZlKGphdmFzY3JpcHRDYXRlZ29y
eSkpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShqaXRDYXRlZ29yeSkpOwogICAg
IGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShpbWFnZXNDYXRlZ29yeSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IGY1YmQzNWE5ZjFiMzc2NmZiZjE1NWZkYjcwYWIxMTNmYjg3MzJlYzguLjI0
YjU4ZTIyZWZjYjc1MTYzZTU0MDVjYmNlYWY1OTE5NjRjNDZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAgIHJldHVy
biBzZWFyY2hSZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hP
dGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
ZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJl
Z2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFy
Y2hSZXN1bHQ+PiYgcmVzdWx0KQogewogICAgIFZlY3RvcjxOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzID0gbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZXMoKTsK
ICAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcykgewpAQCAtODkxLDcgKzg5
MSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNv
bnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3NpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNl
bnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRz
KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaEluUmVxdWVzdChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQogewogICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJl
c291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShyZXF1ZXN0SWQpOwogICAgIGlmICgh
cmVzb3VyY2VEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA0OWYyMDhmODJkN2Y5MTYxZDg1ZmMw
N2MxYzMxNzdhZGRhMDEzYThjLi45NzU2OGNkZTc0M2RkZDU5ZTg2OGEwZGUxNDdkZDdjZGM2OGEz
MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw4ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1
bGF0aW9uKERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3Qg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwotICAg
IHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVl
c3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOworICAgIHZv
aWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4mKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCBjMzUxNTk2OTQ3OTcwMWU2Y2NhOGZiMTJlNzFlMGYwYTFkOTUzNDU1Li4yY2E0ZGVi
OWMwNzZlYzVkZjMwYmE2MWFmZDExNzE3MWFiYzIzMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MjYs
OSArNDI2LDkgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+
IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAgICAgICAgLnJlbGVhc2UoKTsK
IH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxD
b29raWU+JiBjb29raWVzTGlzdCkKK3N0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNl
dDxDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+OjpjcmVh
dGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29r
aWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckNvb2tpZShjb29raWUpKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgVmVjdG9yPFVSTD4g
YWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyYs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU+PiYgY29va2llcykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29r
aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcg
Y29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNTE3
LDcgKzUxNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFyCiAgICAgaWYgKHJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nv
b2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsK
KyAgICAgICAgY29va2llcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6Q29va2llPjo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxl
dGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0
cmluZyYgdXJsKQpAQCAtNTU1LDkgKzU1NSw5IEBAIHN0YXRpYyBib29sIHRleHRDb250ZW50Rm9y
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5S
ZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0
IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Uo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewotICAg
IHJlc3VsdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0cyA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9w
dGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTYwNSw5
ICs2MDUsOSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJl
c3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAgICAgICAucmVsZWFzZSgpOwog
fQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVz
dWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNl
cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CisgICAg
cmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/
ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRp
b25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC04
MzEsNyArODMxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3Vy
Y2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICBBU1NFUlRfQVJHKGZy
YW1lLCBmcmFtZSk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+
IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7Ci0gICAgYXV0byBzdWJy
ZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdWJyZXNvdXJjZXMg
PSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+
OjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAuc2V0RnJhbWUoV1RGTW92ZShm
cmFtZU9iamVjdCkpCiAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3VicmVzb3VyY2VzLmNvcHlSZWYo
KSkKQEAgLTg1NiwxMCArODU2LDEwIEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpG
cmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjCiAgICAgICAg
IHN1YnJlc291cmNlcy0+YWRkSXRlbShXVEZNb3ZlKHJlc291cmNlT2JqZWN0KSk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsKKyAgICBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJl
ZT4+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgp
LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewotICAgICAgICAgICAgY2hpbGRyZW5B
cnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjaGlsZHJlbkFy
cmF5ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291
cmNlVHJlZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRDaGlsZEZyYW1lcyhj
aGlsZHJlbkFycmF5KTsKICAgICAgICAgfQogICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVt
KGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA2NTAzOTU4YTVm
NjM1NmViNDQxZDNlMTM2YTBiZWU5ZDUwMmEwZjFhLi41ZDU5NmY3ZDEwYzI3ZjMwMmU0MzVmZDMy
ZDIxMTM2YzA5ZDMyZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkyLDEyICs5MiwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxvYWQo
RXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbFJlbG9hZEZyb21PcmlnaW4s
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291cmNlcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4m
IGNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+JiBj
b29raWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNv
dXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJ
ZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGNhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5n
JiwgYm9vbCogb3V0X3BhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBhMDViYmFiN2VkYTY4YTcz
YmQ2ZTQ2MGQwYjQyMDUzNjRjYjJlODAxLi42OWUwOTRhNjdlMjNlZWRmZDc1ZTFlMTRlOTcxMzkz
ZjQ2NGNiNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9X
ZWJDb25zb2xlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFdlYkNvbnNvbGVBZ2VudDo6V2Vi
Q29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9ySGVhcEFnZW50KiBo
ZWFwCiB7CiB9CiAKLXZvaWQgV2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JiBjaGFubmVscykKK3ZvaWQgV2ViQ29uc29sZUFn
ZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQogewog
ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ2hhbm5lbFRhYmxlIHsKICAgICAgICAgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBuYW1lOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2Vu
dDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jbwogICAgICAgICB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJNZWRpYSIpLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpNZWRpYSB9LAogICAgIH07CiAK
LSAgICBjaGFubmVscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0ZSgp
OwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoY2hhbm5lbFRhYmxlKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaAppbmRleCBhYWYyMTMy
NzA4Njc4NzUzZTdmNTY5NzFjNWM5MzEyOWJmYWRkM2YyLi4wYzhjOTg5N2FiMWM2NThkMDU3YTA0
NGIzODE0NjcxODE5OWVhNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqKTsKIAotICAgIHZvaWQgZ2V0TG9n
Z2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYpIGZpbmFsOworICAg
IHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JikgZmluYWw7CiAgICAg
dm9pZCBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
aGFubmVsLCBjb25zdCBTdHJpbmcmIGxldmVsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOTY4NzljMzg2OGI5NGRjYTA1
MjhiNDczMjRkNzNlMTU0ZDBkNWU2My4uNTdiM2I2NGQxZThmZTZiM2FhNzRiMzIyYjhiOGYwMTA0
ZmRhZWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YnVpbAogCiAvLyBQbGF0Zm9ybS1pbmRlcGVuZGVudCBDb21tYW5kcy4K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0TmV4dENvbnRleHQoUmVmPFdlYkF1dG9t
YXRpb25TZXNzaW9uPiYmIHByb3RlY3RlZFRoaXMsIFZlY3RvcjxSZWY8V2ViUGFnZVByb3h5Pj4m
JiBwYWdlcywgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+IGNvbnRleHRzLCBSZWY8V2ViQXV0b21h
dGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0KFJlZjxXZWJBdXRvbWF0aW9u
U2Vzc2lvbj4mJiBwcm90ZWN0ZWRUaGlzLCBWZWN0b3I8UmVmPFdlYlBhZ2VQcm94eT4+JiYgcGFn
ZXMsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJy
b3dzaW5nQ29udGV4dD4+IGNvbnRleHRzLCBSZWY8V2ViQXV0b21hdGlvblNlc3Npb246OkdldEJy
b3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAocGFnZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKGNvbnRleHRz
KSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJv
d3NpbmdDb250ZXh0cyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmkKICAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICBnZXROZXh0Q29udGV4dChtYWtlUmVmKCp0aGlzKSwgV1RGTW92
ZShwYWdlcyksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgZ2V0TmV4dENvbnRleHQobWFrZVJlZigqdGhpcyksIFdURk1vdmUocGFnZXMpLCBK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxHZXRCcm93c2luZ0NvbnRleHRD
YWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTExMTcsOSArMTExNyw5IEBAIHN0YXRpYyBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tp
ZShjb25zdCBXCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29va2ll
Pj4gYnVpbGRBcnJheUZvckNvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXNM
aXN0KQorc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29raWU+OjpjcmVh
dGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBjb29raWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRkSXRlbShidWlsZE9i
amVjdEZvckNvb2tpZShjb29raWUpKTsKQEAgLTEyNDAsOSArMTI0MCw5IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpCiAgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgYWN0aXZlVVJMLmhvc3QoKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25QZXJtaXNzaW9ucyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1p
c3Npb25zKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Npb25z
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykKIHsK
LSAgICBhdXRvIHBlcm1pc3Npb25zT2JqZWN0QXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRh
dGE+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHBlcm1pc3Npb25zT2JqZWN0QXJyYXkgPSBKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9u
RGF0YT46OmNyZWF0ZSgpOwogICAgIGF1dG8gZ2V0VXNlck1lZGlhUGVybWlzc2lvbk9iamVjdCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YTo6
Y3JlYXRlKCkKICAgICAgICAgLnNldFBlcm1pc3Npb24oSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb246OkdldFVzZXJNZWRpYSkKICAgICAgICAgLnNldFZh
bHVlKG1fcGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAz
ODQ5Njc5MmJlOTkzYjlhOTRjMDRhZWEyMjkxYjk5YTA0OTQ4MTU1Li5iMWRiMTJiMTkzZjM1MzMx
Yzg3NTcwZGY0ZGIzODQxYTM5ZTMwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlU2luZ2xlQ29va2llKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgYWRkU2luZ2xlQ29va2llKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0
JiBjb29raWUsIFJlZjxBZGRTaW5nbGVDb29raWVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkZWxldGVBbGxDb29raWVzKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRTZXNzaW9u
UGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVy
bWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFNl
c3Npb25QZXJtaXNzaW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25E
YXRhPj4mIG91dF9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZXNzaW9uUGVy
bWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBpbl9w
ZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybTogbWFjT1MKQEAgLTE2Niw3
ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5Rm9ySGFu
ZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29u
c3QgV2ViUGFnZVByb3h5Jik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dD4gYnVpbGRCcm93c2luZ0NvbnRleHRGb3JQYWdlKFdlYlBhZ2VQ
cm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSk7Ci0gICAgdm9pZCBnZXROZXh0
Q29udGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZlY3RvcjxSZWY8V2ViUGFnZVBy
b3h5Pj4mJiwgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+LCBSZWY8V2ViQXV0b21hdGlvblNlc3Np
b246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJik7CisgICAgdm9pZCBnZXROZXh0Q29u
dGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZlY3RvcjxSZWY8V2ViUGFnZVByb3h5
Pj4mJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
QnJvd3NpbmdDb250ZXh0Pj4sIFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6R2V0QnJvd3NpbmdD
b250ZXh0c0NhbGxiYWNrPiYmKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHdlYkZy
YW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZy
YW1lSUQodWludDY0X3QgZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOWYwYjk1ZDZlZDFmOTZjZGE2ZjljMWQ1YjY3YjRkMzlkNGQ2
YzFhYS4uMGExNWUxYzRkNTE5NDk1ZTQxMjJiNjAwMWM2YTUxMDE0ZWNhNWY3MSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8VD4gdG8gSlNPTiBu
YW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBkdXBsaWNhdGUgdGVzdCBjYXNlcyBmb3IgSlNPTjo6QXJyYXlPZjxUPiBiYXNlZCBvbiBK
U09OOjpBcnJheS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1
ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMS0zMCAgQ2Fy
bG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBB
ZGQgYSBzY3JpcHQgZm9yIGF1dG9tYXRpY2FsbHkgcnVubmluZyB0aGUgYnVpbGRib3QgY29uZmln
dXJhdGlvbnMgb24gYSB0ZXN0IGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0pTT05WYWx1ZS5jcHAKaW5kZXggNTliYmY4NDMxNWFjYTE3OTI0ZTkxMTg0YzFjZmZm
YjFlZmE5NDFiYS4uOWMwZmYxYzcxYTMzOWUyOTcxNGEyNzA5YTVlYjc5N2M0ZTk4ZmVkNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwCkBAIC0xMzMsNiAr
MTMzLDEyIEBAIFRFU1QoSlNPTlZhbHVlLCBDb25zdHJ1Y3QpCiAgICAgICAgIEVYUEVDVF9UUlVF
KG9iamVjdC0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpOwogICAgICAgICBF
WFBFQ1RfRVEob2JqZWN0LT5zaXplKCksIDApOwogICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0
byBhcnJheSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIEVYUEVD
VF9UUlVFKGFycmF5LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KTsKKyAgICAg
ICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgMFUpOworICAgIH0KIH0KIAogVEVTVChKU09O
QXJyYXksIEJhc2ljKQpAQCAtMjI5LDYgKzIzNSw5NSBAQCBURVNUKEpTT05BcnJheSwgQmFzaWMp
CiAgICAgRVhQRUNUX1RSVUUoaXQgPT0gYXJyYXktPmVuZCgpKTsKIH0KIAorVEVTVChKU09OQXJy
YXlPZiwgQmFzaWMpCit7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBhcnJh
eSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKworICAgIGFycmF5LT5h
ZGRJdGVtKEpTT046OlZhbHVlOjpudWxsKCkpOworICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3Ro
KCksIDFVKTsKKyAgICBhdXRvIHZhbHVlID0gYXJyYXktPmdldCgwKTsKKyAgICBFWFBFQ1RfVFJV
RSh2YWx1ZS0+aXNOdWxsKCkpOworCisgICAgLy8gTm90ZTogYWRkSXRlbShib29sKSBpcyBub3Qg
aW1wbGVtZW50ZWQgYmVjYXVzZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMKKyAgICAvLyB3aXRoIGFk
ZEl0ZW0oUmVmUHRyPFQ+KSwgYW5kIHRoZSBsYXR0ZXIgaXMgbXVjaCBtb3JlIGNvbW1vbiB0byBk
by4KKworICAgIGFycmF5LT5hZGRJdGVtKDEpOworICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3Ro
KCksIDNVKTsKKyAgICB2YWx1ZSA9IGFycmF5LT5nZXQoMik7CisgICAgRVhQRUNUX1RSVUUodmFs
dWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcik7CisgICAgaW50IGludGVn
ZXJWYWx1ZTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+YXNJbnRlZ2VyKGludGVnZXJWYWx1ZSkp
OworICAgIEVYUEVDVF9FUShpbnRlZ2VyVmFsdWUsIDEpOworCisgICAgYXJyYXktPmFkZEl0ZW0o
MS41KTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCA0VSk7CisgICAgdmFsdWUgPSBh
cnJheS0+Z2V0KDMpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFs
dWU6OlR5cGU6OkRvdWJsZSk7CisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIEVYUEVDVF9U
UlVFKHZhbHVlLT5hc0RvdWJsZShkb3VibGVWYWx1ZSkpOworICAgIEVYUEVDVF9FUShkb3VibGVW
YWx1ZSwgMS41KTsKKworICAgIGFycmF5LT5hZGRJdGVtKCJ3ZWJraXQiKTsKKyAgICBFWFBFQ1Rf
RVEoYXJyYXktPmxlbmd0aCgpLCA1VSk7CisgICAgdmFsdWUgPSBhcnJheS0+Z2V0KDQpOworICAg
IEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OlN0cmluZyk7
CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5hc1N0cmlu
ZyhzdHJpbmdWYWx1ZSkpOworICAgIEVYUEVDVF9FUShzdHJpbmdWYWx1ZSwgIndlYmtpdCIpOwor
CisgICAgYXJyYXktPmFkZEl0ZW0oSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSk7CisgICAgRVhQRUNU
X0VRKGFycmF5LT5sZW5ndGgoKSwgNlUpOworICAgIHZhbHVlID0gYXJyYXktPmdldCg1KTsKKyAg
ICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3Qp
OworICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdFZhbHVlOworICAgIEVYUEVDVF9UUlVF
KHZhbHVlLT5hc09iamVjdChvYmplY3RWYWx1ZSkpOworICAgIEVYUEVDVF9FUShvYmplY3RWYWx1
ZS0+c2l6ZSgpLCAwKTsKKworICAgIGFycmF5LT5hZGRJdGVtKEpTT046OkFycmF5OjpjcmVhdGUo
KSk7CisgICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgN1UpOworICAgIHZhbHVlID0gYXJy
YXktPmdldCg2KTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVl
OjpUeXBlOjpBcnJheSk7CisgICAgUmVmUHRyPEpTT046OkFycmF5PiBhcnJheVZhbHVlOworICAg
IEVYUEVDVF9UUlVFKHZhbHVlLT5hc0FycmF5KGFycmF5VmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEo
YXJyYXlWYWx1ZS0+bGVuZ3RoKCksIDBVKTsKKworICAgIGF1dG8gaXQgPSBhcnJheS0+YmVnaW4o
KTsKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgp
ID09IEpTT046OlZhbHVlOjpUeXBlOjpOdWxsKTsKKyAgICArK2l0OworICAgIEVYUEVDVF9GQUxT
RShpdCA9PSBhcnJheS0+ZW5kKCkpOworCisgICAgdmFsdWUgPSBpdC0+Z2V0KCk7CisgICAgRVhQ
RUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6Qm9vbGVhbik7Cisg
ICAgKytpdDsKKyAgICBFWFBFQ1RfRkFMU0UoaXQgPT0gYXJyYXktPmVuZCgpKTsKKworICAgIHZh
bHVlID0gaXQtPmdldCgpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6
VmFsdWU6OlR5cGU6OkludGVnZXIpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09
IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJV
RSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpEb3VibGUpOworICAgICsraXQ7
CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0
LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpU
eXBlOjpTdHJpbmcpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5l
bmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+
dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpOworICAgICsraXQ7CisgICAgRVhQ
RUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsK
KyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpBcnJh
eSk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfVFJVRShpdCA9PSBhcnJheS0+ZW5kKCkpOworfQor
CiBURVNUKEpTT05PYmplY3QsIEJhc2ljKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328124</attachid>
            <date>2017-12-01 11:15:46 -0800</date>
            <delta_ts>2017-12-01 13:53:46 -0800</delta_ts>
            <desc>Fix Mac builds</desc>
            <filename>bug-173662-20171201111541.patch</filename>
            <type>text/plain</type>
            <size>194754</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWM5NWNlYmY5M2YwOWJmOGY1ZWZkNzYzNDg1MDhhZWYyNmQ0YWRkLi4zMzdjZmE1ZDk3NGU1MWRh
MDVlMmFhNTE0Nzk4MmY1MTA0MTk1YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFQ+
IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4gRml4IHByb3RvY29sIGdlbmVyYXRvciB0
byB1c2UgY29ycmVjdCB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQpOgorICAgICAgICBJbXByb3ZlIG5hbWluZ3MgYW5kIHVzZSAnYXV0bycgd2hlbiB0aGUg
dHlwZSBpcyBvYnZpb3VzIGFuZCByZXBlYXRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENv
bGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOgorICAgICAg
ICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+Pjo6
cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk6OkFycmF5
KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OjpvcGVuQWNj
ZXNzb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojph
ZGRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1Ry
YWl0czxQcm90b2NvbDo6QXJyYXk8VD4+OjpydW50aW1lQ2FzdCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSB0aGUg
aW1wbGVtZW50YXRpb24gb3V0IG9mIHRoaXMgZmlsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21h
aW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURv
bWFpbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2Nrcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFNhbXBsZXMpOgorICAg
ICAgICBVc2UgbW9yZSAnYXV0bycgYW5kIHJlbmFtZSBhIHZhcmlhYmxlLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3Bw
R2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKToKKyAgICAgICAgQWRvcHQgbmV3
IHR5cGUgbmFtZXMuIFRoaXMgZXhwb3NlZCBhIGxhdGVudCBidWcgd2hlcmUgd2Ugc2hvdWxkIGhh
dmUgYmVlbgorICAgICAgICB1bndyYXBwaW5nIGFuIEFsaWFzZWRUeXBlIHByaW9yIHRvIGdlbmVy
YXRpbmcgYSBDKysgdHlwZSBmb3IgaXQuIFRoZSBhbGlhc2VkCisgICAgICAgIHR5cGUgbWF5IGJl
IGFuIGFycmF5LCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSB3cm9u
ZyB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5OgorICAgICAgICAoX2dlbmVyYXRlX3R5cGVkZWZz
X2Zvcl9kb21haW4uSlNPTik6CisgICAgICAgIChfZ2VuZXJhdGVfdHlwZWRlZnNfZm9yX2RvbWFp
bi5JbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5
cGVfZm9yX3R5cGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9y
dF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICBSZWJh
c2VsaW5lLgorCisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVNldDo6YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVTZXQuaDoKKwogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgSlNGaXhlZEFycmF5IGZvciBvcF9u
ZXdfYXJyYXlfYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NjRiYzE1OWMwN2I1NWNjMjM5Y2ZlMDcxNDdmODUxNjc4
ZTljNmMuLjgzNDk4MGZjMWFhYzAyMzA2NTk4NzA4MWJkYmYwZTlhZWY0YzRiNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxU
PiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OOjpB
cnJheU9mPFQ+LgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuaDoKKyAgICAgICAgKFdURjo6
SlNPTkltcGw6OkFycmF5T2Y6OkFycmF5T2YpOgorICAgICAgICAoV1RGOjpKU09OSW1wbDo6QXJy
YXlPZjo6b3BlbkFjY2Vzc29ycyk6CisgICAgICAgIChXVEY6OkpTT05JbXBsOjpBcnJheU9mOjph
ZGRJdGVtKToKKyAgICAgICAgKFdURjo6SlNPTkltcGw6OkFycmF5T2Y6OmNyZWF0ZSk6CisKIDIw
MTctMTEtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0pTQ10gUmVtb3ZlIGVhc3kgdG9SZW1vdmUgJiBtYXAucmVtb3ZlKCkgdXNlIGluIE9BUyBw
aGFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDdkZTk3MzAxZmY5ODlmY2M3YjY4ZmQ5NzZkMjA2ZmVlN2U5M2Jh
NzcuLjEyMjAyZmFjZWViMTU5ZmQ1YjZmNjdiMmM2MzY4M2FiZTkxM2QwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMDggQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IHR5cGUgbmFtZXMuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
cmVsZWFzZUZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlbGVh
c2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JBZmZpbmVUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXApOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMgY29uc3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JI
aWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRIaWdobGlnaHRPYmplY3RGb3JOb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0
Rm9ySGlnaGxpZ2h0ZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVkaWFMaXN0Q2hhaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVs
ZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRG
cmFtZXNXaXRoTWFuaWZlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5
bGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0
eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxl
QXR0cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Omdh
dGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50Ojpjb2xsZWN0U2FtcGxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaE90aGVyUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hJblJlcXVlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRB
cnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVp
bGRPYmplY3RGb3JGcmFtZVRyZWUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hh
bm5lbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50Lmg6CisK
IDIwMTctMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFyIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBpbiBjYXNlIHN0b3JhZ2UgcHJvY2VzcyBJUEMg
Y29ubmVjdGlvbiBpcyBjbG9zaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlNDE0ZjNjYjFjMzVlMDI2N2FkMTM3
Nzc4ZjVjODFiYzFjYWI3MTguLjQyYTE3YjJjNzRiYjI5YmFhNzlkOGRhZDkxNjJmYzQ1NmQ4NWJj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IHR5cGUgbmFtZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXROZXh0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRleHRz
KToKKyAgICAgICAgKFdlYktpdDo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Npb25zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorCiAyMDE3
LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVh
ciBXZWJTV0NsaWVudENvbm5lY3Rpb24gaW4gY2FzZSBzdG9yYWdlIHByb2Nlc3MgSVBDIGNvbm5l
Y3Rpb24gaXMgY2xvc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCAwNDQzMGFiYjY2NTBjZTllNWY4ZTI1YWZkMWRmMmIy
NWI0OTNlNGE1Li5jMDI4YWNhOTIwMTUzNDc2M2Y5OTNiZmI1OGQwOTJiMTJkNzI4ZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cApAQCAtMTcyLDI2ICsxNzIsMjYgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXMKIAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyJiBj
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7Ci0gICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisgICAgYXV0byBt
ZXNzYWdlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291
cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAg
ICAgICAuc2V0VGV4dChtX21lc3NhZ2UpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAKICAgICAvLyBG
SVhNRTogb25seSBzZW5kIG91dCB0eXBlIGZvciBDb25zb2xlQVBJIHNvdXJjZSBtZXNzYWdlcy4K
LSAgICBqc29uT2JqLT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFsdWUobV90eXBlKSk7Ci0gICAganNv
bk9iai0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOwotICAgIGpzb25PYmotPnNl
dENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7Ci0gICAganNvbk9iai0+c2V0VXJs
KG1fdXJsKTsKLSAgICBqc29uT2JqLT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVwZWF0Q291bnQpKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFs
dWUobV90eXBlKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+
KG1fbGluZSkpOworICAgIG1lc3NhZ2VPYmplY3QtPnNldENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+
KG1fY29sdW1uKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0VXJsKG1fdXJsKTsKKyAgICBtZXNz
YWdlT2JqZWN0LT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQp
KTsKIAogICAgIGlmIChtX3NvdXJjZSA9PSBNZXNzYWdlU291cmNlOjpOZXR3b3JrICYmICFtX3Jl
cXVlc3RJZC5pc0VtcHR5KCkpCi0gICAgICAgIGpzb25PYmotPnNldE5ldHdvcmtSZXF1ZXN0SWQo
bV9yZXF1ZXN0SWQpOworICAgICAgICBtZXNzYWdlT2JqZWN0LT5zZXROZXR3b3JrUmVxdWVzdElk
KG1fcmVxdWVzdElkKTsKIAogICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9i
YWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
LSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudHNPYmplY3QgPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBNZXNzYWdlVHlwZTo6VGFibGUgJiYgZ2VuZXJh
dGVQcmV2aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDApOwogICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNvbHVtbnMg
PSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKQEAgLTIwMCw5ICsyMDAsOSBAQCB2
b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZS5jb3B5UmVm
KCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+YWRkSXRlbShpbnNwZWN0b3JW
YWx1ZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2FyZ3VtZW50cy0+YXJndW1l
bnRDb3VudCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxpdGVyYWwoImNvbnNvbGUiKSwg
dHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNPYmplY3QtPmFkZEl0ZW0oaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxpdGVyYWwoImNvbnNvbGUiKSwg
dHJ1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2Fy
Z3VtZW50cy0+YXJndW1lbnRBdChpKSwgQVNDSUlMaXRlcmFsKCJjb25zb2xlIiksIGdlbmVyYXRl
UHJldmlldyk7CkBAIC0yMTAsMTcgKzIxMCwxNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRU
b0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwog
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUuY29weVJlZigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3RvclZhbHVl
LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAganNvbk9iai0+c2V0UGFyYW1ldGVycyhXVEZNb3ZlKGpzb25BcmdzKSk7CisgICAgICAgICAg
ICBtZXNzYWdlT2JqZWN0LT5zZXRQYXJhbWV0ZXJzKFdURk1vdmUoYXJndW1lbnRzT2JqZWN0KSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9jYWxsU3RhY2spCi0gICAgICAgIGpzb25P
YmotPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7Cisg
ICAgICAgIG1lc3NhZ2VPYmplY3QtPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5z
cGVjdG9yQXJyYXkoKSk7CiAKLSAgICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLm1lc3NhZ2VB
ZGRlZChXVEZNb3ZlKGpzb25PYmopKTsKKyAgICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLm1l
c3NhZ2VBZGRlZChXVEZNb3ZlKG1lc3NhZ2VPYmplY3QpKTsKIH0KIAogdm9pZCBDb25zb2xlTWVz
c2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
ciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCmluZGV4IDQ5
OTA4MGNjYzJiMzk1ZjlhYzAyNjA2MTc1MmE4NDEzZjA5YjlkZjcuLmIxYjA1ODVhMjUzNDQwZjA0
ZGEwMGRlMzAyOWQyZDJkZjA2NjE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcApAQCAtMTUxLDkg
KzE1MSw5IEBAIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBSZWd1bGFy
RXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wgaXNSZWdleCkKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
OjpjcmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJj
aFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVn
ZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5oCmluZGV4IDdjMDFiOTBkYTE5MzdhZTViZTlhMjM2NDQ4MzE1ZmJlZjAzMGFmZDkuLjU1YjE5
MWVhMjM4OWNjMWY5ZmZhNzhjZmFjZDIyYzFiYzFjZTA1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbGl0aWVzIHsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hS
ZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdl
eCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0cmluZyYpOwotSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVz
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBK
U19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXpl
X3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogSlNfRVhQT1JU
X1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25z
dCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcAppbmRleCBmZDhlNGFkYzc5MGNkZGE1ODkwZmVmZjFiODdmMjZlYmU3
YTExMTQ0Li5kNzgwZjI1M2MyN2NhMTI0NmJkODVkZWJkNDk4NGRjYzkzYjVmN2MzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApA
QCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
OwotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2Ny
aXB0KCkKQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcmV2aWV3
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZAogICAgICpy
ZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVj
dFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiB9CiAKLXZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Ym9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4q
IHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0UHJvcGVydGllcyIp
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE1NSwxMCArMTUzLDEwIEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqcHJv
cGVydGllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgKnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1v
dmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERpc3BsYXlhYmxlUHJv
cGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTcx
LDEwICsxNjksMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6
cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9w
ZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmly
b25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQob2JqZWN0SWQpOwpAQCAtMTg3LDExICsxODUsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXJyYXkgPSBCaW5kaW5n
VHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBh
cnJheSA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICpwcm9wZXJ0aWVzID0gYXJyYXktPmxlbmd0aCgpID4gMCA/IGFycmF5
IDogbnVsbHB0cjsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50IG51bWJlclRvRmV0Y2gs
IFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+KiBlbnRyaWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50IG51bWJlclRvRmV0Y2gsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Piog
ZW50cmllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRDb2xsZWN0aW9uRW50cmll
cyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTIwNiw3ICsyMDQsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKmVu
dHJpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9u
RW50cnk+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAqZW50cmllcyA9IEJp
bmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVu
dHJ5Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxBcmd1bWVudEpTT04sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBz
YXZlZFJlc3VsdEluZGV4KQpAQCAtMjI2LDcgKzIyNCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxB
cmd1CiAgICAgICAgICpzYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleEludDsKIH0K
IAotUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMpIGNv
bnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxs
RnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
QVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjM1LDEzICsyMzMsMTMgQEAgUmVmPEFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6
d3JhcENhbGxGcmEKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGF1dG8gY2Fs
bEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQotICAgICAgICByZXR1cm4gQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwor
ICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3Rh
dGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSlNPTjo6
VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIEJpbmRpbmdU
cmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKIAot
ICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQogCiBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9i
amVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdl
bmVyYXRlUHJldmlldykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0MDk4ZDc2NGE3MWY4NDQwY2E5ZmM1ZGVhNThiYWVm
MDBiNmEwYjJkLi45MWYyNTUxNTYzNzRlMmM2YTYzN2QyOWYyMWI0MmU1NGZiODQzOTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBA
IC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
T2JqZWN0UHJldmlldz4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRy
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8UHJv
dG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiogZW50cmll
cyk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+KiBy
ZXN1bHQpOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0
KTsKKyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0
KTsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgs
IGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGlt
ZTo6Q29sbGVjdGlvbkVudHJ5Pj4qIGVudHJpZXMpOwogICAgIHZvaWQgc2F2ZVJlc3VsdChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3VtZW50SlNPTiwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpOwogCi0gICAgUmVmPFByb3Rv
Y29sOjpBcnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVz
KEpTQzo6SlNWYWx1ZSkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhKU0M6OkpTVmFsdWUpIGNvbnN0Owog
ICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KEpT
Qzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
ID0gZmFsc2UpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6OkpTVmFsdWUgY29sdW1ucykg
Y29uc3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbHVlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKaW5kZXggZDhmZjhm
ZGZkMzQ1ZjAyMDE5NDhiNDE5MjBhMTJjZGYwNjIzYjIyZC4uMDc2NTczZWE1YmQ3MzNiNDIyZDll
NjhhZjkzZmY3ZDAyYWQ5MmUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKQEAgLTYxLDQ5ICs2MSw2IEBA
IHByaXZhdGU6CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBKU09OOjpBcnJheUJhc2Ug
ewotcHJpdmF0ZToKLSAgICBBcnJheSgpIHsgfQotCi0gICAgSlNPTjo6QXJyYXkmIG9wZW5BY2Nl
c3NvcnMoKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTT046OkFycmF5
KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0gICAgICAgIHJldHVybiAqc3Rh
dGljX2Nhc3Q8SlNPTjo6QXJyYXkqPihzdGF0aWNfY2FzdDxKU09OOjpBcnJheUJhc2UqPih0aGlz
KSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVtKFJlZjxUPiYmIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hWYWx1ZSgmdmFsdWUuZ2V0KCkpOwot
ICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IG9wZW5BY2Nlc3NvcnMoKS5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZEl0ZW0oaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hJbnRl
Z2VyKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0oZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hEb3VibGUodmFsdWUpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBSZWY8QXJyYXk8VD4+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19OwotCiAvLyBIZWxwZXIgbWV0aG9k
cyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJlIHByb3ZpZGVkIGJ5CiAvLyBz
cGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBhcmUgZ2VuZXJhdGVkIGZv
ciBwcm90b2NvbCB0eXBlcy4KIApAQCAtMTMwLDggKzg3LDggQEAgc3RydWN0IFByaW1pdGl2ZUJp
bmRpbmdUcmFpdHMgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBCaW5kaW5n
VHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXk8VD4+
IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSkKK3N0cnVjdCBCaW5kaW5n
VHJhaXRzPEpTT046OkFycmF5T2Y8VD4+IHsKKyAgICBzdGF0aWMgUmVmUHRyPEpTT046OkFycmF5
T2Y8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICAgICAgUmVmUHRyPEpTT046OkFy
cmF5PiBhcnJheTsKQEAgLTE0MCw4ICs5Nyw4IEBAIHN0cnVjdCBCaW5kaW5nVHJhaXRzPFByb3Rv
Y29sOjpBcnJheTxUPj4gewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoYXJyYXkuZ2V0KCkpOwogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJM
RUQKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSlNP
Tjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEpTT046OkFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU09OOjpBcnJheU9mPFQ+KSA9PSBzaXpl
b2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU09OOjpBcnJheU9mPFQ+Kj4oc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlCYXNlKj4o
YXJyYXkuZ2V0KCkpKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXgg
NjBkZmY3NzU5YjFlZjVjZDc0NjQyNzQyMzBiZDhjNmM2MjhmM2M5Mi4uOTVjZTMzMTNlMzQ0MDY0
OTg0YjNhZmMxZmYxNWU4NWE3ZThiNjViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAtMTA1LDkgKzEwNSw5IEBAIGJv
b2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxTdGFjayogbykgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVp
bGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVj
dG9yQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gZnJhbWVzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRl
KCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1l
cy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICByZXR1cm4gZnJhbWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKaW5k
ZXggNDlmY2M0ZjBjMzMwZDAyMGVhMjY4ZmNmODY1MmMwMTBmNmI2YzU5Yi4uOTkyODBiMDY0YWNh
Nzc1MTU3NzA5M2JiMzU0ZTNlODY0NTQyNzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKIAotICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgUmVmPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJ
bnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNjcmlwdENhbGxTdGFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDVlOTAyNmE3Mjk5MTE3YzQ0MGRlZGNjZDcyNDRhYmNl
NDQ4YWMyYzguLjAzOTU5Njg3YzZlOThlODNjZjJjNDRlNGIwMGQ4OWZjMzkyMzk0MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHAKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW5OYW1lKQogewogICAgIGlm
ICghbV9lbmFibGVkKSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0YSkK
LSAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJh
RG9tYWluc0RhdGEgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBt
X3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09O
OjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVtKGRv
bWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlu
cyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4
dHJhRG9tYWlucykKICAgICBpZiAoZXh0cmFEb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09OOjpBcnJheU9m
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBkb21haW5OYW1lIDogZXh0cmFEb21h
aW5zKQogICAgICAgICBkb21haW5OYW1lcy0+YWRkSXRlbShkb21haW5OYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmgKaW5kZXggMjFjNDQ1NmQ2ZjAxYzU3ZjZmOGNmYTUyMDA2NzJiZTYzNTUwY2RkMy4uOTJj
ODFjNWNjMTE1Y2U1Y2I5YzMxZTY4NjcxM2M4ZDQyYjJhOGRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5nRXZh
bHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEpTT046Ok9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3RE
YXRhOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBtX3BlbmRpbmdFeHRyYURv
bWFpbnNEYXRhOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG1fcGVuZGluZ0V4
dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZmI4YzVjODAyZDI3NTBkZTU1
ZTVmMjNjZTRhN2NhZGMwMjdhZmUzNC4uOTY0OTc0NzZlZjQzOTliYmU4ZDg1NjdkZjlmZWViNzYz
MzVkMGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0yMzUsMTAgKzIz
NSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPiBjbwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
aGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dp
bmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYgY2hhbm5lbHMpCiB7CiAgICAgLy8gRGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gbG9nZ2luZyBjaGFubmVscy4KLSAgICBjaGFubmVscyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0ZSgpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCmluZGV4IDJlNTQxODgxZTcxNTdlMmQ1ZjEzNWFkNDJiMThkMWJkNjVjNzVh
MzYuLjlmOGMxOWI4NTUwYjU2YmM2MmMyMmViZDBmN2Q5YmZiNzA2MmNkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRh
a2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3VudChKU0M6
OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpOwogCi0gICAgdm9pZCBnZXRMb2dn
aW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDIzNDM0NWJiZGQwZTdjZWNk
MTkxNjc2MmIwMzE5YjZmYjEzNTc5OTguLmQ2OWRkYTIzMjc4YzdjOThkZGNlMmVkMzhhYTU2YWFm
MmUzZGIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MzUsOSAr
NDM1LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQq
IGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9p
bnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRp
b25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmll
ciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVh
dGUoKTsKKyAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghb3B0aW9uYWxVUkwgPT0g
IW9wdGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQuIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNv
bnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
RFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykK
IHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsK
ICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwpAQCAtODY2LDExICs4NjYs
MTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2Vk
QnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICAgICAgYnJlYWtQcm9ncmFtKERlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9s
YXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRT
Y3JpcHQmIGluamVjdGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJl
bnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCkKIHsKICAg
ICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0
LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKaW5kZXggNTUxNjIwZWJiNmRkMWJlY2Q2MzU3NDY4NDU4ZjJkZWVmZjJkMDlj
Yy4uYmYwZTljNjgyNjQ3NWQzOTA5ZTUyODFkNzg3MzJjZDYxMjU1NGZlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEFzeW5jU3RhY2tUcmFj
ZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsKICAgICB2b2lkIHNldEJyZWFr
cG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUpIGZpbmFsOwotICAgIHZvaWQg
c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxS
ZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOworICAgIHZvaWQgc2V0
QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdl
eCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElk
KiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNvbnRp
bnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29udGlu
dWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbikg
ZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZvaWQgc2VhcmNoSW5Db250ZW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOwogICAgIHZvaWQgZ2V0
U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5n
KiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5hbDsKICAgICB2b2lkIHBhdXNl
KEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKSB7IH0KIAogcHJpdmF0
ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVk
U2NyaXB0Jik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0
Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlw
dCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAppbmRleCBkMjI2MGU1OWY3Nzg2MjgwZGFmMWRmZjQ3YjA1ZWM2ZWQzNGMxMTE4Li5mNWQy
NTA1ZDQ5NTc0N2I1YTRhNTk2YjJkMTNlOTkwZmQ3MWY5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
bwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29s
KiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVz
dWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0
aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25z
dCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVy
dGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNv
bnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9v
bCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGMKICAgICBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJ
bmRleCwgY29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4m
IGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCog
bnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKSB7CkBAIC0yNTcsMTEgKzI1NywxMSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplYwogICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJp
YWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJh
eSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGxv
Y2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0
ZSgpOwogICAgIGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIFR5cGUgSW5m
b3JtYXRpb24uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRTdGF0ZShi
b29sIGlzQ29udHJvbEZsbwogICAgIH0pOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5nLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2
ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlSURBc1N0cmlu
Zy50b0ludFB0clN0cmljdCgmb2theSk7CiAgICAgQVNTRVJUKG9rYXkpOwogICAgIGNvbnN0IFZl
Y3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2VzID0gbV92bS5jb250cm9sRmxv
d1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIG1fdm0pOwot
ICAgIGJhc2ljQmxvY2tzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgpOworICAgIGJhc2ljQmxvY2tz
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2NrUmFuZ2UmIGJsb2NrIDogYmFz
aWNCbG9ja1JhbmdlcykgewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6QmFzaWNCbG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpC
YXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFN0YXJ0T2Zmc2V0KGJsb2NrLm1f
c3RhcnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI2ZmU3MWZiOWM2
MzNkZjRhMTBjNzhkODYwNDViMWU3OGY1YTFmODUuLjRiZDhlYTRkZTZkM2I0YWVhODBjNzY1MmUw
MDBkZGI1NWMzM2QzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02MiwxNyAr
NjIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEpT
T046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZh
bHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBmaW5hbDsKICAgICB2b2lkIHJlbGVh
c2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmluZyYgb2JqZWN0SWQpIGZpbmFs
OwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYp
IGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wq
IGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1
bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGludCogY29uc3Qgc3Rh
cnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlv
bkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3Bl
cnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4m
IHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5h
bDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlE
ZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9w
ZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91
cCwgY29uc3QgaW50KiBjb25zdCBzdGFydEluZGV4LCBjb25zdCBpbnQqIGNvbnN0IG51bWJlclRv
RmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBmaW5hbDsKICAgICB2b2lkIHNhdmVSZXN1bHQo
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50
KiBjb25zdCBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIGZpbmFsOwotICAg
IHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwg
Y29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMo
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3Mp
IG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCBlNDQ0MTBhZDI5NDgy
MTNiYjZhZGZiODU0Y2NkNzA3NjRjNTA5OTg2Li41ZTg5NWFlODUyMDE1YjlkNGNkMDU1MWNmMWI4
OWJiOGVmNjMzZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcApAQCAtMTY2LDExICsxNjYsMTEgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgUHIKICNpZiBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBzdGF0aWMgUmVmPFByb3RvY29sOjpTY3JpcHRQcm9m
aWxlcjo6U2FtcGxlcz4gYnVpbGRTYW1wbGVzKFZNJiB2bSwgVmVjdG9yPFNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrVHJhY2U+JiYgc2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKQogewotICAgIFJl
ZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPj4g
c3RhY2tUcmFjZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpT
dGFja1RyYWNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdGFja1RyYWNlcyA9IEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja1RyYWNlJiBzdGFja1RyYWNlIDogc2FtcGxpbmdQ
cm9maWxlclN0YWNrVHJhY2VzKSB7Ci0gICAgICAgIFJlZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9j
b2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPj4gZnJhbWVzID0gUHJvdG9jb2w6OkFycmF5
PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZT46OmNyZWF0ZSgpOworICAgICAg
ICBhdXRvIGZyYW1lcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpT
dGFja0ZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoU2FtcGxpbmdQcm9maWxlcjo6U3Rh
Y2tGcmFtZSYgc3RhY2tGcmFtZSA6IHN0YWNrVHJhY2UuZnJhbWVzKSB7Ci0gICAgICAgICAgICBS
ZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPiBmcmFtZSA9IFByb3RvY29s
OjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIGF1dG8g
ZnJhbWVPYmplY3QgPSBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlN0YWNrRnJhbWU6OmNyZWF0
ZSgpCiAgICAgICAgICAgICAgICAgLnNldFNvdXJjZUlEKFN0cmluZzo6bnVtYmVyKHN0YWNrRnJh
bWUuc291cmNlSUQoKSkpCiAgICAgICAgICAgICAgICAgLnNldE5hbWUoc3RhY2tGcmFtZS5kaXNw
bGF5TmFtZSh2bSkpCiAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tGcmFtZS5mdW5jdGlv
blN0YXJ0TGluZSgpKQpAQCAtMTgzLDEwICsxODMsMTAgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6
U2NyaXB0UHJvZmlsZXI6OlNhbXBsZXM+IGJ1aWxkU2FtcGxlcyhWTSYgdm0sIFZlY3RvcjxTYW1w
bGkKICAgICAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tGcmFtZS5saW5lTnVtYmVyKCkp
CiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb2x1bW4oc3RhY2tGcmFtZS5jb2x1bW5OdW1iZXIo
KSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+c2V0RXhwcmVzc2lvbkxvY2F0aW9uKFdURk1vdmUoZXhwcmVzc2lvbkxvY2F0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWVPYmplY3QtPnNldEV4cHJlc3Npb25Mb2NhdGlvbihXVEZNb3Zl
KGV4cHJlc3Npb25Mb2NhdGlvbikpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmcmFt
ZXMtPmFkZEl0ZW0oV1RGTW92ZShmcmFtZSkpOworICAgICAgICAgICAgZnJhbWVzLT5hZGRJdGVt
KFdURk1vdmUoZnJhbWVPYmplY3QpKTsKICAgICAgICAgfQogICAgICAgICBSZWY8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPiBpbnNwZWN0b3JTdGFja1RyYWNlID0gUHJvdG9j
b2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNl
dFRpbWVzdGFtcChzdGFja1RyYWNlLnRpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yLnB5CmluZGV4IDA0ZGRmY2I4ZGE4OTA1Y2Q2NjE1N2MxM2UwYzQxNzU5ZjE1ZTE5MzAuLmE5
MGMwZGJmZTY2ZDBjNGU0M2JkNDA2ZmMxZDg4Yjg1ODhlY2IyODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3Iu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvci5weQpAQCAtOTcsMTIgKzk3LDE1IEBAIGNsYXNzIENwcEdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICMgR2VuZXJhdGUgdHlwZSByZXByZXNlbnRhdGlvbnMgZm9yIHZhcmlv
dXMgc2l0dWF0aW9ucy4KICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGNwcF9wcm90b2NvbF90
eXBlX2Zvcl90eXBlKF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNl
ZFR5cGUpOgorICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUgICMgRmFsbCB0
aHJvdWdoIHRvIGVudW0gb3IgcHJpbWl0aXZlLgorCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5
cGUsIE9iamVjdFR5cGUpIGFuZCBsZW4oX3R5cGUubWVtYmVycykgPT0gMDoKICAgICAgICAgICAg
IHJldHVybiAnSlNPTjo6T2JqZWN0JwogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBcnJh
eVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUoKSBpcyBOb25lOiAgIyBPdGhl
cndpc2UsIGZhbGwgdGhyb3VnaCBhbmQgdXNlIHR5cGVkZWYnZCBuYW1lLgotICAgICAgICAgICAg
ICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8JXM+JyAlIENwcEdlbmVyYXRv
ci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlhc2VkVHlwZSwgRW51bVR5cGUs
IEFycmF5VHlwZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiAnSlNPTjo6QXJyYXlPZjwlcz4n
ICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlLmVsZW1lbnRf
dHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5cGUsIEVudW1UeXBl
LCBBcnJheVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6
JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFt
ZSgpKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAg
ICAgICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggMTJlMDk1MzkzNGZjMDc2ODBlZmIyZWE4MmI3NWZm
NTBiNThmNmU4Mi4uNWQ0MTFkNDlmOWQxZTk4ODc2YTZhOWZlMzViOWVlOGE3MWQ3NWQxYyAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xf
dHlwZXNfaGVhZGVyLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBl
c0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgdHlwZWRlZl9saW5l
cyA9IFtdCiAgICAgICAgICAgICBpZiBsZW4oZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoK
ICAgICAgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZGVjbGFy
YXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlw
ZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwlcz4gJXM7JyAlIChlbGVtZW50X3R5cGUs
IGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVu
ZCgndHlwZWRlZiBKU09OOjpBcnJheU9mPCVzPiAlczsnICUgKGVsZW1lbnRfdHlwZSwgZGVjbGFy
YXRpb24udHlwZV9uYW1lKSkKICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4o
dHlwZWRlZl9saW5lcykpCiAKICAgICAgICAgbGluZXMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3Iu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvci5weQppbmRleCA2OTkwMmZiMzU5YzkxMjQ4NjQ4NGVmYTNkYjkzZDQwNzk5NDg4
NzdkLi5lNTJmMzE1NDRjMTFmYjc2YzRiYWFjNjdlN2JhOTI3MjI0MGNmY2Q3IDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90
b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5y
YXdfbmFtZSgpKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKSk6CiAg
ICAgICAgICAgICBzdWJfdHlwZSA9IE9iakNHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9mb3JfdHlw
ZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PCVzPicgJSBzdWJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICdKU09OOjpB
cnJheU9mPCVzPicgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQHN0YXRp
Y21ldGhvZApAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9y
KToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAg
ICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfZm9yX3R5
cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYu
b2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICBp
ZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JzoK
KyAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgPT0gJ0pTT046OkFycmF5T2Y8U3RyaW5nPic6
CiAgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJpbmdBcnJheUFycmF5KCVzKScgJSB2
YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBpcyAnU3RyaW5nJyBhbmQgb2Jq
Y19jbGFzcyBpcyAnTlNTdHJpbmcnOgogICAgICAgICAgICAgICAgIHJldHVybiAndG9KU09OU3Ry
aW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMt
YXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDc2ZTg2ZGQyYjQ3MmQxZmMxOWQzYmYyNjY5MTFj
ZDcwYjBkMjhlMmIuLmMyMGRkMDgxMTZhNmE0OWFjNmNkYjI0MDlkZDQwMjk5Mjg0OWIzMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBA
IC0xNTcsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAg
IEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogb3B0X291dF9wYXlsb2Fk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9z
cWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9w
dF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmlu
ZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9y
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9z
Y3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxp
c3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4
ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNP
Tjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
JiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVl
bkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4m
JiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+
KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJy
YXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+
KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
OwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5f
cXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3Ry
aW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJp
bmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBKU09OOjpPYmplY3QqIG91dF92
YWx1ZXMsIEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJp
bnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNR
TFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9x
dWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3Ry
aW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSlNPTjo6T2JqZWN0KiBvdXRf
dmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2Fs
dGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5j
Q2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAg
cHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFja2VuZERpc3Bh
dGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIEpTT046Ok9iamVjdCB2YWx1ZXMsIEpTT046OlZh
bHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CisgICAgICAgIHZvaWQgc2VuZFN1
Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6T2JqZWN0IHZhbHVlcywgSlNP
Tjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwogICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6CkBAIC0yOTQsMTIgKzI5NCwxMiBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXMobG9uZyByZXF1ZXN0SQogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEpTT046
Ok9iamVjdD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOworICAgIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVzOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4gb3V0X3BheWxvYWQ7Ci0g
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKKyAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0
ZXJuYXRlQ29sb3JzOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJ
CiAKIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwg
aW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5k
RGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1
Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2Fs
bGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2Jq
ZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVt
bk5hbWVzKQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamUKIAog
ICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgU3RyaW5nIG91dF9ub3RlczsKICAgICBkb3Vi
bGUgb3V0X3RpbWVzdGFtcDsKICAgICBKU09OOjpPYmplY3Qgb3V0X3ZhbHVlczsKICAgICBKU09O
OjpWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKKyAgICBpbnQgb3V0X2RhdGFiYXNlSWQ7CiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9y
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBv
dXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgcmVxdWVzdElkLCBS
ZWZQdHI8SlNPTjo6T2JqZQogCiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhl
Y3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAot
dm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2Fs
bGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1w
LCBKU09OOjpPYmplY3QgdmFsdWVzLCBKU09OOjpWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJv
ciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHBy
aW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5n
Pj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
SlNPTjo6T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmlu
dENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJj
b2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1lcyk7CkBAIC02MjksNyArNjI5LDcgQEAgZW51bSBjbGFz
cyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVudGlm
aWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10eXBl
ZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsKIH0g
Ly8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CmluZGV4IDBjZTBjMThkMjYxYTliODM0NDhlZTFkZDgzNzhiYmMzNmUzYzgyNTguLjI0
MmQ2YWMxYjgzYzU2MGQ4ZmIzOWZhNzcyNmRmMmNlYWE5M2RiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKQEAgLTE1Miw4ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxv
dyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29s
b3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0X2luX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IG9wdF9pbl90aW1lc3Rh
bXAsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUq
IGNvbnN0IG9wdF9pbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0IG9wdF9pbl9kYXRhYmFzZUlk
LCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25z
dCBvcHRfaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9wcmludENvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBvcHRfb3V0X3ZhbHVl
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogb3B0X291dF9w
YXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0
X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25v
dGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3ZhbHVlcywg
SlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9i
amVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpT
T046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1u
TmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEpTT046Ok9i
amVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0
X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyog
b3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
QXJyYXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvcHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogY29uc3Qgb3B0X2luX3BheWxv
YWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9zY3JlZW5Db2xv
ciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJs
ZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNP
Tjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJu
YXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciog
b3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBpbl9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3Qg
SlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZhbHVlIGluX3BheWxvYWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcm
IGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3Rh
bXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBp
bnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7
CiB9OwpAQCAtMjg5LDEyICsyODksMTIgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWYKIAogICAg
IEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4gb3V0X25vdGVzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxk
b3VibGU+IG91dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZD4gb3V0
X2RhdGFiYXNlSWQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4gb3V0
X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKQEAgLTM1NSwx
MiArMzU1LDEyIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWZQCiAKICAgICBFcnJvclN0cmluZyBl
cnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRf
Y29sdW1uTmFtZXM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gb3V0X2NvbHVt
bk5hbWVzOwogICAgIFN0cmluZyBvdXRfbm90ZXM7CiAgICAgZG91YmxlIG91dF90aW1lc3RhbXA7
CiAgICAgSlNPTjo6T2JqZWN0IG91dF92YWx1ZXM7CiAgICAgSlNPTjo6VmFsdWUgb3V0X3BheWxv
YWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlSWQgb3V0X2Rh
dGFiYXNlSWQ7CisgICAgaW50IG91dF9kYXRhYmFzZUlkOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRl
cm5hdGVDb2xvcnM7CkBAIC01MzAsNyArNTMwLDcgQEAgZW51bSBjbGFzcyBQcmltYXJ5Q29sb3Jz
OwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVudGlmaWVyIG9mIERhdGFiYXNl
IG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10eXBlZGVmIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsKIH0gLy8gRGF0YWJhc2UKIC8v
IEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZjYyMDU4MTFhYTA4NGEyYjBkNDNmM2EzNTM1NDU3
ODY0NDBmODU0YS4uZDUyM2I3MjI0YzM0NWFkM2VhMWY5ODFkMWExMDQyMzU5ZmRlYmU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
CkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBjbGFzcyBEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VGcm9udGVuZERpc3Bh
dGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKSA6IG1fZnJvbnRlbmRSb3V0ZXIo
ZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1w
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25z
dCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsK
LSAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90
ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRy
PEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50
Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3Rl
cywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZh
bHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKKyAgICB2
b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFt
cCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxv
YWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50
Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJvdXRlcjsK
IH07CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBh
cmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRp
bWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNx
bEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRD
b2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNv
bnN0IFN0cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29u
c3QgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMiKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBEYXRhYmFzZUZyb250ZW5k
RGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9y
OjoKICAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+dG9KU09OU3Ry
aW5nKCkpOwogfQogCi12b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1w
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQordm9pZCBEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0
cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVz
c2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTM4Nyw3ICszODcsNyBAQCBuYW1lc3BhY2Ug
RGF0YWJhc2UgewogLyogVW5pcXVlIGlkZW50aWZpZXIgb2YgRGF0YWJhc2Ugb2JqZWN0LiAqLwog
dHlwZWRlZiBTdHJpbmcgRGF0YWJhc2VJZDsKIHR5cGVkZWYgU3RyaW5nIFByaW1hcnlDb2xvcnM7
Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5
T2Y8U3RyaW5nPiBDb2xvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAvLyBFbmQgb2YgdHlwZWRlZnMu
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dAppbmRleCBiMjEwNmVmZTNkNjNhYTFiOWY5MDU4NTQ3ZTU3OGRmYWQ4OWJkZmU0Li40YjMxYTVk
YmYyN2IyYmUyNWY5ODdmYThhNDg3MDY2NzMyMTY0MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MDAsNyArNDAwLDcgQEAg
cHVibGljOgogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzdHJpbmciKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0QXJyYXkoUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgIHZvaWQgc2V0QXJy
YXkoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBK
U09OOjpPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImFycmF5IiksIFdURk1vdmUo
dmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggMjY2MWI4NmVhYTRmN2UxYTYyMzEyNDhkYmQzOTk1MWI2Mjg2NTRkMC4u
N2ZlNTg2YzBhNWJlNWJmNzI3OTBiN2QyZTg3YjE2MjA5Y2U0NzAzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtMzMxLDExICszMzEsMTEg
QEAgdHlwZWRlZiBpbnQgQnJlYWtwb2ludElkOwogCiBuYW1lc3BhY2UgUnVudGltZSB7CiB0eXBl
ZGVmIGludCBPYmplY3RJZDsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
PiBMdWNreU51bWJlcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4gQmFieU5hbWVzOwotdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RJZD4gTmV3T2JqZWN0czsKLXR5cGVkZWYgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZD4gT2xkT2JqZWN0czsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gU3RvcFJlYXNvbnM7Cit0
eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBMdWNreU51bWJlcnM7Cit0eXBlZGVmIEpTT046OkFy
cmF5T2Y8U3RyaW5nPiBCYWJ5TmFtZXM7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBOZXdP
YmplY3RzOwordHlwZWRlZiBKU09OOjpBcnJheU9mPGludD4gT2xkT2JqZWN0czsKK3R5cGVkZWYg
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBTdG9w
UmVhc29uczsKIH0gLy8gUnVudGltZQogLy8gRW5kIG9mIHR5cGVkZWZzLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA2NDk1NzAyNzhh
YWUyY2I3MTNlZDY5NWM2NmY1YmE4OGFlN2RlZWY0Li40YTgyYjY0Mjc1NTc4NTNmYzVlYmY3YTYw
MThjMTZlMzI3ZGRhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVj
dC10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbi1yZXN1bHQKQEAgLTMzNyw3ICszMzcsNyBAQCBjbGFzcyBQYXJhbWV0ZXJCdW5kbGU7
CiAKIC8vIFR5cGVkZWZzLgogbmFtZXNwYWNlIERhdGFiYXNlIHsKLXR5cGVkZWYgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBF
cnJvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAvLyBFbmQgb2YgdHlwZWRl
ZnMuCiAKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEJ1aWxk
ZXI8Tm9GaWVsZHNTZXQ+KEpTT046Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+IHZhbHVlKQorICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRBcnJh
eShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldEJ1dHRvbnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQorICAgIHZv
aWQgc2V0QnV0dG9ucyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEpTT046Ok9iamVj
dEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCBXVEZNb3ZlKHZhbHVlKSk7
CiAgICAgfQpAQCAtNTYwLDE0ICs1NjAsMTQgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xh
c3MgUGFyYW1ldGVyQnVuZGxlOwogICAgIHB1YmxpYzoKIAotICAgICAgICBCdWlsZGVyPFNUQVRF
IHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1
bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYg
Q29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3NldCk7CiAgICAg
ICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB2
YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvbHVtbk5hbWVzU2V0PigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0
b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8
IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1NldCksIHByb3BlcnR5X2J1
dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJ
TGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CkBAIC03OTMsMTQgKzc5MywxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPERpcmVjdGlvbmFsaXR5U2V0PigpOwogICAg
ICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25z
KFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1
dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1NldCksIHByb3BlcnR5X2J1dHRv
bnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPEJ1
dHRvbnNTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1u
TmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1Nl
dD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQ29sdW1uTmFt
ZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3NldCk7CiAgICAgICAgICAgICBt
X3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB2YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDdiMzJlYWY1MGFh
ZTJkNDhhYmFmNmJhZjU3NTAwNTZkYjc3ODhmMTUuLjdhNDEyZTYwOTU1OWJkMTlkMjE5YjkxYzAz
MTQ1MTNmNzE2ZGI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC0yMTcsOSArMjE3LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmxlYXN0Q29tbW9uQW5jZXN0
b3IoKSBjb25zdAogICAgIHJldHVybiBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rv
cihtX3N0cnVjdHVyZUhpc3RvcnkpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBU
eXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAorUmVmPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+
PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAogewotICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHNo
YXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KQogICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShz
aGFwZS0+aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CkBAIC01MDQsOCArNTA0LDggQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1
Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1cnJlbnRT
aGFwZSh0aGlzKTsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUpIHsKLSAgICAgICAgYXV0byBm
aWVsZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKLSAg
ICAgICAgYXV0byBvcHRpb25hbEZpZWxkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9IEpTT046OkFycmF5T2Y8U3Ry
aW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxGaWVsZHMgPSBKU09OOjpBcnJh
eU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8gZmllbGQgOiBjdXJyZW50
U2hhcGUtPm1fZmllbGRzKQogICAgICAgICAgICAgZmllbGRzLT5hZGRJdGVtKGZpZWxkLmdldCgp
KTsKICAgICAgICAgZm9yIChhdXRvIGZpZWxkIDogY3VycmVudFNoYXBlLT5tX29wdGlvbmFsRmll
bGRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCmluZGV4IDE2MWJmZTg3
Yjk1M2JhYTRlMjU4NjFjMzY5Mzg1YmQ5NjIzMjMwYWIuLjk1YTM1ZDE4ZTZmZWM2ZDhlZGExM2Uy
YzViYTBmMzI3ZTA0ODBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSdW50aW1lVHlwZS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIG5hbWVzcGFjZSBQ
cm90b2NvbCAgewotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFj
ZSBSdW50aW1lIHsKIGNsYXNzIFN0cnVjdHVyZURlc2NyaXB0aW9uOwpAQCAtODksNyArODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsKICAgICBTdHJpbmcgZHVtcFR5
cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7Ci0gICAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3Q7
CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3Ry
dWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdDsK
ICAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJmbG93bigp
IGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyZmxvd247IH0KICAgICBTdHJpbmcgbGVhc3RDb21tb25B
bmNlc3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5o
IGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCmluZGV4IDlhNzRkMWVhOTdlYzgxNjY3NzUy
ZjgyYWMwNjE5MWQyNjMyODljZDQuLjU5N2JjYzliODIwYmViOTc4ODk0ODliMjFjMTJiMGVhYTZl
ZTRlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKQEAgLTQyMyw2ICs0MjMsNDggQEAgaW5saW5lIHZvaWQg
QXJyYXlCYXNlOjpwdXNoQXJyYXkoUmVmUHRyPEFycmF5QmFzZT4mJiB2YWx1ZSkKICAgICBtX21h
cC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xh
c3MgQXJyYXlPZiA6IHB1YmxpYyBBcnJheUJhc2UgeworcHJpdmF0ZToKKyAgICBBcnJheU9mKCkg
eyB9CisKKyAgICBBcnJheSYgb3BlbkFjY2Vzc29ycygpCisgICAgeworICAgICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoQXJyYXkpID09IHNpemVvZihBcnJheU9mPFQ+KSwgY2Fubm90X2Nhc3Qp
OworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEFycmF5Kj4oc3RhdGljX2Nhc3Q8QXJyYXlC
YXNlKj4odGhpcykpOworICAgIH0KKworcHVibGljOgorICAgIHZvaWQgYWRkSXRlbShSZWZQdHI8
VD4mJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoVmFsdWUoV1RG
TW92ZSh2YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5n
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoU3RyaW5nKHZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAg
b3BlbkFjY2Vzc29ycygpLnB1c2hJbnRlZ2VyKHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEl0ZW0oZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hE
b3VibGUodmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QXJyYXlPZjxUPj4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5T2Y8VD4oKSk7Cisg
ICAgfQorCisgICAgdXNpbmcgQXJyYXlCYXNlOjpnZXQ7CisgICAgdXNpbmcgQXJyYXlCYXNlOjpi
ZWdpbjsKKyAgICB1c2luZyBBcnJheUJhc2U6OmVuZDsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpT
T05JbXBsCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZWI5OWFlZjU3YzgxZTBjM2VmMzEzZTE4NTZiMWJh
YjA0NDBhY2Y0Li5mZWQ4YWNhZjEzNjlkYjg1MjY3NzkxNTk4MDQ5NGM1YmVjZWFlZTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTM0LDEw
ICsxMzQsMTAgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihjb25zdCBTdHJp
bmcmIG5hbWUsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb24KICAgICB9CiAKICAgICBpZiAoIW1f
ZnJhbWVzKQotICAgICAgICBtX2ZyYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAg
bV9mcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6
RnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9jdXJyZW50QWN0aW9ucykgewotICAgICAg
ICBtX2N1cnJlbnRBY3Rpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFs
dWU+OjpjcmVhdGUoKTsKKyAgICAgICAgbV9jdXJyZW50QWN0aW9ucyA9IEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKIAogICAgICAgICBhdXRvIGZyYW1lID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRB
Y3Rpb25zKG1fY3VycmVudEFjdGlvbnMpCkBAIC0xNjUsMTQgKzE2NSwxNCBAQCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+JiYgSW5zcGVjdG9yQ2Fu
dmFzOjpyZWxlYXNlSQogICAgIHJldHVybiBXVEZNb3ZlKG1faW5pdGlhbFN0YXRlKTsKIH0KIAot
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6RnJhbWU+PiYmIEluc3BlY3RvckNhbnZhczo6cmVsZWFzZUZyYW1lcygpCitSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkZyYW1lPj4m
JiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VGcmFtZXMoKQogewogICAgIGFwcGVuZEFjdGlvblNu
YXBzaG90SWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG1fZnJhbWVzKTsKIH0KIAot
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4mJiBJbnNwZWN0
b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVl
Pj4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVhc2VEYXRhKCkKIHsKICAgICBtX2luZGV4ZWREdXBs
aWNhdGVEYXRhLmNsZWFyKCk7CiAgICAgcmV0dXJuIFdURk1vdmUobV9zZXJpYWxpemVkRHVwbGlj
YXRlRGF0YSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhG
b3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgfQogCiAgICAgaWYgKCFtX3Nl
cmlhbGl6ZWREdXBsaWNhdGVEYXRhKQotICAgICAgICBtX3NlcmlhbGl6ZWREdXBsaWNhdGVEYXRh
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9zZXJpYWxpemVkRHVwbGljYXRlRGF0YSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFs
dWU+OjpjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gaXRlbTsKICAgICBXVEY6
OnN3aXRjaE9uKGRhdGEsCkBAIC0zNjksNyArMzY5LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6
aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgIFsmXSAoY29u
c3QgSW1hZ2VEYXRhKiBpbWFnZURhdGEpIHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JJbWFnZURhdGEo
KmltYWdlRGF0YSk7IH0sCiAgICAgICAgIFsmXSAoY29uc3QgSW1hZ2VCaXRtYXAqIGltYWdlQml0
bWFwKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXAoKmltYWdlQml0bWFwKTsgfSwK
ICAgICAgICAgWyZdIChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIHNjcmlwdENhbGxGcmFtZSkgewot
ICAgICAgICAgICAgYXV0byBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJs
ZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8ZG91
YmxlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEo
c2NyaXB0Q2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSgpKSk7CiAgICAgICAgICAgICBhcnJheS0+YWRk
SXRlbShpbmRleEZvckRhdGEoc2NyaXB0Q2FsbEZyYW1lLnNvdXJjZVVSTCgpKSk7CiAgICAgICAg
ICAgICBhcnJheS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdENhbGxGcmFtZS5saW5l
TnVtYmVyKCkpKTsKQEAgLTM4OSw5ICszODksOSBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRl
eEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihpbmRleCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8ZG91YmxlPj4gYnVpbGRBcnJheUZvckFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSkKK3N0YXRpYyBSZWZQdHI8SlNPTjo6QXJyYXlPZjxk
b3VibGU+PiBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWZmaW5lVHJhbnNmb3JtKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxkb3VibGU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJsZT46
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGRvdWJsZT4+IGFycmF5ID0gSlNP
Tjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBhcnJheS0+YWRkSXRlbShhZmZpbmVU
cmFuc2Zvcm0uYSgpKTsKICAgICBhcnJheS0+YWRkSXRlbShhZmZpbmVUcmFuc2Zvcm0uYigpKTsK
ICAgICBhcnJheS0+YWRkSXRlbShhZmZpbmVUcmFuc2Zvcm0uYygpKTsKQEAgLTQwMiw5ICs0MDIs
OSBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJsZT4+IGJ1
aWxkQXJyYXlGb3JBZmZpbmVUcmFuc2Zvcm0oYwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBi
dWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQorc3RhdGljIFJlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvclZlY3Rvcihjb25zdCBW
ZWN0b3I8VD4mIHZlY3RvcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+
PiBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGF1dG8mIGl0ZW0gOiB2ZWN0b3IpCiAgICAgICAgIGFycmF5LT5hZGRJdGVtKGl0ZW0pOwogICAg
IHJldHVybiBhcnJheTsKQEAgLTQxOSw3ICs0MTksNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0
aQogICAgIGF0dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ3aWR0aCIpLCBjYW52
YXMoKS53aWR0aCgpKTsKICAgICBhdHRyaWJ1dGVzLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgi
aGVpZ2h0IiksIGNhbnZhcygpLmhlaWdodCgpKTsKIAotICAgIGF1dG8gcGFyYW1ldGVycyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogCiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA9IGNhbnZh
cygpLnJlbmRlcmluZ0NvbnRleHQoKTsKICAgICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPihjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgewpAQCAtNDQwLDcgKzQ0MCw3IEBAIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9y
Q2FudmFzOjpidWlsZEluaXRpCiAKICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciB0byBgc2V0TGlu
ZURhc2hgIGlzIGl0c2VsZiBhbiBhcnJheSwgc28gd2UgbmVlZCB0byB3cmFwIHRoZSBwYXJhbWV0
ZXJzCiAgICAgICAgIC8vIGxpc3QgaW4gYW4gYXJyYXkgdG8gYWxsb3cgc3ByZWFkaW5nLgotICAg
ICAgICBhdXRvIHNldExpbmVEYXNoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6
VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzZXRMaW5lRGFzaCA9IEpTT046OkFycmF5
T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAgICAgICAgc2V0TGluZURhc2gtPmFkZEl0ZW0o
YnVpbGRBcnJheUZvclZlY3RvcihzdGF0ZS5saW5lRGFzaCkpOwogICAgICAgICBhdHRyaWJ1dGVz
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInNldExpbmVEYXNoIiksIFdURk1vdmUoc2V0TGluZURh
c2gpKTsKIApAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpCiAgICAg
ICAgIGF0dHJpYnV0ZXMtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJpbWFnZVNtb290aGluZ0Vu
YWJsZWQiKSwgY29udGV4dDJkLT5pbWFnZVNtb290aGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIGF0
dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpbWFnZVNtb290aGluZ1F1YWxpdHki
KSwgaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbnRleHQyZC0+aW1h
Z2VTbW9vdGhpbmdRdWFsaXR5KCkpKSk7CiAKLSAgICAgICAgYXV0byBzZXRQYXRoID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzZXRQYXRoID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAg
ICBzZXRQYXRoLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShidWlsZFN0cmluZ0Zyb21QYXRoKGNvbnRl
eHQyZC0+Z2V0UGF0aCgpLT5wYXRoKCkpKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgic2V0UGF0aCIpLCBXVEZNb3ZlKHNldFBhdGgpKTsKICAgICB9CkBAIC01
MDIsMTMgKzUwMiwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJ
bml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0aQogICAgIHJldHVybiBpbml0
aWFsU3RhdGU7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpW
YWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBW
ZWN0b3I8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQorUmVmUHRyPEpT
T046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNv
bnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgcGFy
YW1ldGVycykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6
VmFsdWU+PiBhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYWN0aW9u
ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGFjdGlvbi0+YWRk
SXRlbShpbmRleEZvckRhdGEobmFtZSkpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEpTT046OlZhbHVlPj4gcGFyYW1ldGVyc0RhdGEgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxpbnQ+PiBzd2l6emxlVHlwZXMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpW
YWx1ZT4+IHBhcmFtZXRlcnNEYXRhID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+IHN3aXp6bGVUeXBlcyA9IEpTT046
OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmcGFy
YW1ldGVyc0RhdGEsICZzd2l6emxlVHlwZXNdIChhdXRvIHZhbHVlLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXMgc3dpenpsZVR5cGUpIHsKICAgICAgICAgcGFyYW1ldGVyc0RhdGEtPmFkZEl0ZW0odmFs
dWUpOwpAQCAtNTI0LDcgKzUyNCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uCiAgICAgICAg
ICAgICBbJl0gKENhbnZhc1RleHRBbGlnbiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JE
YXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlczo6U3RyaW5nKTsgfSwKICAgICAgICAgICAgIFsmXSAoQ2FudmFzVGV4dEJhc2VsaW5lIHZh
bHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAogICAgICAgICAg
ICAgWyZdIChjb25zdCBET01NYXRyaXgyREluaXQmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJsZT4+IGFycmF5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEpTT046OkFycmF5T2Y8ZG91YmxlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJs
ZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVlLmEudmFs
dWVfb3IoMSkpOwogICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVlLmIudmFsdWVf
b3IoMCkpOwogICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVlLmMudmFsdWVfb3Io
MCkpOwpAQCAtNTgxLDcgKzU4MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uCiAgICAgYWN0
aW9uLT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0
ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxkb3VibGU+PiB0cmFjZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRv
dWJsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGRvdWJsZT4+IHRyYWNl
ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBhdXRvIHN0YWNrVHJhY2Ug
PSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6
OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNr
U2l6ZVRvQ2FwdHVyZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFja1RyYWNlLT5z
aXplKCk7ICsraSkKICAgICAgICAgdHJhY2UtPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHN0YWNrVHJh
Y2UtPmF0KGkpKSk7CkBAIC01OTAsMTMgKzU5MCwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNv
bgogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dy
YWRpZW50KGNvbnN0IENhbnZhc0dyYWRpZW50JiBjYW52YXNHcmFkaWVudCkKK1JlZlB0cjxKU09O
OjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2Fu
dmFzR3JhZGllbnQoY29uc3QgQ2FudmFzR3JhZGllbnQmIGNhbnZhc0dyYWRpZW50KQogewogICAg
IGNvbnN0IGF1dG8mIGdyYWRpZW50ID0gY2FudmFzR3JhZGllbnQuZ3JhZGllbnQoKTsKIAogICAg
IFN0cmluZyB0eXBlID0gZ3JhZGllbnQudHlwZSgpID09IEdyYWRpZW50OjpUeXBlOjpSYWRpYWwg
PyBBU0NJSUxpdGVyYWwoInJhZGlhbC1ncmFkaWVudCIpIDogQVNDSUlMaXRlcmFsKCJsaW5lYXIt
Z3JhZGllbnQiKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxmbG9h
dD4+IHBhcmFtZXRlcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxmbG9hdD46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGZsb2F0Pj4gcGFyYW1ldGVycyA9IEpTT046
OkFycmF5T2Y8ZmxvYXQ+OjpjcmVhdGUoKTsKICAgICBXVEY6OnN3aXRjaE9uKGdyYWRpZW50LmRh
dGEoKSwKICAgICAgICAgWyZwYXJhbWV0ZXJzXSAoY29uc3QgR3JhZGllbnQ6OkxpbmVhckRhdGEm
IGRhdGEpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPmFkZEl0ZW0oZGF0YS5wb2ludDAueCgp
KTsKQEAgLTYxNCwyMiArNjE0LDIyIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhCiAgICAgICAg
IH0KICAgICApOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPj4gc3RvcHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gc3RvcHMg
PSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBj
b2xvclN0b3AgOiBncmFkaWVudC5zdG9wcygpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IHN0b3AgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxKU09OOjpWYWx1ZT4+IHN0b3AgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3Jl
YXRlKCk7CiAgICAgICAgIHN0b3AtPmFkZEl0ZW0oY29sb3JTdG9wLm9mZnNldCk7CiAgICAgICAg
IHN0b3AtPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKGNvbG9yU3RvcC5jb2xvci5jc3NUZXh0KCkpKTsK
ICAgICAgICAgc3RvcHMtPmFkZEl0ZW0oV1RGTW92ZShzdG9wKSk7CiAgICAgfQogCi0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJyYXkgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHR5cGUp
KTsKICAgICBhcnJheS0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBhcnJheS0+
YWRkSXRlbShXVEZNb3ZlKHN0b3BzKSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1SZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6
OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZhc1Bh
dHRlcm4pCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZh
czo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFzUGF0dGVybiYgY2FudmFz
UGF0dGVybikKIHsKICAgICBJbWFnZSYgdGlsZUltYWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJu
KCkudGlsZUltYWdlKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC02NDcsMjkgKzY0NywyOSBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJy
YXlGb3JDYQogICAgIGVsc2UKICAgICAgICAgcmVwZWF0ID0gQVNDSUlMaXRlcmFsKCJuby1yZXBl
YXQiKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1
ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSlNP
Tjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGlu
ZGV4Rm9yRGF0YShpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKSkpOwogICAgIGFy
cmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShyZXBlYXQpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9
CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3Bl
Y3RvckNhbnZhczo6YnVpbGRBcnJheUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmIGltYWdl
RGF0YSkKK1JlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFz
OjpidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogewot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBkYXRhID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8aW50Pj4gZGF0YSA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpbWFnZURhdGEuZGF0YSgpLT5sZW5ndGgoKTsgKytpKQogICAg
ICAgICBkYXRhLT5hZGRJdGVtKGltYWdlRGF0YS5kYXRhKCktPml0ZW0oaSkpOwogCi0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJyYXkgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0oV1RGTW92ZShkYXRhKSk7CiAg
ICAgYXJyYXktPmFkZEl0ZW0oaW1hZ2VEYXRhLndpZHRoKCkpOwogICAgIGFycmF5LT5hZGRJdGVt
KGltYWdlRGF0YS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkQXJyYXlGb3JJbWFnZUJpdG1hcChjb25zdCBJbWFnZUJpdG1hcCYgaW1hZ2VCaXRtYXApCitS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
cnJheUZvckltYWdlQml0bWFwKGNvbnN0IEltYWdlQml0bWFwJiBpbWFnZUJpdG1hcCkKIHsKICAg
ICAvLyBGSVhNRTogTmVlZHMgdG8gaW5jbHVkZSB0aGUgZGF0YSBzb21laG93LgotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpW
YWx1ZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oaW1h
Z2VCaXRtYXAud2lkdGgoKSkpOwogICAgIGFycmF5LT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4o
aW1hZ2VCaXRtYXAuaGVpZ2h0KCkpKTsKICAgICByZXR1cm4gYXJyYXk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggMGI5NjExYjJlZDY5MzhmMTlkZjQ5
N2ZlM2NiYmQzZWYwMzE4ZmJmZC4uMmY2YzY0NzI0ODI3MzE1YzVlNzRmYmEyNGRkMTExNzc3ZmFj
MjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaApAQCAt
NjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5n
JiwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiYmIHJlbGVh
c2VJbml0aWFsU3RhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+JiYgcmVsZWFzZUZyYW1lcygp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+JiYg
cmVsZWFzZURhdGEoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZWNvcmRpbmc6OkZyYW1lPj4mJiByZWxlYXNlRnJhbWVzKCk7CisgICAgUmVmUHRyPEpT
T046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiYmIHJlbGVhc2VEYXRhKCk7CiAKICAgICB2b2lkIGZp
bmFsaXplRnJhbWUoKTsKICAgICB2b2lkIG1hcmtDdXJyZW50RnJhbWVJbmNvbXBsZXRlKCk7CkBA
IC0xMDAsMjEgKzEwMCwyMSBAQCBwcml2YXRlOgogCiAgICAgaW50IGluZGV4Rm9yRGF0YShEdXBs
aWNhdGVEYXRhVmFyaWFudCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29y
ZGluZzo6SW5pdGlhbFN0YXRlPiBidWlsZEluaXRpYWxTdGF0ZSgpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5
Rm9yQ2FudmFzR3JhZGllbnQoY29uc3QgQ2FudmFzR3JhZGllbnQmKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yQ2FudmFz
UGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckltYWdlRGF0YShjb25zdCBJ
bWFnZURhdGEmKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6
VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXAoY29uc3QgSW1hZ2VCaXRtYXAmKTsKKyAg
ICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQWN0aW9uKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKKyAgICBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52YXNHcmFk
aWVudChjb25zdCBDYW52YXNHcmFkaWVudCYpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpT
T046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFzUGF0dGVy
biYpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZv
ckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JJbWFnZUJpdG1hcChjb25zdCBJbWFnZUJpdG1hcCYp
OwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBIVE1MQ2FudmFzRWxlbWVudCYgbV9j
YW52YXM7CiAgICAgU3RyaW5nIG1fY3NzQ2FudmFzTmFtZTsKIAogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gbV9pbml0aWFsU3RhdGU7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlY29yZGluZzo6RnJhbWU+PiBtX2ZyYW1lczsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBtX2N1cnJlbnRBY3Rpb25zOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVlZGluZ1Nu
YXBzaG90OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1
ZT4+IG1fc2VyaWFsaXplZER1cGxpY2F0ZURhdGE7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT4+IG1fZnJhbWVzOworICAgIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9jdXJyZW50QWN0aW9uczsKKyAgICBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IG1fYWN0aW9uTmVlZGluZ1NuYXBzaG90
OworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9zZXJpYWxpemVkRHVw
bGljYXRlRGF0YTsKICAgICBWZWN0b3I8RHVwbGljYXRlRGF0YVZhcmlhbnQ+IG1faW5kZXhlZER1
cGxpY2F0ZURhdGE7CiAgICAgZG91YmxlIG1fY3VycmVudEZyYW1lU3RhcnRUaW1lIHsgTkFOIH07
CiAgICAgc2l6ZV90IG1fYnVmZmVyTGltaXQgeyAxMDAgKiAxMDI0ICogMTAyNCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGFi
M2JkZmMxOWVjZGY1N2MyZWE2NTBkMmI1ZTgxNzJiNWZkNTk2YmQuLmEzYzJmMDhjZDRhNjQyZTdk
NDNkMjEzMmFhZGI0NGQ2ZDBhYjQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldEhpZ2hsaWdodChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVj
dG9yT3ZlcmxheTo6QwogICAgIG1fb3ZlcmxheS0+Z2V0SGlnaGxpZ2h0KGhpZ2hsaWdodCwgY29v
cmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVj
dG9yQ29udHJvbGxlcjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3QKK1Jl
ZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhp
Z2hsaWdodERhdGE+PiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdo
dGVkTm9kZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX292ZXJsYXktPmJ1aWxkT2JqZWN0Rm9y
SGlnaGxpZ2h0ZWROb2RlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYmE5YTMyYmU1ZTZiMDBhNzg5ZjMxN2ZmMGE0MmFhY2Ex
ZjE1MTc3My4uNGJkN2U3YjZkYjNmZjIzYjAwZmNmODIyZTMxMzM3OThkMGFmMWU2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWlsZE9iamVj
dEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGln
aHREYXRhPj4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbXBvc2l0ZShGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggYTI0MzM2ZjUzNjA5ZTUy
MDYxMDM3ZjM2NjA1MTJiMWRlMTY4MzM2Ny4uZmUwZGEwYWUxZGIzMWUzZmYxZWQ0N2UzMzhjY2Y5
NzU2MWU3YzY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpRdWFkPiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hCiAKIHN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hs
aWdodERhdGE+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGNvbnN0IEhpZ2hsaWdodCYgaGlnaGxp
Z2h0KQogewotICAgIGF1dG8gYXJyYXlPZlF1YWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPjo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBhcnJheU9mUXVhZHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6UXVhZD46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcXVhZCA6IGhp
Z2hsaWdodC5xdWFkcykKICAgICAgICAgYXJyYXlPZlF1YWRzLT5hZGRJdGVtKGJ1aWxkQXJyYXlG
b3JRdWFkKHF1YWQpKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6
OmRyYXdQYWludFJlY3RzKCkKIHsKLSAgICBhdXRvIGFycmF5T2ZSZWN0cyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVjdD46
OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZlJlY3RzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVhdGUoKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCiAgICAgICAgIGFycmF5T2ZSZWN0cy0+YWRk
SXRlbShidWlsZE9iamVjdEZvclJlY3QocGFpci5zZWNvbmQpKTsKIApAQCAtNDI2LDkgKzQyNiw5
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAgICAgZXZhbHVhdGVJbk92
ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1zdGF0aWMgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBl
czo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRz
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQor
c3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlU
eXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21l
bnRzKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmln
KQogewotICAgIGF1dG8gYXJyYXlPZkZyYWdtZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHRE
YXRhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBhcnJheU9mRnJhZ21lbnRzID0gSlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0
YT46OmNyZWF0ZSgpOwogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBidWlsZFJlbmRl
cmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBjb25maWcsIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3Zlcmxh
eTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CkBAIC01NjAsNyArNTYwLDcgQEAgc3RhdGljIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWls
ZE9iamVjdEZvckVsZW0KICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChlbGVtZW50Lmhh
c0NsYXNzKCkgJiYgaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgYXV0byBj
bGFzc2VzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7Cisg
ICAgICAgIGF1dG8gY2xhc3NlcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAg
ICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKICAgICAgICAgY29u
c3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmluZyA9IGRvd25jYXN0PFN0eWxlZEVs
ZW1lbnQ+KGVsZW1lbnQpLmNsYXNzTmFtZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjbGFzc05hbWVzU3RyaW5nLnNpemUoKTsgKytpKSB7CkBAIC02MjIsNyArNjIyLDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERh
dGE+IEluc3BlY3Rvck92ZXJsYXk6OmIKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFy
cmF5T2ZGcmFnbWVudEhpZ2hsaWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMo
cmVuZGVyZXIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZyk7CisgICAgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERh
dGE+PiBhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRzID0gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJh
Z21lbnRzKHJlbmRlcmVyLCBtX25vZGVIaWdobGlnaHRDb25maWcpOwogICAgIGlmICghYXJyYXlP
ZkZyYWdtZW50SGlnaGxpZ2h0cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTY0Miw5
ICs2NDIsOSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2Rl
SGlnaGxpZ2h0RGF0YT4gSW5zcGVjdG9yT3ZlcmxheTo6YgogICAgIHJldHVybiBXVEZNb3ZlKG5v
ZGVIaWdobGlnaHRPYmplY3QpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IElu
c3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0CitS
ZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVI
aWdobGlnaHREYXRhPj4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRl
ZE5vZGVzKCkgY29uc3QKIHsKLSAgICBhdXRvIGhpZ2hsaWdodHMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGln
aHREYXRhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBoaWdobGlnaHRzID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPjo6Y3Jl
YXRlKCk7CiAKICAgICBpZiAobV9oaWdobGlnaHROb2RlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gbm9k
ZUhpZ2hsaWdodERhdGEgPSBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUobV9oaWdobGlnaHRO
b2RlLmdldCgpLCBIaWdobGlnaHRUeXBlOjpOb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDQ5ZDVlZmM0Y2E2YTZhNTczNmQ4YzMzNjZmOWFm
NDcwZDVlOGNhZTcuLmZmMTc5NzEyMzlhMmYyMjYyNWI0Zjg4MmY2NDg1N2E1YWZmZGEyNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMTIzLDcg
KzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5n
KTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVI
aWdobGlnaHREYXRhPiBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUoTm9kZSosIEhpZ2hsaWdo
dFR5cGUpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxk
T2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0OwogCiAgICAgdm9pZCBmcmVlUGFnZSgp
OwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCBmN2NkOTQ5YTJjY2Y2NjUxMDdiZDAzYjZiNTI0NDg2NDVhN2YxNzI3
Li5jMTI0MjY1YjhiYWFmMWRjYjI1ZjE4YmYwMDY0NmRhNTdjMDlkNzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2
MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlh
cnIvUmVndWxhckV4cHJlc3Npb24uaD4KIAotdXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk7Cit1c2luZyBKU09OOjpBcnJheU9mOwogdXNpbmcgV2ViQ29yZTo6UnVsZVNvdXJjZURhdGFM
aXN0OwogdXNpbmcgV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE7CiAKQEAgLTQ2Myw3ICs0NjMs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1J1bGUqIHJ1
bGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RD
aGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01l
ZGlhPiYgbWVkaWFBcnJheSkKK3N0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxl
KiBydWxlLCBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+
JiBtZWRpYUFycmF5KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1bGUq
IHBhcmVudFJ1bGUgPSBydWxlOwpAQCAtNTQ4LDkgKzU0OCw5IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JT
dHlsZSgpCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHls
ZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkg
Y29uc3QKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRl
ZFN0eWxlKCkgY29uc3QKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5
Pjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7CiAgICAg
VmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9wdWxhdGVB
bGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIApAQCAtNjE5LDggKzYxOSw4IEBAIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRo
UHJvcGVydGllcygpIGNvCiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3Bl
cnRpZXM7CiAgICAgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAotICAgIGF1
dG8gcHJvcGVydGllc09iamVjdCA9IEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBhdXRvIHNob3J0aGFuZEVudHJpZXMgPSBBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7CisgICAg
YXV0byBwcm9wZXJ0aWVzT2JqZWN0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBzaG9ydGhhbmRFbnRyaWVz
ID0gQXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3Jl
YXRlKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5Owog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3Vz
UHJpb3JpdHk7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwog
ICAgICAgICAgICAgc3BlY2lmaWNpdHkgPSBzZWxlY3Rvci5zdGF0aWNTcGVjaWZpY2l0eShva2F5
KTsKIAogICAgICAgICBpZiAob2theSkgewotICAgICAgICAgICAgYXV0byB0dXBsZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byB0
dXBsZSA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB0dXBsZS0+
YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KChzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjppZE1h
c2spID4+IDE2KSk7CiAgICAgICAgICAgICB0dXBsZS0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+
KChzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjpjbGFzc01hc2spID4+IDgpKTsKICAgICAgICAg
ICAgIHR1cGxlLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oc3BlY2lmaWNpdHkgJiBDU1NTZWxl
Y3Rvcjo6ZWxlbWVudE1hc2spKTsKQEAgLTEwOTcsMTEgKzEwOTcsMTEgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVj
dG9ySGVscGVyKGMKICAgICByZXR1cm4gaW5zcGVjdG9yU2VsZWN0b3I7CiB9CiAKLXN0YXRpYyBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEq
IHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJv
bVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5n
JiBzaGVldFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50
KiBlbGVtZW50KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZYXJyOjpUZXh0Q2Fz
ZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAotICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAg
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7CiAgICAg
Zm9yIChhdXRvJiByYW5nZSA6IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2VzKSB7CiAgICAgICAg
IC8vIElmIHdlIGRvbid0IGhhdmUgYSBzZWxlY3RvciwgdGhhdCBtZWFucyB0aGUgU291cmNlRGF0
YSBmb3IgdGhpcyBDU1NTdHlsZVNoZWV0CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yUwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YTsK
ICAgICBpZiAoZW5zdXJlUGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAgIHNvdXJjZURhdGEgPSBy
dWxlU291cmNlRGF0YUZvcigmcnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBz
ZWxlY3RvcnM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yczsKIAogICAgIC8vIFRoaXMgaW50ZW50aW9uYWxs
eSBkb2VzIG5vdCByZWx5IG9uIHRoZSBzb3VyY2UgZGF0YSB0byBhdm9pZCBjYXRjaGluZyB0aGUg
dHJhaWxpbmcgY29tbWVudHMgKGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgJ3snKS4K
ICAgICBTdHJpbmcgc2VsZWN0b3JUZXh0ID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBAIC0xMTM5
LDcgKzExMzksNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUwogICAgIGlmIChzb3VyY2VEYXRh
KQogICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0
KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUoKS5zZWxlY3Rv
ckxpc3QoKSwgZWxlbWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9ycyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0
b3I+OjpjcmVhdGUoKTsKKyAgICAgICAgc2VsZWN0b3JzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0
IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c3R5bGVSdWxlKCkuc2VsZWN0
b3JMaXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2Vs
ZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6
bmV4dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCkpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRPYmplY3RGb3JSdWwKICAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlk
LmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGVJZD4oKSk7
CiAgICAgfQogCi0gICAgYXV0byBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOworICAgIGF1dG8gbWVkaWFBcnJheSA9IEFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAg
ZmlsbE1lZGlhTGlzdENoYWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRp
YUFycmF5LT5sZW5ndGgoKSkKQEAgLTExOTUsOCArMTE5NSw4IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dEZvclN0CiAgICAgSW5zcGVjdG9yQ1NTSWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAg
ICBpZiAoaWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMo
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpKQot
ICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKQorICAgICAgICAgICAgLnNldENzc1By
b3BlcnRpZXMoQXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Pjo6
Y3JlYXRlKCkpCisgICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKSkKICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVj
dG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKQEAgLTE0NDIsOSArMTQ0Miw5IEBA
IGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiBy
ZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQor
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxl
TGlzdCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVz
dWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+Ojpj
cmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCAy
NmU1ZWVkYjkyMDkwOTc0NzY5NzMxMGM0ZmUwNjI4NzZkOGMwYTNjLi4zOGE4YjlkNDM0NWE5MmM0
ZDQ5NzYzODM5NDUyNjhjNTJlNGMwNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAg
ICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUu
Z2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4g
YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0
eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CisgICAgUmVmPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8
U3RyaW5nPiB0ZXh0KCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VGV4dChjb25z
dCBTdHJpbmcmKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3JpZ2lu
YWxTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCByZXNvdXJj
ZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIGlubGluZVN0
eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRB
cnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENT
U1J1bGVMaXN0Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0
b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kik7
CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9i
amVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqLCBFbGVtZW50KiwgaW50JiBlbmRpbmdM
aW5lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDQ2OTQ3ODkw
NGU5YzZiNDAzNDY1NTVhODFhMTgyYzVjMzdhNTA3ODAuLjYyMzZiYWYwNDk2NGM2MmQ2NTMwMmU1
ZGZkMjJmMTdhYTM5NmY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAK
QEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3b3JrU3Rh
dGVVcGRhdGVkKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFu
aWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4m
IHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNX
aXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0
KQogewotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7
CisgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CkBAIC0xNDUsOSArMTQ1LDkgQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGU+IEluc3BlY3RvckFwcGxpY2F0aW8KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgVmVj
dG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+JiBhcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VzKQorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25z
dCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mIGFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZXMpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXBwbGljYXRpb25D
YWNoZVJlc291cmNlcykKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKGluZm8pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMDgwZmU1MTViYzJmMjc1Zjg1YmRlYzI3N2Vm
Njg3Mjc2MTZiMWRjZS4uNzk1MWY4MzYyNWMxNmMwMjU1M2ZkNTdlMzg4MTU1YWM0ZDcyODVkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNh
Y2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3Ry
aW5nKiBtYW5pZmVzdFVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hl
Rm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2Fj
aGUoY29uc3QgVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+JiwgY29u
c3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJl
c291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4m
KTsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlv
bkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBwbGljYXRp
b25DYWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291
cmNlSW5mbz4mKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNo
ZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7CiAK
ICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2MDI1YWRjZjMw
MDE5OGJiNTRiNWVhMGYyYTJiMTE1MDdkZjZhMTNkLi45ODgyODY0ODJlOTMxNzA5NDMwYTU1NDJl
ZWI3N2U2YmQ3N2IyYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJvb2wgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Q1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBw
c2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmll
cykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVk
bywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hl
cz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKQogewog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7
CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vCiAgICAgaWYgKCFvcmlnaW5hbEVsZW1lbnQtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAg
ICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8
ICppbmNsdWRlUHNldWRvKSB7Ci0gICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9J
ZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVC
TElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBz
ZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVSdWxl
c0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVz
KTsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKQEAgLTQ3
MSw3ICs0NzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9y
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAgICAgIC8vIEluaGVy
aXRlZCBzdHlsZXMuCiAgICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUlu
aGVyaXRlZCkgewotICAgICAgICAgICAgYXV0byBlbnRyaWVzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAg
U3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxl
UmVzb2x2ZXIoKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZAog
ICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5bGUpCiB7CiAgICAg
YXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIWVsZW1lbnQpCkBAIC01MTksOSArNTE5LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8K
ICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0
cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4m
IHN0eWxlSW5mb3MpCiB7Ci0gICAgc3R5bGVJbmZvcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0
ZSgpOworICAgIHN0eWxlSW5mb3MgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPEluc3Bl
Y3RvclN0eWxlU2hlZXQqPiBpbnNwZWN0b3JTdHlsZVNoZWV0czsKICAgICBjb2xsZWN0QWxsU3R5
bGVTaGVldHMoaW5zcGVjdG9yU3R5bGVTaGVldHMpOwpAQCAtNzExLDkgKzcxMSw5IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVp
bGRPYmplY3RGb3JSdWxlKHJ1bGUsIG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVy
dHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBw
b3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykK
IHsKLSAgICBhdXRvIHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOworICAgIGF1
dG8gcHJvcGVydGllcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQcm9w
ZXJ0eTsgaSA8PSBsYXN0Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlE
IGlkID0gY29udmVydFRvQ1NTUHJvcGVydHlJRChpKTsKICAgICAgICAgaWYgKGlzSW50ZXJuYWxD
U1NQcm9wZXJ0eShpZCkpCkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0
b3IKICAgICAgICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0oV1RGTW92ZShwcm9wZXJ0eSkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBsb25naGFuZHMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAg
YXV0byBsb25naGFuZHMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsKICAg
ICAgICAgICAgIENTU1Byb3BlcnR5SUQgbG9uZ2hhbmRJRCA9IHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbal07CiAgICAgICAgICAgICBsb25naGFuZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlOYW1lU3Ry
aW5nKGxvbmdoYW5kSUQpKTsKQEAgLTczOSw5ICs3MzksOSBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3Bl
Y3RvcgogICAgIGNzc1Byb3BlcnRpZXMgPSBXVEZNb3ZlKHByb3BlcnRpZXMpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIGZv
bnRGYW1pbHlOYW1lcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+JiBmb250RmFtaWx5TmFtZXMpCiB7Ci0gICAgYXV0byBmYW1pbGllcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZmFtaWxpZXMgPSBK
U09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3lz
dGVtRm9udEZhbWlsaWVzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250RmFtaWxp
ZXMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZhbWlseU5hbWUgOiBzeXN0ZW1Gb250RmFtaWxp
ZXMpCkBAIC04ODgsOSArODg4LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICByZXR1
cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0
Rm9yUnVsZShydWxlLCBudWxscHRyKSA6IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgU2Vs
ZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1v
ZGU6OkNvbGxlY3RpbmdSdWxlcyk7CiAgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVkb0lkID8g
cHNldWRvSWQgOiBlbGVtZW50LnBzZXVkb0lkKCk7CkBAIC05MDEsNyArOTAxLDcgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVs
ZU1hdGNoPj4gSW5zcGVjdG8KICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgYXV0byBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIG1hdGNoaW5nU2Vs
ZWN0b3JzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NT
U2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBtYXRjaGVkUnVsZS0+c2VsZWN0b3JMaXN0KCk7
CiAgICAgICAgIGludCBpbmRleCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENT
U1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA2YjgwNDIwMTA3MWQ0
MjNmODM1MzVkMWVlOTMyNzkxZDA5YTMxOGJhLi5kYTM4OTUyYmRmOTJmOWRiZGU0MDZjZTlhMWMz
MWQ3ZWQ3ODk3ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05NywxMCArOTcsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKERvY3VtZW50Jik7CiAgICAgYm9vbCBmb3JjZVBz
ZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsK
IAotICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQ
cm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogY29uc3QgaW5j
bHVkZVBzZXVkbywgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0
eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVQc2V1
ZG8sIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxl
cywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9J
ZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxl
U2hlZXRJbmZvcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4
dCkgb3ZlcnJpZGU7CkBAIC0xMDgsOCArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UnVs
ZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBydWxlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlU3R5bGVTaGVldChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYg
cmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0U3VwcG9y
dGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGZvcmNlZFBzZXVk
b0NsYXNzZXMpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWls
ZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmKTsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1h
dGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNv
bHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1
bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwg
RWxlbWVudCYsIFBzZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYp
OwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IDc4MTY1MjRmMjJmNmY1MWI1ZmRjZDQ4NTE1ZWU4ZThkM2Uy
NGU1MzcuLjMyMjZjOTliYTM1YTg1NTk2NmRkNGExNzUxNDI0NGY3MGE0Yjc4ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCkBAIC0xOTEsMTMgKzE5MSwxMyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpyZXF1ZXN0Q29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwog
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQgY2FudmFzIGNv
bnRleHQgdHlwZSIpOwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0Q1NT
Q2FudmFzQ2xpZW50Tm9kZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbnZhc0lkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3Vs
dCkKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDU1NDYW52YXNDbGllbnROb2Rl
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPGludD4+JiByZXN1bHQpCiB7CiAgICAgYXV0byogaW5zcGVjdG9yQ2Fu
dmFzID0gYXNzZXJ0SW5zcGVjdG9yQ2FudmFzKGVycm9yU3RyaW5nLCBjYW52YXNJZCk7CiAgICAg
aWYgKCFpbnNwZWN0b3JDYW52YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIHJlc3VsdCA9IEpT
T046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50IDog
aW5zcGVjdG9yQ2FudmFzLT5jYW52YXMoKS5jc3NDYW52YXNDbGllbnRzKCkpIHsKICAgICAgICAg
aWYgKGludCBkb2N1bWVudE5vZGVJZCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JE
T01BZ2VudCgpLT5ib3VuZE5vZGVJZCgmZWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAg
ICByZXN1bHQtPmFkZEl0ZW0obV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCktPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGVsZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaAppbmRleCA1M2YxMmExN2RlNjQwYWE2OWIyM2NiOWVhMzczMDE4MjA3
OGJlYzZhLi5kY2JiNjJiNGQ4ZTkxNmVhZGE3NGM2ODdhYWExYzk0ZmU4N2Q3MjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjYW52YXNJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVx
dWVzdENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBTdHJpbmcq
IGNvbnRlbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0Q1NTQ2Fu
dmFzQ2xpZW50Tm9kZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNhbnZh
c0NvbnRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25zdCBzaW5n
bGVGcmFtZSwgY29uc3QgaW50KiBjb25zdCBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IGZhYzVhNDc2YjU1MGI2MDQ1ODZmOGFlODRkNjg1YjFkMTRh
MWNjOGQuLmQyYzYzNWRmZTVhMDgzOWE2M2E5ZDBjNjcyZmUwZjlhN2JjYzQwOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxl
Y3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAg
KmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZWxlbWVudCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiByZXN1
bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7
CiAgICAgaWYgKCFub2RlKQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBjCiAgICAgfQogCiAgICAgYXV0byBub2RlcyA9IHF1ZXJ5UmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNy
ZWF0ZSgpOworICAgIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBy
ZXN1bHQtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOwog
fQpAQCAtNTk3LDcgKzU5Nyw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRo
VG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAg
PSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVu
ZChuZXdNYXAucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgY2hpbGRyZW4t
PmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7CiAgICAg
ICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBXVEZNb3ZlKGNo
aWxkcmVuKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTgzMCw5ICs4MzAsOSBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdAogICAgIG1fZG9tRWRpdG9yLT5yZXBsYWNlV2hvbGVUZXh0KGRvd25j
YXN0PFRleHQ+KCpub2RlKSwgdmFsdWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50
TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKIHsKLSAgICBs
aXN0ZW5lcnNBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOworICAgIGxpc3RlbmVyc0FycmF5
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+
OjpjcmVhdGUoKTsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9k
ZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTk2OSw3ICs5NjksNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB3aAogICAgICpyZXN1bHRDb3VudCA9IHJlc3VsdHNWZWN0
b3Iuc2l6ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZy
b21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxp
bnQ+PiYgbm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJv
bUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mIG5vZGVJZHMp
CiB7CiAgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmlu
ZChzZWFyY2hJZCk7CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewpAQCAt
OTgzLDcgKzk4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6
Y3JlYXRlKCk7CisgICAgbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKICAgICAgICAgbm9k
ZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgp
KSk7CiB9CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNv
bHZlTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAg
cmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1
dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVs
ZW1lbnQpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAg
aWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291bnQgPSBp
bm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGROb2RlQ291
bnQobm9kZUNvdW50KTsKLSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAgIFJlZjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CiAgICAg
ICAgIGlmIChjaGlsZHJlbi0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENo
aWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICB9CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JOb2RlKE5vZGUqCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoU2hhZG93Um9v
dCogcm9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNoYWRv
d1Jvb3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHNoYWRvd1Jvb3RzID0gSlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAw
LCBub2Rlc01hcCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKFdURk1vdmUo
c2hhZG93Um9vdHMpKTsKICAgICAgICAgfQpAQCAtMTU0MSw5ICsxNTQxLDkgQEAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTm9kZShOb2RlKgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxl
bWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKK1JlZjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxl
bWVudCogZWxlbWVudCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXNWYWx1ZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gYXR0cmlidXRlc1Zh
bHVlID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJvdWdo
IGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KICAgICBpZiAoIWVsZW1lbnQtPmhh
c0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKQEAgLTE1NTUs
OSArMTU1NSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBCiAgICAgcmV0dXJuIGF0dHJpYnV0
ZXNWYWx1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCkKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9k
ZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKLSAgICBh
dXRvIGNoaWxkcmVuID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYg
KGRlcHRoID09IDApIHsKICAgICAgICAgLy8gU3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRleHQgY2hp
bGQgLSBwcmV0ZW5kIHRoYXQgY29udGFpbmVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3Rl
ZC4KICAgICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwpA
QCAtMTU3OSwxNCArMTU3OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbgogICAgIHJldHVy
biBjaGlsZHJlbjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5
Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7CiAgICAgUHNldWRv
RWxlbWVudCogYmVmb3JlRWxlbWVudCA9IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOwog
ICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVt
ZW50KCk7CiAgICAgaWYgKCFiZWZvcmVFbGVtZW50ICYmICFhZnRlckVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgp
OworICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChiZWZvcmVFbGVtZW50KQogICAg
ICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVmb3JlRWxl
bWVudCwgMCwgbm9kZXNNYXApKTsKICAgICBpZiAoYWZ0ZXJFbGVtZW50KQpAQCAtMTY1NiwxNCAr
MTY1NiwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgIHJldHVybiB2YWx1ZTsKIH0K
ICAgICAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW4oUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYmIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+JiYgYXhPYmplY3QsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiYgY2hpbGRO
b2RlSWRzKQogewogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYXhPYmplY3QtPmNoaWxkcmVu
KCk7CiAgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAoIWNoaWxkTm9kZUlkcykKLSAgICAgICAgY2hpbGROb2RlSWRzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIGNoaWxkTm9kZUlkcyA9IEpT
T046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBj
aGlsZE9iamVjdCA6IGNoaWxkcmVuKSB7CiAgICAgICAgIGlmIChOb2RlKiBjaGlsZE5vZGUgPSBj
aGlsZE9iamVjdC0+bm9kZSgpKQpAQCAtMTY4NSwxMyArMTY4NSwxMyBAQCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aQogICAgIE5vZGUqIGFjdGl2ZURlc2NlbmRhbnROb2RlID0gbnVsbHB0cjsKICAg
ICBib29sIGJ1c3kgPSBmYWxzZTsKICAgICBhdXRvIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRzOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjb250cm9sbGVkTm9kZUlk
czsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBjaGlsZE5vZGVJZHM7CisgICAgUmVm
UHRyPEpTT046OkFycmF5T2Y8aW50Pj4gY29udHJvbGxlZE5vZGVJZHM7CiAgICAgYXV0byBjdXJy
ZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzOjpDdXJyZW50OjpGYWxzZTsKICAgICBib29sIGV4aXN0cyA9IGZhbHNlOwogICAgIGJvb2wg
ZXhwYW5kZWQgPSBmYWxzZTsKICAgICBib29sIGRpc2FibGVkID0gZmFsc2U7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGZsb3dlZE5vZGVJZHM7CisgICAgUmVm
UHRyPEpTT046OkFycmF5T2Y8aW50Pj4gZmxvd2VkTm9kZUlkczsKICAgICBib29sIGZvY3VzZWQg
PSBmYWxzZTsKICAgICBib29sIGlnbm9yZWQgPSB0cnVlOwogICAgIGJvb2wgaWdub3JlZEJ5RGVm
YXVsdCA9IGZhbHNlOwpAQCAtMTY5OSwxNyArMTY5OSwxNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aQogICAgIGJvb2wgaGlkZGVuID0gZmFsc2U7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGJv
b2wgbGl2ZVJlZ2lvbkF0b21pYyA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgUmVmUHRyPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4gbGl2ZVJlZ2lvblJlbGV2YW50OwogICAgIGF1dG8gbGl2ZVJlZ2lv
blN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM6OkxpdmVSZWdpb25TdGF0dXM6Ok9mZjsKICAgICBOb2RlKiBtb3VzZUV2ZW50Tm9kZSA9IG51
bGxwdHI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IG93bmVk
Tm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiBvd25lZE5vZGVJZHM7CiAg
ICAgTm9kZSogcGFyZW50Tm9kZSA9IG51bGxwdHI7CiAgICAgYm9vbCBwcmVzc2VkID0gZmFsc2U7
CiAgICAgYm9vbCByZWFkb25seSA9IGZhbHNlOwogICAgIGJvb2wgcmVxdWlyZWQgPSBmYWxzZTsK
ICAgICBTdHJpbmcgcm9sZTsKICAgICBib29sIHNlbGVjdGVkID0gZmFsc2U7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRzOwor
ICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRzOwogICAg
IGJvb2wgc3VwcG9ydHNDaGVja2VkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVk
ID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24gPSBmYWxzZTsKQEAgLTE3NTAs
NyArMTc1MCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICBWZWN0b3I8
RWxlbWVudCo+IGNvbnRyb2xsZWRFbGVtZW50czsKICAgICAgICAgICAgIGF4T2JqZWN0LT5lbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoY29udHJvbGxlZEVsZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7
CiAgICAgICAgICAgICBpZiAoY29udHJvbGxlZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRyb2xsZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgY29udHJvbGxlZE5vZGVJZHMgPSBKU09OOjpB
cnJheU9mPGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoRWxlbWVudCogY29u
dHJvbGxlZEVsZW1lbnQgOiBjb250cm9sbGVkRWxlbWVudHMpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRyb2xsZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoY29udHJv
bGxlZEVsZW1lbnQpKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODksNyArMTc4OSw3IEBAIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGZsb3dlZEVs
ZW1lbnRzOwogICAgICAgICAgICAgYXhPYmplY3QtPmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93
ZWRFbGVtZW50cywgYXJpYV9mbG93dG9BdHRyKTsKICAgICAgICAgICAgIGlmIChmbG93ZWRFbGVt
ZW50cy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgZmxvd2Vk
Tm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAg
Zm9yIChFbGVtZW50KiBmbG93ZWRFbGVtZW50IDogZmxvd2VkRWxlbWVudHMpCiAgICAgICAgICAg
ICAgICAgICAgIGZsb3dlZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChm
bG93ZWRFbGVtZW50KSk7CiAgICAgICAgICAgICB9CkBAIC0xODI4LDcgKzE4MjgsNyBAQCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2
YW50QWRkaXRpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVs
ZXZhbnQ6OkFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRSZW1vdmFscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2
YW50OjpSZW1vdmFscyk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRU
ZXh0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlRl
eHQpOwotICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZVJlZ2lvblJlbGV2YW50ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0gU3BhY2VT
cGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgICAg
ICAgICAvLyBAYXJpYS1yZWxldmFudD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRpb25zIiwi
cmVtb3ZhbHMiLCJ0ZXh0Il0sIGluIG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IG9yZGVyIGlzIGNvbnRyb2xsZWQgaW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2ViSW5zcGVj
dG9yVUkuCkBAIC0xODYwLDcgKzE4NjAsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAg
ICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gb3duZWRFbGVtZW50czsKICAgICAgICAgICAg
ICAgICBheE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKG93bmVkRWxlbWVudHMsIGFyaWFf
b3duc0F0dHIpOwogICAgICAgICAgICAgICAgIGlmIChvd25lZEVsZW1lbnRzLnNpemUoKSkgewot
ICAgICAgICAgICAgICAgICAgICBvd25lZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgb3duZWROb2RlSWRzID0g
SlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChF
bGVtZW50KiBvd25lZEVsZW1lbnQgOiBvd25lZEVsZW1lbnRzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgb3duZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQob3duZWRF
bGVtZW50KSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTg4Niw3ICsxODg2LDcgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICAgICAgYXhP
YmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RlZENo
aWxkTm9kZUlkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+
OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdGVkQ2hpbGRPYmpl
Y3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChOb2RlKiBz
ZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQoc2VsZWN0ZWRDaGlsZE5vZGUpKTsKQEAgLTIxNDEsNyArMjE0MSw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0
cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpCiB7Ci0g
ICAgYXV0byBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRl
KCk7CisgICAgYXV0byBub2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICBpbnQgaWQgPSBib3Vu
ZE5vZGVJZChlbGVtZW50KTsKICAgICAgICAgLy8gSWYgbm9kZSBpcyBub3QgbWFwcGVkIHlldCAt
PiBpZ25vcmUgdGhlIGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGMyMDcxZDlhNjJjYjg4OGIzNDJmZGFkNzE4
ZWNlYWExZTM1ZDFmN2QuLjBkMDAyYmFhYWQxMGQyNzA5ZjgyODliYWQyMTY0ZjRlODIwM2UyNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXRob2RzIGNh
bGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCiAgICAgdm9p
ZCBxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvcnMsIGludCogZWxlbWVudElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHF1ZXJ5U2VsZWN0
b3JBbGwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1bHQpIG92ZXJyaWRl
OworICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYgcmVzdWx0
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBpbnQqIGRl
cHRoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nJiwg
aW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBv
dmVycmlkZTsKQEAgLTEyMywxNCArMTIzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dGVy
SFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKSBv
dmVycmlkZTsKICAgICB2b2lkIGluc2VydEFkamFjZW50SFRNTChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RH
cm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBj
b25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBp
bnQgZXZlbnRMaXN0ZW5lcklkLCBib29sIGRpc2FibGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IEpTT046
OkFycmF5KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTZWFyY2hS
ZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRl
eCwgaW50IHRvSW5kZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
c2VhcmNoSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2
b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRJbnNwZWN0TW9k
ZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IEpTT046Ok9iamVjdCog
aGlnaGxpZ2h0Q29uZmlnKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAg
IHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CkBAIC0yMzEsMTIgKzIzMSwxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGludCBk
ZXB0aCA9IDEpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gYnVp
bGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0gICAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50
QXR0cmlidXRlcyhFbGVtZW50Kik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJD
aGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFw
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1l
bnQmLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFJlZjxKU09OOjpBcnJheU9mPFN0cmlu
Zz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CisgICAgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZv
ckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50
JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQsIGJvb2wgZGlz
YWJsZWQgPSBmYWxzZSk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNj
ZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXMoTm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGludD4+JiYpOworICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4mJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mJik7CiAg
ICAgCiAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2Rl
KiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKaW5kZXggZjExOTI5ZmJjYjU1ZDhkYWIyNjlkOGU4NTEyMWFmODkyYjcwNGQwMi4u
Y2YwYjI4NGVkYmMyZGQ2MmIzNDQxMDY2NjM3NWE5YTFkNmVmY2FlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+PiYgaXRlbXMpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFn
ZUl0ZW1zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9y
YWdlSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+JiBpdGVt
cykKIHsKICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFtZSk7CkBA
IC05NywxMyArOTcsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0
b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZUl0ZW1zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgpOworICAg
IGF1dG8gc3RvcmFnZUl0ZW1zID0gSlNPTjo6QXJyYXlPZjxKU09OOjpBcnJheU9mPFN0cmluZz4+
OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+
bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShp
KTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAg
ICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0
ZSgpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAgICAgICBlbnRyeS0+YWRkSXRl
bSh2YWx1ZSk7CiAgICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCA1NzdjMmU3MmUyZWJkNTg0MTU2OGQ4OTZiYWIxNjE2
MGYwZmVjM2NmLi4yODllNDYzYTY0OTdjYTJlNzZlNTVmNTNhYTVmOGZjMTJiOThmYTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgc3Rv
cmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRET01T
dG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6QXJyYXlPZjxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggMmM3NzBmNmJiMGE5Zjk3ZjY1YzMxNjEw
NTY2NzBjNGU1MjhiNjc0OS4uNmVjYjdjZTkxYzMxYjU2ODUwYWVhZTU4YWMxNjliNmM5NDNjMTU1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC04MywxMSArODMsMTEgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGF1dG8mIHJvd0xpc3QgPSByZXN1bHRTZXQucm93cygpOwogCi0gICAgICAg
IGF1dG8gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Ojpj
cmVhdGUoKTsKKyAgICAgICAgYXV0byBjb2x1bW5OYW1lcyA9IEpTT046OkFycmF5T2Y8U3RyaW5n
Pjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgY29sdW1uIDogcm93TGlzdC5jb2x1bW5O
YW1lcygpKQogICAgICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uKTsKIAotICAg
ICAgICBhdXRvIHZhbHVlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVl
Pjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gdmFsdWVzID0gSlNPTjo6QXJyYXlPZjxKU09OOjpW
YWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcm93TGlzdC52YWx1
ZXMoKSkgewogICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9IFdURjo6c3dpdGNoT24o
dmFsdWUsCiAgICAgICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1
cm4gSlNPTjo6VmFsdWU6Om51bGwoKTsgfSwKQEAgLTI1NiwxNCArMjU2LDE0IEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVk
ID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VU
YWJsZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcm
IGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0
cmluZz4+JiBuYW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICBlcnJvciA9
IEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgbmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNy
ZWF0ZSgpOwogCiAgICAgaWYgKGF1dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFz
ZUlkKSkgewogICAgICAgICBmb3IgKGF1dG8mIHRhYmxlTmFtZSA6IGRhdGFiYXNlLT50YWJsZU5h
bWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDlhODU1OTg5YTcxZDVhZmEyM2JmYjM3MDA1NmM2
ODI5OGVjM2I0ZjUuLjk0NjEyN2Y0NjRmYzdhMDAyZTkzODYzMzc1MjJiOGNkYzA4OTdjY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQg
ZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBn
ZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgbmFt
ZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxDYWxs
YmFjaz4mJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2Ny
aXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA4ZTQ0YjA2MDI2YWU1ZTk3ZjBjMGZhY2U3
MTQ3YjJiMDUxZTRhOGMxLi40NjVjMzkxMWJhZTZhMWQwZGFiNWVhYzk3YzJiZTMwN2M5ZjMwODg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk7Cit1c2luZyBKU09OOjpBcnJheU9mOwogdXNpbmcgSW5z
cGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7CiB1
c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKIHVzaW5nIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OwpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0
YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJpbmcp
OwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmVjdG9yKSB7Ci0gICAgICAgIGF1dG8gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5
T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyaW5nIDogdmVjdG9y
KQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKICAgICAgICAgUmVmUHRyPEtl
eVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6
OkFycmF5KS5yZWxlYXNlKCk7CkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgICAgIGF1dG8mIGRhdGFiYXNlSW5mbyA9IGRhdGFiYXNl
LmluZm8oKTsKLSAgICAgICAgYXV0byBvYmplY3RTdG9yZXMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3Jl
YXRlKCk7CisgICAgICAgIGF1dG8gb2JqZWN0U3RvcmVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAgICAgICAg
IGF1dG8gb2JqZWN0U3RvcmVOYW1lcyA9IGRhdGFiYXNlSW5mby5vYmplY3RTdG9yZU5hbWVzKCk7
CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IG9iamVjdFN0b3JlTmFtZXMpIHsKICAgICAgICAg
ICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGRhdGFiYXNlSW5mby5pbmZvRm9yRXhpc3RpbmdP
YmplY3RTdG9yZShuYW1lKTsKICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGluZGV4ZXMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9i
amVjdFN0b3JlSW5kZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhlcyA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUlu
ZGV4Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGluZGV4SW5mbyA6
IG9iamVjdFN0b3JlSW5mby0+aW5kZXhNYXAoKS52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAg
IGF1dG8gb2JqZWN0U3RvcmVJbmRleCA9IE9iamVjdFN0b3JlSW5kZXg6OmNyZWF0ZSgpCkBAIC00
MTksMTQgKzQxOSwxNCBAQCBwcml2YXRlOgogICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRM
aXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgICAgICwgbV9pbmplY3RlZFNjcmlw
dChpbmplY3RlZFNjcmlwdCkKICAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJl
cXVlc3RDYWxsYmFjaykpCi0gICAgICAgICwgbV9yZXN1bHQoQXJyYXk8RGF0YUVudHJ5Pjo6Y3Jl
YXRlKCkpCisgICAgICAgICwgbV9yZXN1bHQoSlNPTjo6QXJyYXlPZjxEYXRhRW50cnk+OjpjcmVh
dGUoKSkKICAgICAgICAgLCBtX3NraXBDb3VudChza2lwQ291bnQpCiAgICAgICAgICwgbV9wYWdl
U2l6ZShwYWdlU2l6ZSkKICAgICB7CiAgICAgfQogICAgIEluamVjdGVkU2NyaXB0IG1faW5qZWN0
ZWRTY3JpcHQ7CiAgICAgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNr
OwotICAgIFJlZjxBcnJheTxEYXRhRW50cnk+PiBtX3Jlc3VsdDsKKyAgICBSZWY8SlNPTjo6QXJy
YXlPZjxEYXRhRW50cnk+PiBtX3Jlc3VsdDsKICAgICBpbnQgbV9za2lwQ291bnQ7CiAgICAgdW5z
aWduZWQgbV9wYWdlU2l6ZTsKIH07CkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb24KICAgICAgICAgaWYgKCFjYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4gZGF0YWJhc2VOYW1lQXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gZGF0YWJhc2VO
YW1lQXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlTmFtZSA6IGRhdGFiYXNlTmFtZXMpCiAgICAgICAgICAgICBkYXRhYmFz
ZU5hbWVBcnJheS0+YWRkSXRlbShkYXRhYmFzZU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CmluZGV4IGRjNmZhOWViMzUzZTE4YmIyZDgwNzE0YTI3MjkwMjJiNjkxZjExOWIuLmMxYWIwZTMx
OWVkODIzOWNlZDdkOTNkYzVjMzRlZmMwYWNjOTZlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CkBAIC0xMDIsOSArMTAyLDkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRv
RWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW4KICAgICB1bmJpbmRQ
c2V1ZG9FbGVtZW50KCZwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVy
Pj4mIGxheWVycykKIHsKLSAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CisgICAgbGF5
ZXJzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVy
Pjo6Y3JlYXRlKCk7CiAKICAgICBhdXRvKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRPTUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgICAgIGdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCBkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpLCBsYXllcnMpOwogfQogCi12b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpM
YXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXll
cnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXIu
aGFzTGF5ZXIoKSkgewogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFy
Y2h5KGVycm9yU3RyaW5nLCBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJl
cikubGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJv
clN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShl
cnJvclN0cmluZywgY2hpbGQsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4m
IGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5n
UmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZW5kZXJMYXll
ciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+aXND
b21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVy
KGVycm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IDEwODdj
ZjcyNjM2N2FlYmE0ZWNiNTdiNzQ5NGE3MjU4OWY3YTIzNTQuLjg5NTc3OWUzMGQzZjE0Nzk5N2Rk
ZjMzZGVkMDViM2M1Mjc3NWRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXllcnNGb3JO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbGF5
ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdS
ZWFzb25zPiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBiaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAgdm9pZCB1bmJpbmQo
Y29uc3QgUmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJP
YmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBSZW5kZXJFbGVtZW50JiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5
ZXI+PiYpOwotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShF
cnJvclN0cmluZyYsIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQg
Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcmLCBSZW5k
ZXJFbGVtZW50JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5
ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVy
SGllcmFyY2h5KEVycm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAogICAgIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVy
KEVycm9yU3RyaW5nJiwgUmVuZGVyTGF5ZXIqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVj
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBlMjdjZDI2NzI3N2QyMGIzMDlkNmEwZTljNmEyNGUx
MmNkMGNiYTJmLi5jZWM4M2JiZmFmZWU0MjI0YzE2Mzg5MzZjNjUxMjUyOTY1MWZjM2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmNvbGxlY3RTYW1wbGUoY29uc3QgUmVzb3VyY2VVc2FnZURhdGEmIGRhdGEpCiAgICAgICAg
IC5zZXRTaXplKGRhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6T3RoZXJdLnRvdGFsU2l6
ZSgpKQogICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgYXV0byBjYXRlZ29yaWVzID0gUHJvdG9j
b2w6OkFycmF5PFByb3RvY29sOjpNZW1vcnk6OkNhdGVnb3J5RGF0YT46OmNyZWF0ZSgpOworICAg
IGF1dG8gY2F0ZWdvcmllcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6Ok1lbW9yeTo6Q2F0ZWdv
cnlEYXRhPjo6Y3JlYXRlKCk7CiAgICAgY2F0ZWdvcmllcy0+YWRkSXRlbShXVEZNb3ZlKGphdmFz
Y3JpcHRDYXRlZ29yeSkpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShqaXRDYXRl
Z29yeSkpOwogICAgIGNhdGVnb3JpZXMtPmFkZEl0ZW0oV1RGTW92ZShpbWFnZXNDYXRlZ29yeSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGY1YmQzNWE5ZjFiMzc2NmZiZjE1NWZkYjcwYWIxMTNm
Yjg3MzJlYzguLjI0YjU4ZTIyZWZjYjc1MTYzZTU0MDVjYmNlYWY1OTE5NjRjNDZiYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQo
YwogICAgIHJldHVybiBzZWFyY2hSZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24mIHJlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mIHJlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0KQogewogICAgIFZlY3RvcjxOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzID0gbV9yZXNvdXJjZXNEYXRhLT5y
ZXNvdXJjZXMoKTsKICAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcykgewpA
QCAtODkxLDcgKzg5MSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhl
clJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3NpCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaEluUmVxdWVz
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+JiByZXN1bHRzKQogewogICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA0OWYyMDhmODJk
N2Y5MTYxZDg1ZmMwN2MxYzMxNzdhZGRhMDEzYThjLi45NzU2OGNkZTc0M2RkZDU5ZTg2OGEwZGUx
NDdkZDdjZGM2OGEzMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw4ICsxMDEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHNlYXJjaE90aGVyUmVx
dWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYpOwotICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwg
Ym9vbCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdm9pZCBzZWFy
Y2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+
PiYpOworICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9v
bCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCBjMzUxNTk2OTQ3OTcwMWU2Y2NhOGZiMTJlNzFlMGYwYTFkOTUz
NDU1Li4yY2E0ZGViOWMwNzZlYzVkZjMwYmE2MWFmZDExNzE3MWFiYzIzMmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC00MjYsOSArNDI2LDkgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAgICAgICAg
LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhM
aXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKK3N0YXRpYyBSZWY8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2ll
cyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpD
b29raWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBjb29raWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRkSXRlbShi
dWlsZE9iamVjdEZvckNvb2tpZShjb29raWUpKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMg
VmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2Ug
Y2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNM
aXN0OwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29r
aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFyCiAgICAgaWYg
KHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JD
b29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+
OjpjcmVhdGUoKTsKKyAgICAgICAgY29va2llcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNTU1LDkgKzU1NSw5IEBAIHN0YXRpYyBib29sIHRl
eHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
LCBTdHJpbmcqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNS
ZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQogewotICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAg
cmVzdWx0cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJ
c1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxz
ZTsKQEAgLTYwNSw5ICs2MDUsOSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoYwogICAgICAgICAu
cmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJj
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFy
Y2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3Jl
YXRlKCk7CisgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlv
bmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5z
aXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDog
ZmFsc2U7CkBAIC04MzEsNyArODMxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICBB
U1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7Ci0g
ICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBz
dWJyZXNvdXJjZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZy
YW1lUmVzb3VyY2U+OjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAuc2V0RnJh
bWUoV1RGTW92ZShmcmFtZU9iamVjdCkpCiAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3VicmVzb3Vy
Y2VzLmNvcHlSZWYoKSkKQEAgLTg1NiwxMCArODU2LDEwIEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9i
amVjCiAgICAgICAgIHN1YnJlc291cmNlcy0+YWRkSXRlbShXVEZNb3ZlKHJlc291cmNlT2JqZWN0
KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsK
KyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBm
cmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewotICAgICAgICAg
ICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBjaGlsZHJlbkFycmF5ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRD
aGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAgICAgICAgfQogICAgICAgICBjaGlsZHJlbkFy
cmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKGNoaWxkKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCA2NTAzOTU4YTVmNjM1NmViNDQxZDNlMTM2YTBiZWU5ZDUwMmEwZjFhLi41ZDU5NmY3ZDEwYzI3
ZjMwMmU0MzVmZDMyZDIxMTM2YzA5ZDMyZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkyLDEyICs5MiwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbFJlbG9h
ZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmV2YWxpZGF0ZUFsbFJlc291
cmNlcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Q29va2llcyhFcnJv
clN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZT4+JiBjb29raWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRF
bmNvZGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFJl
cXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29s
KiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWFyY2hJ
blJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxl
KEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBhMDVi
YmFiN2VkYTY4YTczYmQ2ZTQ2MGQwYjQyMDUzNjRjYjJlODAxLi42OWUwOTRhNjdlMjNlZWRmZDc1
ZTFlMTRlOTcxMzkzZjQ2NGNiNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFdlYkNvbnNv
bGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9y
SGVhcEFnZW50KiBoZWFwCiB7CiB9CiAKLXZvaWQgV2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5n
Q2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JiBjaGFubmVscykKK3ZvaWQg
V2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNo
YW5uZWxzKQogewogICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ2hhbm5lbFRhYmxlIHsKICAgICAg
ICAgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdl
YkNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jbwogICAgICAgICB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJNZWRp
YSIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsU291cmNlOjpNZWRpYSB9
LAogICAgIH07CiAKLSAgICBjaGFubmVscyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFu
bmVscyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5l
bD46OmNyZWF0ZSgpOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoY2hh
bm5lbFRhYmxlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaApp
bmRleCBhYWYyMTMyNzA4Njc4NzUzZTdmNTY5NzFjNWM5MzEyOWJmYWRkM2YyLi4wYzhjOTg5N2Fi
MWM2NThkMDU3YTA0NGIzODE0NjcxODE5OWVhNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqKTsKIAotICAg
IHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYp
IGZpbmFsOworICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+Jikg
ZmluYWw7CiAgICAgdm9pZCBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjaGFubmVsLCBjb25zdCBTdHJpbmcmIGxldmVsKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOTY4Nzlj
Mzg2OGI5NGRjYTA1MjhiNDczMjRkNzNlMTU0ZDBkNWU2My4uNTdiM2I2NGQxZThmZTZiM2FhNzRi
MzIyYjhiOGYwMTA0ZmRhZWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250
ZXh0PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YnVpbAogCiAvLyBQbGF0Zm9ybS1pbmRlcGVuZGVu
dCBDb21tYW5kcy4KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0TmV4dENvbnRleHQo
UmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uPiYmIHByb3RlY3RlZFRoaXMsIFZlY3RvcjxSZWY8V2Vi
UGFnZVByb3h5Pj4mJiBwYWdlcywgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+IGNvbnRleHRzLCBS
ZWY8V2ViQXV0b21hdGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0KFJlZjxX
ZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiBwcm90ZWN0ZWRUaGlzLCBWZWN0b3I8UmVmPFdlYlBhZ2VQ
cm94eT4+JiYgcGFnZXMsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+IGNvbnRleHRzLCBSZWY8V2ViQXV0b21hdGlvblNl
c3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAocGFnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZN
b3ZlKGNvbnRleHRzKSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0cyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0
cmkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBnZXROZXh0Q29udGV4dChtYWtlUmVmKCp0
aGlzKSwgV1RGTW92ZShwYWdlcyksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgZ2V0TmV4dENvbnRleHQobWFrZVJlZigqdGhpcyksIFdURk1v
dmUocGFnZXMpLCBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxHZXRCcm93
c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTExMTcsOSArMTExNyw5IEBAIHN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Q29va2llPiBidWlsZE9i
amVjdEZvckNvb2tpZShjb25zdCBXCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBhdXRvIGNvb2tpZXMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpD
b29raWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvb2tpZXMgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT46OmNyZWF0ZSgpOwogCiAgICAgZm9y
IChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzTGlzdCkKICAgICAgICAgY29va2llcy0+YWRk
SXRlbShidWlsZE9iamVjdEZvckNvb2tpZShjb29raWUpKTsKQEAgLTEyNDAsOSArMTI0MCw5IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgYWN0aXZl
VVJMLmhvc3QoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25Q
ZXJtaXNzaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+
PiYgb3V0X3Blcm1pc3Npb25zKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lv
blBlcm1pc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJt
aXNzaW9ucykKIHsKLSAgICBhdXRvIHBlcm1pc3Npb25zT2JqZWN0QXJyYXkgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9u
UGVybWlzc2lvbkRhdGE+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHBlcm1pc3Npb25zT2JqZWN0QXJy
YXkgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Np
b25QZXJtaXNzaW9uRGF0YT46OmNyZWF0ZSgpOwogICAgIGF1dG8gZ2V0VXNlck1lZGlhUGVybWlz
c2lvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJt
aXNzaW9uRGF0YTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFBlcm1pc3Npb24oSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb246OkdldFVzZXJNZWRpYSkKICAg
ICAgICAgLnNldFZhbHVlKG1fcGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uaAppbmRleCAzODQ5Njc5MmJlOTkzYjlhOTRjMDRhZWEyMjkxYjk5YTA0OTQ4MTU1Li5iMWRi
MTJiMTkzZjM1MzMxYzg3NTcwZGY0ZGIzODQxYTM5ZTMwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlU2luZ2xlQ29va2ll
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhh
bmRsZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkU2luZ2xlQ29va2llKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3Qg
SlNPTjo6T2JqZWN0JiBjb29raWUsIFJlZjxBZGRTaW5nbGVDb29raWVDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRTZXNzaW9uUGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdldFNlc3Npb25QZXJtaXNzaW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lv
blBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRTZXNzaW9uUGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IEpTT046
OkFycmF5JiBpbl9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybTogbWFj
T1MKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFn
ZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJQ
YWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5Jik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gYnVpbGRCcm93c2luZ0NvbnRleHRGb3JQ
YWdlKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSk7Ci0gICAg
dm9pZCBnZXROZXh0Q29udGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZlY3RvcjxS
ZWY8V2ViUGFnZVByb3h5Pj4mJiwgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4+LCBSZWY8V2ViQXV0
b21hdGlvblNlc3Npb246OkdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJik7CisgICAgdm9p
ZCBnZXROZXh0Q29udGV4dChSZWY8V2ViQXV0b21hdGlvblNlc3Npb24+JiYsIFZlY3RvcjxSZWY8
V2ViUGFnZVByb3h5Pj4mJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pj4sIFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHdlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhh
bmRsZUZvcldlYkZyYW1lSUQodWludDY0X3QgZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjUwZGE2MDcyNjc5OGRmMThjMTg5OTll
ODgwOTc2ZTdkZDBmZWFlNC4uNTYwZTZjYzY3OTM0OTk4YTYwYmY1MDY5ZGUzZjljY2NhOWY1YWM1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTExLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
VD4gdG8gSlNPTiBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBkdXBsaWNhdGUgdGVzdCBjYXNlcyBmb3IgSlNPTjo6QXJyYXlPZjxU
PiBiYXNlZCBvbiBKU09OOjpBcnJheS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0pTT05WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAx
Ny0xMi0wMSAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gQWRkIFNhbXBsZU1hcC5jcHAgQVBJIHRlc3RzIHRvIENNYWtlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcAppbmRleCA1OWJiZjg0MzE1YWNhMTc5
MjRlOTExODRjMWNmZmZiMWVmYTk0MWJhLi45YzBmZjFjNzFhMzM5ZTI5NzE0YTI3MDlhNWViNzk3
YzRlOThmZWQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09O
VmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1ZS5j
cHAKQEAgLTEzMyw2ICsxMzMsMTIgQEAgVEVTVChKU09OVmFsdWUsIENvbnN0cnVjdCkKICAgICAg
ICAgRVhQRUNUX1RSVUUob2JqZWN0LT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6Ok9iamVj
dCk7CiAgICAgICAgIEVYUEVDVF9FUShvYmplY3QtPnNpemUoKSwgMCk7CiAgICAgfQorCisgICAg
eworICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoYXJyYXktPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6
QXJyYXkpOworICAgICAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCAwVSk7CisgICAgfQog
fQogCiBURVNUKEpTT05BcnJheSwgQmFzaWMpCkBAIC0yMjksNiArMjM1LDk1IEBAIFRFU1QoSlNP
TkFycmF5LCBCYXNpYykKICAgICBFWFBFQ1RfVFJVRShpdCA9PSBhcnJheS0+ZW5kKCkpOwogfQog
CitURVNUKEpTT05BcnJheU9mLCBCYXNpYykKK3sKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxKU09O
OjpWYWx1ZT4+IGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwor
CisgICAgYXJyYXktPmFkZEl0ZW0oSlNPTjo6VmFsdWU6Om51bGwoKSk7CisgICAgRVhQRUNUX0VR
KGFycmF5LT5sZW5ndGgoKSwgMVUpOworICAgIGF1dG8gdmFsdWUgPSBhcnJheS0+Z2V0KDApOwor
ICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5pc051bGwoKSk7CisKKyAgICAvLyBOb3RlOiBhZGRJdGVt
KGJvb2wpIGlzIG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0IHdvdWxkIGJlIGFtYmlndW91cwor
ICAgIC8vIHdpdGggYWRkSXRlbShSZWZQdHI8VD4pLCBhbmQgdGhlIGxhdHRlciBpcyBtdWNoIG1v
cmUgY29tbW9uIHRvIGRvLgorCisgICAgYXJyYXktPmFkZEl0ZW0oMSk7CisgICAgRVhQRUNUX0VR
KGFycmF5LT5sZW5ndGgoKSwgM1UpOworICAgIHZhbHVlID0gYXJyYXktPmdldCgyKTsKKyAgICBF
WFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpJbnRlZ2VyKTsK
KyAgICBpbnQgaW50ZWdlclZhbHVlOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT5hc0ludGVnZXIo
aW50ZWdlclZhbHVlKSk7CisgICAgRVhQRUNUX0VRKGludGVnZXJWYWx1ZSwgMSk7CisKKyAgICBh
cnJheS0+YWRkSXRlbSgxLjUpOworICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3RoKCksIDRVKTsK
KyAgICB2YWx1ZSA9IGFycmF5LT5nZXQoMyk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUo
KSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6RG91YmxlKTsKKyAgICBkb3VibGUgZG91YmxlVmFsdWU7
CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPmFzRG91YmxlKGRvdWJsZVZhbHVlKSk7CisgICAgRVhQ
RUNUX0VRKGRvdWJsZVZhbHVlLCAxLjUpOworCisgICAgYXJyYXktPmFkZEl0ZW0oIndlYmtpdCIp
OworICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3RoKCksIDVVKTsKKyAgICB2YWx1ZSA9IGFycmF5
LT5nZXQoNCk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6
VHlwZTo6U3RyaW5nKTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgRVhQRUNUX1RSVUUo
dmFsdWUtPmFzU3RyaW5nKHN0cmluZ1ZhbHVlKSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZhbHVl
LCAid2Via2l0Iik7CisKKyAgICBhcnJheS0+YWRkSXRlbShKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCA2VSk7CisgICAgdmFsdWUgPSBhcnJh
eS0+Z2V0KDUpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6
OlR5cGU6Ok9iamVjdCk7CisgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gb2JqZWN0VmFsdWU7Cisg
ICAgRVhQRUNUX1RSVUUodmFsdWUtPmFzT2JqZWN0KG9iamVjdFZhbHVlKSk7CisgICAgRVhQRUNU
X0VRKG9iamVjdFZhbHVlLT5zaXplKCksIDApOworCisgICAgYXJyYXktPmFkZEl0ZW0oSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxlbmd0aCgpLCA3VSk7Cisg
ICAgdmFsdWUgPSBhcnJheS0+Z2V0KDYpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkg
PT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFy
cmF5VmFsdWU7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPmFzQXJyYXkoYXJyYXlWYWx1ZSkpOwor
ICAgIEVYUEVDVF9FUShhcnJheVZhbHVlLT5sZW5ndGgoKSwgMFUpOworCisgICAgYXV0byBpdCA9
IGFycmF5LT5iZWdpbigpOworICAgIHZhbHVlID0gaXQtPmdldCgpOworICAgIEVYUEVDVF9UUlVF
KHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6Ok51bGwpOworICAgICsraXQ7Cisg
ICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5n
ZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBl
OjpCb29sZWFuKTsKKyAgICArK2l0OworICAgIEVYUEVDVF9GQUxTRShpdCA9PSBhcnJheS0+ZW5k
KCkpOworCisgICAgdmFsdWUgPSBpdC0+Z2V0KCk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5
cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcik7CisgICAgKytpdDsKKyAgICBFWFBF
Q1RfRkFMU0UoaXQgPT0gYXJyYXktPmVuZCgpKTsKKworICAgIHZhbHVlID0gaXQtPmdldCgpOwor
ICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkRvdWJs
ZSk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRkFMU0UoaXQgPT0gYXJyYXktPmVuZCgpKTsKKwor
ICAgIHZhbHVlID0gaXQtPmdldCgpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0g
SlNPTjo6VmFsdWU6OlR5cGU6OlN0cmluZyk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRkFMU0Uo
aXQgPT0gYXJyYXktPmVuZCgpKTsKKworICAgIHZhbHVlID0gaXQtPmdldCgpOworICAgIEVYUEVD
VF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6Ok9iamVjdCk7CisgICAg
KytpdDsKKyAgICBFWFBFQ1RfRkFMU0UoaXQgPT0gYXJyYXktPmVuZCgpKTsKKworICAgIHZhbHVl
ID0gaXQtPmdldCgpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFs
dWU6OlR5cGU6OkFycmF5KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9UUlVFKGl0ID09IGFycmF5
LT5lbmQoKSk7Cit9CisKIFRFU1QoSlNPTk9iamVjdCwgQmFzaWMpCiB7CiAgICAgUmVmPEpTT046
Ok9iamVjdD4gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328151</attachid>
            <date>2017-12-01 13:53:48 -0800</date>
            <delta_ts>2017-12-01 15:45:55 -0800</delta_ts>
            <desc>Take 2</desc>
            <filename>bug-173662-20171201135347.patch</filename>
            <type>text/plain</type>
            <size>194605</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWM5NWNlYmY5M2YwOWJmOGY1ZWZkNzYzNDg1MDhhZWYyNmQ0YWRkLi4zMzdjZmE1ZDk3NGU1MWRh
MDVlMmFhNTE0Nzk4MmY1MTA0MTk1YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0xMS0zMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFQ+
IHRvIEpTT04gbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZG9wdCBuZXcgdHlwZSBuYW1lcy4gRml4IHByb3RvY29sIGdlbmVyYXRvciB0
byB1c2UgY29ycmVjdCB0eXBlIG5hbWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQpOgorICAgICAgICBJbXByb3ZlIG5hbWluZ3MgYW5kIHVzZSAnYXV0bycgd2hlbiB0aGUg
dHlwZSBpcyBvYnZpb3VzIGFuZCByZXBlYXRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENv
bGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOgorICAgICAg
ICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+Pjo6
cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk6OkFycmF5
KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OjpvcGVuQWNj
ZXNzb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojph
ZGRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5Ojpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QmluZGluZ1Ry
YWl0czxQcm90b2NvbDo6QXJyYXk8VD4+OjpydW50aW1lQ2FzdCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSB0aGUg
aW1wbGVtZW50YXRpb24gb3V0IG9mIHRoaXMgZmlsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21h
aW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURv
bWFpbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRCYXNpY0Jsb2Nrcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFNhbXBsZXMpOgorICAg
ICAgICBVc2UgbW9yZSAnYXV0bycgYW5kIHJlbmFtZSBhIHZhcmlhYmxlLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3Bw
R2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKToKKyAgICAgICAgQWRvcHQgbmV3
IHR5cGUgbmFtZXMuIFRoaXMgZXhwb3NlZCBhIGxhdGVudCBidWcgd2hlcmUgd2Ugc2hvdWxkIGhh
dmUgYmVlbgorICAgICAgICB1bndyYXBwaW5nIGFuIEFsaWFzZWRUeXBlIHByaW9yIHRvIGdlbmVy
YXRpbmcgYSBDKysgdHlwZSBmb3IgaXQuIFRoZSBhbGlhc2VkCisgICAgICAgIHR5cGUgbWF5IGJl
IGFuIGFycmF5LCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSB3cm9u
ZyB0eXBlLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5OgorICAgICAgICAoX2dlbmVyYXRlX3R5cGVkZWZz
X2Zvcl9kb21haW4uSlNPTik6CisgICAgICAgIChfZ2VuZXJhdGVfdHlwZWRlZnNfZm9yX2RvbWFp
bi5JbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5
cGVfZm9yX3R5cGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9y
dF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICBSZWJh
c2VsaW5lLgorCisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVNldDo6YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVTZXQuaDoKKwogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgSlNGaXhlZEFycmF5IGZvciBvcF9u
ZXdfYXJyYXlfYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NjRiYzE1OWMwN2I1NWNjMjM5Y2ZlMDcxNDdmODUxNjc4
ZTljNmMuLjgzNDk4MGZjMWFhYzAyMzA2NTk4NzA4MWJkYmYwZTlhZWY0YzRiNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxU
PiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OOjpB
cnJheU9mPFQ+LgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuaDoKKyAgICAgICAgKFdURjo6
SlNPTkltcGw6OkFycmF5T2Y6OkFycmF5T2YpOgorICAgICAgICAoV1RGOjpKU09OSW1wbDo6QXJy
YXlPZjo6b3BlbkFjY2Vzc29ycyk6CisgICAgICAgIChXVEY6OkpTT05JbXBsOjpBcnJheU9mOjph
ZGRJdGVtKToKKyAgICAgICAgKFdURjo6SlNPTkltcGw6OkFycmF5T2Y6OmNyZWF0ZSk6CisKIDIw
MTctMTEtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0pTQ10gUmVtb3ZlIGVhc3kgdG9SZW1vdmUgJiBtYXAucmVtb3ZlKCkgdXNlIGluIE9BUyBw
aGFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDdkZTk3MzAxZmY5ODlmY2M3YjY4ZmQ5NzZkMjA2ZmVlN2U5M2Jh
NzcuLjEyMjAyZmFjZWViMTU5ZmQ1YjZmNjdiMmM2MzY4M2FiZTkxM2QwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMDggQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IHR5cGUgbmFtZXMuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
cmVsZWFzZUZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlbGVh
c2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JBZmZpbmVUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9ySW1hZ2VCaXRtYXApOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMgY29uc3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JI
aWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRIaWdobGlnaHRPYmplY3RGb3JOb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0
Rm9ySGlnaGxpZ2h0ZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVkaWFMaXN0Q2hhaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVs
ZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRG
cmFtZXNXaXRoTWFuaWZlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5
bGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0
eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxl
QXR0cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Omdh
dGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50Ojpjb2xsZWN0U2FtcGxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaE90aGVyUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hJblJlcXVlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRB
cnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVp
bGRPYmplY3RGb3JGcmFtZVRyZWUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hh
bm5lbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50Lmg6CisK
IDIwMTctMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFyIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBpbiBjYXNlIHN0b3JhZ2UgcHJvY2VzcyBJUEMg
Y29ubmVjdGlvbiBpcyBjbG9zaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlNDE0ZjNjYjFjMzVlMDI2N2FkMTM3
Nzc4ZjVjODFiYzFjYWI3MTguLjQyYTE3YjJjNzRiYjI5YmFhNzlkOGRhZDkxNjJmYzQ1NmQ4NWJj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09OIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IHR5cGUgbmFtZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXROZXh0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRleHRz
KToKKyAgICAgICAgKFdlYktpdDo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Npb25zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorCiAyMDE3
LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVh
ciBXZWJTV0NsaWVudENvbm5lY3Rpb24gaW4gY2FzZSBzdG9yYWdlIHByb2Nlc3MgSVBDIGNvbm5l
Y3Rpb24gaXMgY2xvc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCAwNDQzMGFiYjY2NTBjZTllNWY4ZTI1YWZkMWRmMmIy
NWI0OTNlNGE1Li5jMDI4YWNhOTIwMTUzNDc2M2Y5OTNiZmI1OGQwOTJiMTJkNzI4ZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cApAQCAtMTcyLDI2ICsxNzIsMjYgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXMKIAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyJiBj
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7Ci0gICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisgICAgYXV0byBt
ZXNzYWdlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291
cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAg
ICAgICAuc2V0VGV4dChtX21lc3NhZ2UpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAKICAgICAvLyBG
SVhNRTogb25seSBzZW5kIG91dCB0eXBlIGZvciBDb25zb2xlQVBJIHNvdXJjZSBtZXNzYWdlcy4K
LSAgICBqc29uT2JqLT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFsdWUobV90eXBlKSk7Ci0gICAganNv
bk9iai0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOwotICAgIGpzb25PYmotPnNl
dENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+KG1fY29sdW1uKSk7Ci0gICAganNvbk9iai0+c2V0VXJs
KG1fdXJsKTsKLSAgICBqc29uT2JqLT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVwZWF0Q291bnQpKTsKKyAgICBtZXNzYWdlT2JqZWN0LT5zZXRUeXBlKG1lc3NhZ2VUeXBlVmFs
dWUobV90eXBlKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0TGluZShzdGF0aWNfY2FzdDxpbnQ+
KG1fbGluZSkpOworICAgIG1lc3NhZ2VPYmplY3QtPnNldENvbHVtbihzdGF0aWNfY2FzdDxpbnQ+
KG1fY29sdW1uKSk7CisgICAgbWVzc2FnZU9iamVjdC0+c2V0VXJsKG1fdXJsKTsKKyAgICBtZXNz
YWdlT2JqZWN0LT5zZXRSZXBlYXRDb3VudChzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQp
KTsKIAogICAgIGlmIChtX3NvdXJjZSA9PSBNZXNzYWdlU291cmNlOjpOZXR3b3JrICYmICFtX3Jl
cXVlc3RJZC5pc0VtcHR5KCkpCi0gICAgICAgIGpzb25PYmotPnNldE5ldHdvcmtSZXF1ZXN0SWQo
bV9yZXF1ZXN0SWQpOworICAgICAgICBtZXNzYWdlT2JqZWN0LT5zZXROZXR3b3JrUmVxdWVzdElk
KG1fcmVxdWVzdElkKTsKIAogICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9i
YWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
LSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudHNPYmplY3QgPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBNZXNzYWdlVHlwZTo6VGFibGUgJiYgZ2VuZXJh
dGVQcmV2aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDApOwogICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNvbHVtbnMg
PSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKQEAgLTIwMCw5ICsyMDAsOSBAQCB2
b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZS5jb3B5UmVm
KCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+YWRkSXRlbShpbnNwZWN0b3JW
YWx1ZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2FyZ3VtZW50cy0+YXJndW1l
bnRDb3VudCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxpdGVyYWwoImNvbnNvbGUiKSwg
dHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNPYmplY3QtPmFkZEl0ZW0oaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCBBU0NJSUxpdGVyYWwoImNvbnNvbGUiKSwg
dHJ1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2Fy
Z3VtZW50cy0+YXJndW1lbnRBdChpKSwgQVNDSUlMaXRlcmFsKCJjb25zb2xlIiksIGdlbmVyYXRl
UHJldmlldyk7CkBAIC0yMTAsMTcgKzIxMCwxNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRU
b0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwog
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUuY29weVJlZigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3RvclZhbHVl
LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAganNvbk9iai0+c2V0UGFyYW1ldGVycyhXVEZNb3ZlKGpzb25BcmdzKSk7CisgICAgICAgICAg
ICBtZXNzYWdlT2JqZWN0LT5zZXRQYXJhbWV0ZXJzKFdURk1vdmUoYXJndW1lbnRzT2JqZWN0KSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9jYWxsU3RhY2spCi0gICAgICAgIGpzb25P
YmotPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7Cisg
ICAgICAgIG1lc3NhZ2VPYmplY3QtPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5z
cGVjdG9yQXJyYXkoKSk7CiAKLSAgICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLm1lc3NhZ2VB
ZGRlZChXVEZNb3ZlKGpzb25PYmopKTsKKyAgICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLm1l
c3NhZ2VBZGRlZChXVEZNb3ZlKG1lc3NhZ2VPYmplY3QpKTsKIH0KIAogdm9pZCBDb25zb2xlTWVz
c2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
ciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCmluZGV4IDQ5
OTA4MGNjYzJiMzk1ZjlhYzAyNjA2MTc1MmE4NDEzZjA5YjlkZjcuLmIxYjA1ODVhMjUzNDQwZjA0
ZGEwMGRlMzAyOWQyZDJkZjA2NjE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcApAQCAtMTUxLDkg
KzE1MSw5IEBAIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBSZWd1bGFy
RXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wgaXNSZWdleCkKK1JlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
OjpjcmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJj
aFV0aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVn
ZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5oCmluZGV4IDdjMDFiOTBkYTE5MzdhZTViZTlhMjM2NDQ4MzE1ZmJlZjAzMGFmZDkuLjU1YjE5
MWVhMjM4OWNjMWY5ZmZhNzhjZmFjZDIyYzFiYzFjZTA1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbGl0aWVzIHsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hS
ZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdl
eCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0cmluZyYpOwotSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVz
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBK
U19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXpl
X3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogSlNfRVhQT1JU
X1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25z
dCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcAppbmRleCBmZDhlNGFkYzc5MGNkZGE1ODkwZmVmZjFiODdmMjZlYmU3
YTExMTQ0Li5kNzgwZjI1M2MyN2NhMTI0NmJkODVkZWJkNDk4NGRjYzkzYjVmN2MzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApA
QCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
OwotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2Ny
aXB0KCkKQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcmV2aWV3
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZAogICAgICpy
ZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVj
dFByZXZpZXc+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiB9CiAKLXZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Ym9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4q
IHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0UHJvcGVydGllcyIp
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTE1NSwxMCArMTUzLDEwIEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqcHJv
cGVydGllcyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgKnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1v
dmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERpc3BsYXlhYmxlUHJv
cGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTcx
LDEwICsxNjksMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGllcyA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6
cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9w
ZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7CiAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIiksIGluc3BlY3RvckVudmly
b25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQob2JqZWN0SWQpOwpAQCAtMTg3LDExICsxODUsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYXJyYXkgPSBCaW5kaW5n
VHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBh
cnJheSA9IEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICpwcm9wZXJ0aWVzID0gYXJyYXktPmxlbmd0aCgpID4gMCA/IGFycmF5
IDogbnVsbHB0cjsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50IG51bWJlclRvRmV0Y2gs
IFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+KiBlbnRyaWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBpbnQgc3RhcnRJbmRleCwgaW50IG51bWJlclRvRmV0Y2gsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Piog
ZW50cmllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRDb2xsZWN0aW9uRW50cmll
cyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTIwNiw3ICsyMDQsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKmVu
dHJpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9u
RW50cnk+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAqZW50cmllcyA9IEJp
bmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVu
dHJ5Pj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxBcmd1bWVudEpTT04sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBz
YXZlZFJlc3VsdEluZGV4KQpAQCAtMjI2LDcgKzIyNCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxB
cmd1CiAgICAgICAgICpzYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleEludDsKIH0K
IAotUmVmPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMpIGNv
bnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxs
RnJhbWVzKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
QVNDSUlMaXRlcmFsKCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMjM1LDEzICsyMzMsMTMgQEAgUmVmPEFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6
d3JhcENhbGxGcmEKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGF1dG8gY2Fs
bEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOwogICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQotICAgICAgICByZXR1cm4gQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwor
ICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3Rh
dGUoKSwgY2FsbEZyYW1lc1ZhbHVlKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSlNPTjo6
VmFsdWU6OlR5cGU6OkFycmF5KQotICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KFdU
Rk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIEJpbmRpbmdU
cmFpdHM8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSkucmVsZWFzZU5vbk51bGwoKTsKIAot
ICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQogCiBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9i
amVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdl
bmVyYXRlUHJldmlldykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0MDk4ZDc2NGE3MWY4NDQwY2E5ZmM1ZGVhNThiYWVm
MDBiNmEwYjJkLi45MWYyNTUxNTYzNzRlMmM2YTYzN2QyOWYyMWI0MmU1NGZiODQzOTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBA
IC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
T2JqZWN0UHJldmlldz4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXREaXNwbGF5YWJsZVBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRy
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgsIGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8UHJv
dG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiogZW50cmll
cyk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+KiBy
ZXN1bHQpOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0
KTsKKyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0
KTsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgaW50IHN0YXJ0SW5kZXgs
IGludCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGlt
ZTo6Q29sbGVjdGlvbkVudHJ5Pj4qIGVudHJpZXMpOwogICAgIHZvaWQgc2F2ZVJlc3VsdChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3VtZW50SlNPTiwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpOwogCi0gICAgUmVmPFByb3Rv
Y29sOjpBcnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVz
KEpTQzo6SlNWYWx1ZSkgY29uc3Q7CisgICAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhKU0M6OkpTVmFsdWUpIGNvbnN0Owog
ICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KEpT
Qzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
ID0gZmFsc2UpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRhYmxlLCBKU0M6OkpTVmFsdWUgY29sdW1ucykg
Y29uc3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbHVlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKaW5kZXggZDhmZjhm
ZGZkMzQ1ZjAyMDE5NDhiNDE5MjBhMTJjZGYwNjIzYjIyZC4uMDc2NTczZWE1YmQ3MzNiNDIyZDll
NjhhZjkzZmY3ZDAyYWQ5MmUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKQEAgLTYxLDQ5ICs2MSw2IEBA
IHByaXZhdGU6CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBKU09OOjpBcnJheUJhc2Ug
ewotcHJpdmF0ZToKLSAgICBBcnJheSgpIHsgfQotCi0gICAgSlNPTjo6QXJyYXkmIG9wZW5BY2Nl
c3NvcnMoKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTT046OkFycmF5
KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0gICAgICAgIHJldHVybiAqc3Rh
dGljX2Nhc3Q8SlNPTjo6QXJyYXkqPihzdGF0aWNfY2FzdDxKU09OOjpBcnJheUJhc2UqPih0aGlz
KSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVtKFJlZjxUPiYmIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hWYWx1ZSgmdmFsdWUuZ2V0KCkpOwot
ICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShSZWZQdHI8VD4mJiB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIG9wZW5BY2Nlc3NvcnMoKS5wdXNoVmFsdWUoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IG9wZW5BY2Nlc3NvcnMoKS5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZEl0ZW0oaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hJbnRl
Z2VyKHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0oZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgb3BlbkFjY2Vzc29ycygpLnB1c2hEb3VibGUodmFsdWUpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBSZWY8QXJyYXk8VD4+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19OwotCiAvLyBIZWxwZXIgbWV0aG9k
cyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEpTT04gdHlwZXMgYXJlIHByb3ZpZGVkIGJ5CiAvLyBz
cGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBhcmUgZ2VuZXJhdGVkIGZv
ciBwcm90b2NvbCB0eXBlcy4KIApAQCAtMTMwLDggKzg3LDggQEAgc3RydWN0IFByaW1pdGl2ZUJp
bmRpbmdUcmFpdHMgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBCaW5kaW5n
VHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4gewotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXk8VD4+
IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSkKK3N0cnVjdCBCaW5kaW5n
VHJhaXRzPEpTT046OkFycmF5T2Y8VD4+IHsKKyAgICBzdGF0aWMgUmVmUHRyPEpTT046OkFycmF5
T2Y8VD4+IHJ1bnRpbWVDYXN0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICAgICAgUmVmUHRyPEpTT046OkFy
cmF5PiBhcnJheTsKQEAgLTE0MCw4ICs5Nyw4IEBAIHN0cnVjdCBCaW5kaW5nVHJhaXRzPFByb3Rv
Y29sOjpBcnJheTxUPj4gewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoYXJyYXkuZ2V0KCkpOwogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJM
RUQKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSlNP
Tjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEpTT046OkFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU09OOjpBcnJheU9mPFQ+KSA9PSBzaXpl
b2YoSlNPTjo6QXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU09OOjpBcnJheU9mPFQ+Kj4oc3RhdGljX2Nhc3Q8SlNPTjo6QXJyYXlCYXNlKj4o
YXJyYXkuZ2V0KCkpKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXgg
NjBkZmY3NzU5YjFlZjVjZDc0NjQyNzQyMzBiZDhjNmM2MjhmM2M5Mi4uOTVjZTMzMTNlMzQ0MDY0
OTg0YjNhZmMxZmYxNWU4NWE3ZThiNjViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAtMTA1LDkgKzEwNSw5IEBAIGJv
b2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxTdGFjayogbykgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVp
bGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVj
dG9yQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gZnJhbWVzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRl
KCk7CisgICAgYXV0byBmcmFtZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1l
cy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICByZXR1cm4gZnJhbWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKaW5k
ZXggNDlmY2M0ZjBjMzMwZDAyMGVhMjY4ZmNmODY1MmMwMTBmNmI2YzU5Yi4uOTkyODBiMDY0YWNh
Nzc1MTU3NzA5M2JiMzU0ZTNlODY0NTQyNzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKIAotICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgUmVmPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJ
bnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNjcmlwdENhbGxTdGFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDVlOTAyNmE3Mjk5MTE3YzQ0MGRlZGNjZDcyNDRhYmNl
NDQ4YWMyYzguLjAzOTU5Njg3YzZlOThlODNjZjJjNDRlNGIwMGQ4OWZjMzkyMzk0MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHAKQEAgLTExNiwxMiArMTE2LDEyIEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW5OYW1lKQogewogICAgIGlm
ICghbV9lbmFibGVkKSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0YSkK
LSAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4dHJh
RG9tYWluc0RhdGEgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBt
X3BlbmRpbmdFeHRyYURvbWFpbnNEYXRhLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09O
OjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVtKGRv
bWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlu
cyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4
dHJhRG9tYWlucykKICAgICBpZiAoZXh0cmFEb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBKU09OOjpBcnJheU9m
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBkb21haW5OYW1lIDogZXh0cmFEb21h
aW5zKQogICAgICAgICBkb21haW5OYW1lcy0+YWRkSXRlbShkb21haW5OYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmgKaW5kZXggMjFjNDQ1NmQ2ZjAxYzU3ZjZmOGNmYTUyMDA2NzJiZTYzNTUwY2RkMy4uOTJj
ODFjNWNjMTE1Y2U1Y2I5YzMxZTY4NjcxM2M4ZDQyYjJhOGRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5nRXZh
bHVhdGVUZXN0Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEpTT046Ok9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3RE
YXRhOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBtX3BlbmRpbmdFeHRyYURv
bWFpbnNEYXRhOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG1fcGVuZGluZ0V4
dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZmI4YzVjODAyZDI3NTBkZTU1
ZTVmMjNjZTRhN2NhZGMwMjdhZmUzNC4uOTY0OTc0NzZlZjQzOTliYmU4ZDg1NjdkZjlmZWViNzYz
MzVkMGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0yMzUsMTAgKzIz
NSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPiBjbwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
aGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dp
bmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYgY2hhbm5lbHMpCiB7CiAgICAgLy8gRGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gbG9nZ2luZyBjaGFubmVscy4KLSAgICBjaGFubmVscyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNoYW5uZWw+OjpjcmVhdGUoKTsKKyAgICBjaGFubmVscyA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0ZSgpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCmluZGV4IDJlNTQxODgxZTcxNTdlMmQ1ZjEzNWFkNDJiMThkMWJkNjVjNzVh
MzYuLjlmOGMxOWI4NTUwYjU2YmM2MmMyMmViZDBmN2Q5YmZiNzA2MmNkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRh
a2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3VudChKU0M6
OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpOwogCi0gICAgdm9pZCBnZXRMb2dn
aW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDIzNDM0NWJiZGQwZTdjZWNk
MTkxNjc2MmIwMzE5YjZmYjEzNTc5OTguLmQ2OWRkYTIzMjc4YzdjOThkZGNlMmVkMzhhYTU2YWFm
MmUzZGIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MzUsOSAr
NDM1LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQq
IGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9p
bnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRp
b25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmll
ciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVh
dGUoKTsKKyAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghb3B0aW9uYWxVUkwgPT0g
IW9wdGlvbmFsVVJMUmVnZXgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQuIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNv
bnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
RFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykK
IHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsK
ICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwpAQCAtODY2LDExICs4NjYs
MTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2Vk
QnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICAgICAgYnJlYWtQcm9ncmFtKERlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9s
YXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRT
Y3JpcHQmIGluamVjdGVkU2NyaXB0KQorUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJl
bnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCkKIHsKICAg
ICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0
LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKaW5kZXggNTUxNjIwZWJiNmRkMWJlY2Q2MzU3NDY4NDU4ZjJkZWVmZjJkMDlj
Yy4uYmYwZTljNjgyNjQ3NWQzOTA5ZTUyODFkNzg3MzJjZDYxMjU1NGZlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEFzeW5jU3RhY2tUcmFj
ZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5hbDsKICAgICB2b2lkIHNldEJyZWFr
cG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUpIGZpbmFsOwotICAgIHZvaWQg
c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxS
ZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOworICAgIHZvaWQgc2V0
QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdl
eCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElk
KiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNvbnRp
bnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29udGlu
dWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbikg
ZmluYWw7Ci0gICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOworICAgIHZvaWQgc2VhcmNoSW5Db250ZW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOwogICAgIHZvaWQgZ2V0
U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5n
KiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5hbDsKICAgICB2b2lkIHBhdXNl
KEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKSB7IH0KIAogcHJpdmF0
ZToKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVk
U2NyaXB0Jik7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0
Jik7CiAKICAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlw
dCYpIGZpbmFsOwogICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAppbmRleCBkMjI2MGU1OWY3Nzg2MjgwZGFmMWRmZjQ3YjA1ZWM2ZWQzNGMxMTE4Li5mNWQy
NTA1ZDQ5NTc0N2I1YTRhNTk2YjJkMTNlOTkwZmQ3MWY5NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
bwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29s
KiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVz
dWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0
aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25z
dCBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVy
dGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZwogICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNv
bnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9v
bCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGMKICAgICBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJ
bmRleCwgY29uc3QgaW50KiBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4m
IGVudHJpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGludCog
bnVtYmVyVG9GZXRjaCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKSB7CkBAIC0yNTcsMTEgKzI1NywxMSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplYwogICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJp
YWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJh
eSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGxv
Y2F0aW9ucywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi0gICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0
ZSgpOwogICAgIGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIFR5cGUgSW5m
b3JtYXRpb24uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRTdGF0ZShi
b29sIGlzQ29udHJvbEZsbwogICAgIH0pOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEQXNTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5nLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2
ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iKTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbgogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlSURBc1N0cmlu
Zy50b0ludFB0clN0cmljdCgmb2theSk7CiAgICAgQVNTRVJUKG9rYXkpOwogICAgIGNvbnN0IFZl
Y3RvcjxCYXNpY0Jsb2NrUmFuZ2U+JiBiYXNpY0Jsb2NrUmFuZ2VzID0gbV92bS5jb250cm9sRmxv
d1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIG1fdm0pOwot
ICAgIGJhc2ljQmxvY2tzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgpOworICAgIGJhc2ljQmxvY2tz
ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2NrUmFuZ2UmIGJsb2NrIDogYmFz
aWNCbG9ja1JhbmdlcykgewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6QmFzaWNCbG9jaz4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpC
YXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFN0YXJ0T2Zmc2V0KGJsb2NrLm1f
c3RhcnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI2ZmU3MWZiOWM2
MzNkZjRhMTBjNzhkODYwNDViMWU3OGY1YTFmODUuLjRiZDhlYTRkZTZkM2I0YWVhODBjNzY1MmUw
MDBkZGI1NWMzM2QzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02MiwxNyAr
NjIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEpT
T046OkFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZh
bHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBmaW5hbDsKICAgICB2b2lkIHJlbGVh
c2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmluZyYgb2JqZWN0SWQpIGZpbmFs
OwogICAgIHZvaWQgZ2V0UHJldmlldyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYp
IGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wq
IGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1
bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGludCogY29uc3Qgc3Rh
cnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlv
bkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3Bl
cnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4m
IHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5h
bDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlE
ZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9w
ZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91
cCwgY29uc3QgaW50KiBjb25zdCBzdGFydEluZGV4LCBjb25zdCBpbnQqIGNvbnN0IG51bWJlclRv
RmV0Y2gsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBmaW5hbDsKICAgICB2b2lkIHNhdmVSZXN1bHQo
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50
KiBjb25zdCBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIGZpbmFsOwotICAg
IHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwg
Y29uc3QgSlNPTjo6QXJyYXkmIGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMo
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcihFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3Mp
IG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCBlNDQ0MTBhZDI5NDgy
MTNiYjZhZGZiODU0Y2NkNzA3NjRjNTA5OTg2Li41ZTg5NWFlODUyMDE1YjlkNGNkMDU1MWNmMWI4
OWJiOGVmNjMzZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcApAQCAtMTY2LDExICsxNjYsMTEgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgUHIKICNpZiBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBzdGF0aWMgUmVmPFByb3RvY29sOjpTY3JpcHRQcm9m
aWxlcjo6U2FtcGxlcz4gYnVpbGRTYW1wbGVzKFZNJiB2bSwgVmVjdG9yPFNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrVHJhY2U+JiYgc2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKQogewotICAgIFJl
ZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPj4g
c3RhY2tUcmFjZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpT
dGFja1RyYWNlPjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdGFja1RyYWNlcyA9IEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja1RyYWNlJiBzdGFja1RyYWNlIDogc2FtcGxpbmdQ
cm9maWxlclN0YWNrVHJhY2VzKSB7Ci0gICAgICAgIFJlZjxQcm90b2NvbDo6QXJyYXk8UHJvdG9j
b2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPj4gZnJhbWVzID0gUHJvdG9jb2w6OkFycmF5
PFByb3RvY29sOjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZT46OmNyZWF0ZSgpOworICAgICAg
ICBhdXRvIGZyYW1lcyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpT
dGFja0ZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoU2FtcGxpbmdQcm9maWxlcjo6U3Rh
Y2tGcmFtZSYgc3RhY2tGcmFtZSA6IHN0YWNrVHJhY2UuZnJhbWVzKSB7Ci0gICAgICAgICAgICBS
ZWY8UHJvdG9jb2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja0ZyYW1lPiBmcmFtZSA9IFByb3RvY29s
OjpTY3JpcHRQcm9maWxlcjo6U3RhY2tGcmFtZTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIGF1dG8g
ZnJhbWVPYmplY3QgPSBQcm90b2NvbDo6U2NyaXB0UHJvZmlsZXI6OlN0YWNrRnJhbWU6OmNyZWF0
ZSgpCiAgICAgICAgICAgICAgICAgLnNldFNvdXJjZUlEKFN0cmluZzo6bnVtYmVyKHN0YWNrRnJh
bWUuc291cmNlSUQoKSkpCiAgICAgICAgICAgICAgICAgLnNldE5hbWUoc3RhY2tGcmFtZS5kaXNw
bGF5TmFtZSh2bSkpCiAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tGcmFtZS5mdW5jdGlv
blN0YXJ0TGluZSgpKQpAQCAtMTgzLDEwICsxODMsMTAgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6
U2NyaXB0UHJvZmlsZXI6OlNhbXBsZXM+IGJ1aWxkU2FtcGxlcyhWTSYgdm0sIFZlY3RvcjxTYW1w
bGkKICAgICAgICAgICAgICAgICAgICAgLnNldExpbmUoc3RhY2tGcmFtZS5saW5lTnVtYmVyKCkp
CiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb2x1bW4oc3RhY2tGcmFtZS5jb2x1bW5OdW1iZXIo
KSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+c2V0RXhwcmVzc2lvbkxvY2F0aW9uKFdURk1vdmUoZXhwcmVzc2lvbkxvY2F0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWVPYmplY3QtPnNldEV4cHJlc3Npb25Mb2NhdGlvbihXVEZNb3Zl
KGV4cHJlc3Npb25Mb2NhdGlvbikpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmcmFt
ZXMtPmFkZEl0ZW0oV1RGTW92ZShmcmFtZSkpOworICAgICAgICAgICAgZnJhbWVzLT5hZGRJdGVt
KFdURk1vdmUoZnJhbWVPYmplY3QpKTsKICAgICAgICAgfQogICAgICAgICBSZWY8UHJvdG9jb2w6
OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlPiBpbnNwZWN0b3JTdGFja1RyYWNlID0gUHJvdG9j
b2w6OlNjcmlwdFByb2ZpbGVyOjpTdGFja1RyYWNlOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNl
dFRpbWVzdGFtcChzdGFja1RyYWNlLnRpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yLnB5CmluZGV4IDA0ZGRmY2I4ZGE4OTA1Y2Q2NjE1N2MxM2UwYzQxNzU5ZjE1ZTE5MzAuLmE5
MGMwZGJmZTY2ZDBjNGU0M2JkNDA2ZmMxZDg4Yjg1ODhlY2IyODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3Iu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvci5weQpAQCAtOTcsMTIgKzk3LDE1IEBAIGNsYXNzIENwcEdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICMgR2VuZXJhdGUgdHlwZSByZXByZXNlbnRhdGlvbnMgZm9yIHZhcmlv
dXMgc2l0dWF0aW9ucy4KICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGNwcF9wcm90b2NvbF90
eXBlX2Zvcl90eXBlKF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNl
ZFR5cGUpOgorICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUgICMgRmFsbCB0
aHJvdWdoIHRvIGVudW0gb3IgcHJpbWl0aXZlLgorCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5
cGUsIE9iamVjdFR5cGUpIGFuZCBsZW4oX3R5cGUubWVtYmVycykgPT0gMDoKICAgICAgICAgICAg
IHJldHVybiAnSlNPTjo6T2JqZWN0JwogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBcnJh
eVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUoKSBpcyBOb25lOiAgIyBPdGhl
cndpc2UsIGZhbGwgdGhyb3VnaCBhbmQgdXNlIHR5cGVkZWYnZCBuYW1lLgotICAgICAgICAgICAg
ICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8JXM+JyAlIENwcEdlbmVyYXRv
ci5jcHBfcHJvdG9jb2xfdHlwZV9mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlhc2VkVHlwZSwgRW51bVR5cGUs
IEFycmF5VHlwZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiAnSlNPTjo6QXJyYXlPZjwlcz4n
ICUgQ3BwR2VuZXJhdG9yLmNwcF9wcm90b2NvbF90eXBlX2Zvcl90eXBlKF90eXBlLmVsZW1lbnRf
dHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5cGUsIEVudW1UeXBl
LCBBcnJheVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6
JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFt
ZSgpKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAg
ICAgICAgIHJldHVybiBDcHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggMTJlMDk1MzkzNGZjMDc2ODBlZmIyZWE4MmI3NWZm
NTBiNThmNmU4Mi4uNWQ0MTFkNDlmOWQxZTk4ODc2YTZhOWZlMzViOWVlOGE3MWQ3NWQxYyAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xf
dHlwZXNfaGVhZGVyLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBl
c0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgdHlwZWRlZl9saW5l
cyA9IFtdCiAgICAgICAgICAgICBpZiBsZW4oZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoK
ICAgICAgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZGVjbGFy
YXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlw
ZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTwlcz4gJXM7JyAlIChlbGVtZW50X3R5cGUs
IGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVu
ZCgndHlwZWRlZiBKU09OOjpBcnJheU9mPCVzPiAlczsnICUgKGVsZW1lbnRfdHlwZSwgZGVjbGFy
YXRpb24udHlwZV9uYW1lKSkKICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4o
dHlwZWRlZl9saW5lcykpCiAKICAgICAgICAgbGluZXMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3Iu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvci5weQppbmRleCA2OTkwMmZiMzU5YzkxMjQ4NjQ4NGVmYTNkYjkzZDQwNzk5NDg4
NzdkLi5lNTJmMzE1NDRjMTFmYjc2YzRiYWFjNjdlN2JhOTI3MjI0MGNmY2Q3IDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90
b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5y
YXdfbmFtZSgpKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKSk6CiAg
ICAgICAgICAgICBzdWJfdHlwZSA9IE9iakNHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9mb3JfdHlw
ZShfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PCVzPicgJSBzdWJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICdKU09OOjpB
cnJheU9mPCVzPicgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQHN0YXRp
Y21ldGhvZApAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9y
KToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAg
ICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfZm9yX3R5
cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYu
b2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5cGUpCi0gICAgICAgICAgICBp
ZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JzoK
KyAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgPT0gJ0pTT046OkFycmF5T2Y8U3RyaW5nPic6
CiAgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJpbmdBcnJheUFycmF5KCVzKScgJSB2
YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBpcyAnU3RyaW5nJyBhbmQgb2Jq
Y19jbGFzcyBpcyAnTlNTdHJpbmcnOgogICAgICAgICAgICAgICAgIHJldHVybiAndG9KU09OU3Ry
aW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMt
YXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDc2ZTg2ZGQyYjQ3MmQxZmMxOWQzYmYyNjY5MTFj
ZDcwYjBkMjhlMmIuLmMyMGRkMDgxMTZhNmE0OWFjNmNkYjI0MDlkZDQwMjk5Mjg0OWIzMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBA
IC0xNTcsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAg
IEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogb3B0X291dF9wYXlsb2Fk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9z
cWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9w
dF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmlu
ZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6VmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9y
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9z
Y3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxp
c3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4
ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SlNPTjo6T2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNP
Tjo6VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
JiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVl
bkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4m
JiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+
KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJy
YXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+
KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
OwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5f
cXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3Ry
aW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJp
bmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBKU09OOjpPYmplY3QqIG91dF92
YWx1ZXMsIEpTT046OlZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJp
bnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNR
TFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9x
dWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3Ry
aW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSlNPTjo6T2JqZWN0KiBvdXRf
dmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2Fs
dGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5j
Q2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAg
cHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFja2VuZERpc3Bh
dGNoZXI+JiYsIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIEpTT046Ok9iamVjdCB2YWx1ZXMsIEpTT046OlZh
bHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CisgICAgICAgIHZvaWQgc2VuZFN1
Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6T2JqZWN0IHZhbHVlcywgSlNP
Tjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwogICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6CkBAIC0yOTQsMTIgKzI5NCwxMiBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXMobG9uZyByZXF1ZXN0SQogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEpTT046
Ok9iamVjdD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOworICAgIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNPTjo6T2JqZWN0PiBvdXRfdmFsdWVzOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpWYWx1ZT4gb3V0X3BheWxvYWQ7Ci0g
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKKyAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8aW50PiBvdXRfZGF0YWJhc2VJZDsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0
ZXJuYXRlQ29sb3JzOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJ
CiAKIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwg
aW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5k
RGlzcGF0Y2hlciksIGlkKSB7IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1
Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2Fs
bGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgY29sdW1u
TmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046Ok9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2Jq
ZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVt
bk5hbWVzKQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEpTT046Ok9iamUKIAog
ICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgU3RyaW5nIG91dF9ub3RlczsKICAgICBkb3Vi
bGUgb3V0X3RpbWVzdGFtcDsKICAgICBKU09OOjpPYmplY3Qgb3V0X3ZhbHVlczsKICAgICBKU09O
OjpWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKKyAgICBpbnQgb3V0X2RhdGFiYXNlSWQ7CiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9y
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBv
dXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgcmVxdWVzdElkLCBS
ZWZQdHI8SlNPTjo6T2JqZQogCiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhl
Y3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KIAot
dm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2Fs
bGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1w
LCBKU09OOjpPYmplY3QgdmFsdWVzLCBKU09OOjpWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJv
ciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHBy
aW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5n
Pj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
SlNPTjo6T2JqZWN0IHZhbHVlcywgSlNPTjo6VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmlu
dENvbG9yKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJj
b2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1lcyk7CkBAIC02MjksNyArNjI5LDcgQEAgZW51bSBjbGFz
cyBQcmltYXJ5Q29sb3JzOwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVudGlm
aWVyIG9mIERhdGFiYXNlIG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10eXBl
ZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsKIH0g
Ly8gRGF0YWJhc2UKIC8vIEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CmluZGV4IDBjZTBjMThkMjYxYTliODM0NDhlZTFkZDgzNzhiYmMzNmUzYzgyNTguLjI0
MmQ2YWMxYjgzYzU2MGQ4ZmIzOWZhNzcyNmRmMmNlYWE5M2RiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKQEAgLTE1Miw4ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxv
dyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29s
b3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0X2luX25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IG9wdF9pbl90aW1lc3Rh
bXAsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0X2luX3ZhbHVlcywgY29uc3QgSlNPTjo6VmFsdWUq
IGNvbnN0IG9wdF9pbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0IG9wdF9pbl9kYXRhYmFzZUlk
LCBjb25zdCBKU09OOjpPYmplY3QqIG9wdF9pbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25z
dCBvcHRfaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFycmF5KiBvcHRfaW5fYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9wcmludENvbG9yLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxKU09OOjpPYmplY3Q+KiBvcHRfb3V0X3ZhbHVl
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEpTT046OlZhbHVlPiogb3B0X291dF9w
YXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0
X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5n
JiwgY29uc3QgSlNPTjo6QXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25v
dGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3ZhbHVlcywg
SlNPTjo6VmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9i
amVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpT
T046OkFycmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1u
TmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEpTT046Ok9i
amVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0
X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyog
b3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
QXJyYXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRfaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogY29uc3Qgb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvcHRfaW5fdmFsdWVzLCBjb25zdCBKU09OOjpWYWx1ZSogY29uc3Qgb3B0X2luX3BheWxv
YWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9zY3JlZW5Db2xv
ciwgY29uc3QgSlNPTjo6QXJyYXkqIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0X2luX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJs
ZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SlNP
Tjo6T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxKU09OOjpWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJu
YXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciog
b3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBpbl9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3Qg
SlNPTjo6T2JqZWN0JiBpbl92YWx1ZXMsIEpTT046OlZhbHVlIGluX3BheWxvYWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBKU09OOjpPYmplY3QmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcm
IGluX3NjcmVlbkNvbG9yLCBjb25zdCBKU09OOjpBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3Rh
bXAsIEpTT046Ok9iamVjdCogb3V0X3ZhbHVlcywgSlNPTjo6VmFsdWUqIG91dF9wYXlsb2FkLCBp
bnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7
CiB9OwpAQCAtMjg5LDEyICsyODksMTIgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWYKIAogICAg
IEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4gb3V0X25vdGVzOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxk
b3VibGU+IG91dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEpTT046Ok9iamVjdD4gb3V0X3ZhbHVlczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8SlNPTjo6VmFsdWU+IG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZD4gb3V0
X2RhdGFiYXNlSWQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4gb3V0
X2RhdGFiYXNlSWQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKQEAgLTM1NSwx
MiArMzU1LDEyIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWZQCiAKICAgICBFcnJvclN0cmluZyBl
cnJvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRf
Y29sdW1uTmFtZXM7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gb3V0X2NvbHVt
bk5hbWVzOwogICAgIFN0cmluZyBvdXRfbm90ZXM7CiAgICAgZG91YmxlIG91dF90aW1lc3RhbXA7
CiAgICAgSlNPTjo6T2JqZWN0IG91dF92YWx1ZXM7CiAgICAgSlNPTjo6VmFsdWUgb3V0X3BheWxv
YWQ7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlSWQgb3V0X2Rh
dGFiYXNlSWQ7CisgICAgaW50IG91dF9kYXRhYmFzZUlkOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRl
cm5hdGVDb2xvcnM7CkBAIC01MzAsNyArNTMwLDcgQEAgZW51bSBjbGFzcyBQcmltYXJ5Q29sb3Jz
OwogbmFtZXNwYWNlIERhdGFiYXNlIHsKIC8qIFVuaXF1ZSBpZGVudGlmaWVyIG9mIERhdGFiYXNl
IG9iamVjdC4gKi8KIHR5cGVkZWYgaW50IERhdGFiYXNlSWQ7Ci10eXBlZGVmIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IENvbG9yTGlzdDsKIH0gLy8gRGF0YWJhc2UKIC8v
IEVuZCBvZiB0eXBlZGVmcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZjYyMDU4MTFhYTA4NGEyYjBkNDNmM2EzNTM1NDU3
ODY0NDBmODU0YS4uZDUyM2I3MjI0YzM0NWFkM2VhMWY5ODFkMWExMDQyMzU5ZmRlYmU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
CkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBjbGFzcyBEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VGcm9udGVuZERpc3Bh
dGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKSA6IG1fZnJvbnRlbmRSb3V0ZXIo
ZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1w
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25z
dCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsK
LSAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90
ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZhbHVlcywgUmVmUHRy
PEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50
Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3Rl
cywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+IHZh
bHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5nKiBjb25zdCBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKKyAgICB2
b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFt
cCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHBheWxv
YWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50
Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJvdXRlcjsK
IH07CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBh
cmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRp
bWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNx
bEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRD
b2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9hZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNv
bnN0IFN0cmluZyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29u
c3QgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMiKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBEYXRhYmFzZUZyb250ZW5k
RGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9y
OjoKICAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+dG9KU09OU3Ry
aW5nKCkpOwogfQogCi12b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1w
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQordm9pZCBEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0
cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVz
c2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTM4Nyw3ICszODcsNyBAQCBuYW1lc3BhY2Ug
RGF0YWJhc2UgewogLyogVW5pcXVlIGlkZW50aWZpZXIgb2YgRGF0YWJhc2Ugb2JqZWN0LiAqLwog
dHlwZWRlZiBTdHJpbmcgRGF0YWJhc2VJZDsKIHR5cGVkZWYgU3RyaW5nIFByaW1hcnlDb2xvcnM7
Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBDb2xvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5
T2Y8U3RyaW5nPiBDb2xvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAvLyBFbmQgb2YgdHlwZWRlZnMu
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dAppbmRleCBiMjEwNmVmZTNkNjNhYTFiOWY5MDU4NTQ3ZTU3OGRmYWQ4OWJkZmU0Li40YjMxYTVk
YmYyN2IyYmUyNWY5ODdmYThhNDg3MDY2NzMyMTY0MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MDAsNyArNDAwLDcgQEAg
cHVibGljOgogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzdHJpbmciKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0QXJyYXkoUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgIHZvaWQgc2V0QXJy
YXkoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBK
U09OOjpPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImFycmF5IiksIFdURk1vdmUo
dmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggMjY2MWI4NmVhYTRmN2UxYTYyMzEyNDhkYmQzOTk1MWI2Mjg2NTRkMC4u
N2ZlNTg2YzBhNWJlNWJmNzI3OTBiN2QyZTg3YjE2MjA5Y2U0NzAzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtMzMxLDExICszMzEsMTEg
QEAgdHlwZWRlZiBpbnQgQnJlYWtwb2ludElkOwogCiBuYW1lc3BhY2UgUnVudGltZSB7CiB0eXBl
ZGVmIGludCBPYmplY3RJZDsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
PiBMdWNreU51bWJlcnM7Ci10eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4gQmFieU5hbWVzOwotdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpPYmplY3RJZD4gTmV3T2JqZWN0czsKLXR5cGVkZWYgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZD4gT2xkT2JqZWN0czsKLXR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gU3RvcFJlYXNvbnM7Cit0
eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBMdWNreU51bWJlcnM7Cit0eXBlZGVmIEpTT046OkFy
cmF5T2Y8U3RyaW5nPiBCYWJ5TmFtZXM7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8aW50PiBOZXdP
YmplY3RzOwordHlwZWRlZiBKU09OOjpBcnJheU9mPGludD4gT2xkT2JqZWN0czsKK3R5cGVkZWYg
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBTdG9w
UmVhc29uczsKIH0gLy8gUnVudGltZQogLy8gRW5kIG9mIHR5cGVkZWZzLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA2NDk1NzAyNzhh
YWUyY2I3MTNlZDY5NWM2NmY1YmE4OGFlN2RlZWY0Li40YTgyYjY0Mjc1NTc4NTNmYzVlYmY3YTYw
MThjMTZlMzI3ZGRhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVj
dC10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbi1yZXN1bHQKQEAgLTMzNyw3ICszMzcsNyBAQCBjbGFzcyBQYXJhbWV0ZXJCdW5kbGU7
CiAKIC8vIFR5cGVkZWZzLgogbmFtZXNwYWNlIERhdGFiYXNlIHsKLXR5cGVkZWYgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBF
cnJvckxpc3Q7Cit0eXBlZGVmIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiBFcnJvckxpc3Q7CiB9IC8vIERhdGFiYXNlCiAvLyBFbmQgb2YgdHlwZWRl
ZnMuCiAKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEJ1aWxk
ZXI8Tm9GaWVsZHNTZXQ+KEpTT046Ok9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+IHZhbHVlKQorICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAgICBKU09OOjpPYmplY3RCYXNlOjpzZXRBcnJh
eShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldEJ1dHRvbnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQorICAgIHZv
aWQgc2V0QnV0dG9ucyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEpTT046Ok9iamVj
dEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYnV0dG9ucyIpLCBXVEZNb3ZlKHZhbHVlKSk7
CiAgICAgfQpAQCAtNTYwLDE0ICs1NjAsMTQgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xh
c3MgUGFyYW1ldGVyQnVuZGxlOwogICAgIHB1YmxpYzoKIAotICAgICAgICBCdWlsZGVyPFNUQVRF
IHwgQ29sdW1uTmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1
bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYg
Q29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3NldCk7CiAgICAg
ICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB2
YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvbHVtbk5hbWVzU2V0PigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0
b25zKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8
IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1NldCksIHByb3BlcnR5X2J1
dHRvbnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJ
TGl0ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CkBAIC03OTMsMTQgKzc5MywxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPERpcmVjdGlvbmFsaXR5U2V0PigpOwogICAg
ICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1dHRvbnNTZXQ+JiBzZXRCdXR0b25z
KFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEJ1
dHRvbnNTZXQ+JiBzZXRCdXR0b25zKFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQnV0dG9uc1NldCksIHByb3BlcnR5X2J1dHRv
bnNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiYnV0dG9ucyIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPEJ1
dHRvbnNTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1u
TmFtZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1Nl
dD4mIHNldENvbHVtbk5hbWVzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQ29sdW1uTmFt
ZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5X3NldCk7CiAgICAgICAgICAgICBt
X3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB2YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDdiMzJlYWY1MGFh
ZTJkNDhhYmFmNmJhZjU3NTAwNTZkYjc3ODhmMTUuLjdhNDEyZTYwOTU1OWJkMTlkMjE5YjkxYzAz
MTQ1MTNmNzE2ZGI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC0yMTcsOSArMjE3LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmxlYXN0Q29tbW9uQW5jZXN0
b3IoKSBjb25zdAogICAgIHJldHVybiBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rv
cihtX3N0cnVjdHVyZUhpc3RvcnkpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBU
eXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAorUmVmPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+
PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAogewotICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHNo
YXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KQogICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShz
aGFwZS0+aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKSk7CkBAIC01MDQsOCArNTA0LDggQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1
Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1cnJlbnRT
aGFwZSh0aGlzKTsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUpIHsKLSAgICAgICAgYXV0byBm
aWVsZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKLSAg
ICAgICAgYXV0byBvcHRpb25hbEZpZWxkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9IEpTT046OkFycmF5T2Y8U3Ry
aW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxGaWVsZHMgPSBKU09OOjpBcnJh
eU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8gZmllbGQgOiBjdXJyZW50
U2hhcGUtPm1fZmllbGRzKQogICAgICAgICAgICAgZmllbGRzLT5hZGRJdGVtKGZpZWxkLmdldCgp
KTsKICAgICAgICAgZm9yIChhdXRvIGZpZWxkIDogY3VycmVudFNoYXBlLT5tX29wdGlvbmFsRmll
bGRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCmluZGV4IDE2MWJmZTg3
Yjk1M2JhYTRlMjU4NjFjMzY5Mzg1YmQ5NjIzMjMwYWIuLjk1YTM1ZDE4ZTZmZWM2ZDhlZGExM2Uy
YzViYTBmMzI3ZTA0ODBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSdW50aW1lVHlwZS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMzYsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIG5hbWVzcGFjZSBQ
cm90b2NvbCAgewotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFj
ZSBSdW50aW1lIHsKIGNsYXNzIFN0cnVjdHVyZURlc2NyaXB0aW9uOwpAQCAtODksNyArODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsKICAgICBTdHJpbmcgZHVtcFR5
cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7Ci0gICAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3Q7
CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3Ry
dWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdDsK
ICAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJmbG93bigp
IGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyZmxvd247IH0KICAgICBTdHJpbmcgbGVhc3RDb21tb25B
bmNlc3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5o
IGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCmluZGV4IDlhNzRkMWVhOTdlYzgxNjY3NzUy
ZjgyYWMwNjE5MWQyNjMyODljZDQuLmExNmZmMmNlMTFlYjFlYTgyYjNiN2Q0MDk2NzNhMzc4OTc2
ZjI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKQEAgLTQyMyw2ICs0MjMsNDggQEAgaW5saW5lIHZvaWQg
QXJyYXlCYXNlOjpwdXNoQXJyYXkoUmVmUHRyPEFycmF5QmFzZT4mJiB2YWx1ZSkKICAgICBtX21h
cC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xh
c3MgQXJyYXlPZiA6IHB1YmxpYyBBcnJheUJhc2UgeworcHJpdmF0ZToKKyAgICBBcnJheU9mKCkg
eyB9CisKKyAgICBBcnJheSYgY2FzdGVkQXJyYXkoKQorICAgIHsKKyAgICAgICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEFycmF5KSA9PSBzaXplb2YoQXJyYXlPZjxUPiksIGNhbm5vdF9jYXN0KTsK
KyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxBcnJheSo+KHN0YXRpY19jYXN0PEFycmF5QmFz
ZSo+KHRoaXMpKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB2b2lkIGFkZEl0ZW0oUmVmUHRyPFQ+
JiYgdmFsdWUpCisgICAgeworICAgICAgICBjYXN0ZWRBcnJheSgpLnB1c2hWYWx1ZShXVEZNb3Zl
KHZhbHVlKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkSXRlbShjb25zdCBTdHJpbmcmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgY2FzdGVkQXJyYXkoKS5wdXNoU3RyaW5nKHZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZEl0ZW0oaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgY2FzdGVk
QXJyYXkoKS5wdXNoSW50ZWdlcih2YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRJdGVtKGRv
dWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGNhc3RlZEFycmF5KCkucHVzaERvdWJsZSh2YWx1
ZSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxBcnJheU9mPFQ+PiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlPZjxUPigpKTsKKyAgICB9CisKKyAg
ICB1c2luZyBBcnJheUJhc2U6OmdldDsKKyAgICB1c2luZyBBcnJheUJhc2U6OmJlZ2luOworICAg
IHVzaW5nIEFycmF5QmFzZTo6ZW5kOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNPTkltcGwKIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCmluZGV4IDFlYjk5YWVmNTdjODFlMGMzZWYzMTNlMTg1NmIxYmFiMDQ0MGFjZjQu
LmZlZDhhY2FmMTM2OWRiODUyNjc3OTE1OTgwNDk0YzViZWNlYWVlN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzQsMTAgKzEzNCwxMCBA
QCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVjb3JkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwg
VmVjdG9yPFJlY29yZENhbnZhc0FjdGlvbgogICAgIH0KIAogICAgIGlmICghbV9mcmFtZXMpCi0g
ICAgICAgIG1fZnJhbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT46OmNyZWF0ZSgpOworICAgICAgICBtX2ZyYW1lcyA9
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpGcmFtZT46OmNy
ZWF0ZSgpOwogCiAgICAgaWYgKCFtX2N1cnJlbnRBY3Rpb25zKSB7Ci0gICAgICAgIG1fY3VycmVu
dEFjdGlvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0
ZSgpOworICAgICAgICBtX2N1cnJlbnRBY3Rpb25zID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1
ZT46OmNyZWF0ZSgpOwogCiAgICAgICAgIGF1dG8gZnJhbWUgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpSZWNvcmRpbmc6OkZyYW1lOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldEFjdGlvbnMobV9j
dXJyZW50QWN0aW9ucykKQEAgLTE2NSwxNCArMTY1LDE0IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4mJiBJbnNwZWN0b3JDYW52YXM6OnJlbGVh
c2VJCiAgICAgcmV0dXJuIFdURk1vdmUobV9pbml0aWFsU3RhdGUpOwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpG
cmFtZT4+JiYgSW5zcGVjdG9yQ2FudmFzOjpyZWxlYXNlRnJhbWVzKCkKK1JlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiYmIEluc3BlY3Rv
ckNhbnZhczo6cmVsZWFzZUZyYW1lcygpCiB7CiAgICAgYXBwZW5kQWN0aW9uU25hcHNob3RJZk5l
ZWRlZCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobV9mcmFtZXMpOwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiYmIEluc3BlY3RvckNhbnZhczo6
cmVsZWFzZURhdGEoKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiYmIEluc3Bl
Y3RvckNhbnZhczo6cmVsZWFzZURhdGEoKQogewogICAgIG1faW5kZXhlZER1cGxpY2F0ZURhdGEu
Y2xlYXIoKTsKICAgICByZXR1cm4gV1RGTW92ZShtX3NlcmlhbGl6ZWREdXBsaWNhdGVEYXRhKTsK
QEAgLTMyMiw3ICszMjIsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVw
bGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICB9CiAKICAgICBpZiAoIW1fc2VyaWFsaXplZER1
cGxpY2F0ZURhdGEpCi0gICAgICAgIG1fc2VyaWFsaXplZER1cGxpY2F0ZURhdGEgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBtX3Nl
cmlhbGl6ZWREdXBsaWNhdGVEYXRhID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0
ZSgpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiBpdGVtOwogICAgIFdURjo6c3dpdGNoT24o
ZGF0YSwKQEAgLTM2OSw3ICszNjksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRh
dGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgWyZdIChjb25zdCBJbWFnZURh
dGEqIGltYWdlRGF0YSkgeyBpdGVtID0gYnVpbGRBcnJheUZvckltYWdlRGF0YSgqaW1hZ2VEYXRh
KTsgfSwKICAgICAgICAgWyZdIChjb25zdCBJbWFnZUJpdG1hcCogaW1hZ2VCaXRtYXApIHsgaXRl
bSA9IGJ1aWxkQXJyYXlGb3JJbWFnZUJpdG1hcCgqaW1hZ2VCaXRtYXApOyB9LAogICAgICAgICBb
Jl0gKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgc2NyaXB0Q2FsbEZyYW1lKSB7Ci0gICAgICAgICAg
ICBhdXRvIGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzY3JpcHRDYWxs
RnJhbWUuZnVuY3Rpb25OYW1lKCkpKTsKICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKGluZGV4
Rm9yRGF0YShzY3JpcHRDYWxsRnJhbWUuc291cmNlVVJMKCkpKTsKICAgICAgICAgICAgIGFycmF5
LT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oc2NyaXB0Q2FsbEZyYW1lLmxpbmVOdW1iZXIoKSkp
OwpAQCAtMzg5LDkgKzM4OSw5IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGlu
ZGV4KTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxkb3Vi
bGU+PiBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWZmaW5lVHJhbnNmb3JtKQorc3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9mPGRvdWJsZT4+IGJ1
aWxkQXJyYXlGb3JBZmZpbmVUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVU
cmFuc2Zvcm0pCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGRvdWJs
ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8ZG91YmxlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9m
PGRvdWJsZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9ybS5h
KCkpOwogICAgIGFycmF5LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9ybS5iKCkpOwogICAgIGFycmF5
LT5hZGRJdGVtKGFmZmluZVRyYW5zZm9ybS5jKCkpOwpAQCAtNDAyLDkgKzQwMiw5IEBAIHN0YXRp
YyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPj4gYnVpbGRBcnJheUZv
ckFmZmluZVRyYW5zZm9ybShjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlG
b3JWZWN0b3IoY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCitzdGF0aWMgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxUPiYg
dmVjdG9yKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpW
YWx1ZT4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGFycmF5ID0g
SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgaXRl
bSA6IHZlY3RvcikKICAgICAgICAgYXJyYXktPmFkZEl0ZW0oaXRlbSk7CiAgICAgcmV0dXJuIGFy
cmF5OwpAQCAtNDE5LDcgKzQxOSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNv
cmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpCiAgICAgYXR0
cmlidXRlcy0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoIndpZHRoIiksIGNhbnZhcygpLndpZHRo
KCkpOwogICAgIGF0dHJpYnV0ZXMtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJoZWlnaHQiKSwg
Y2FudmFzKCkuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHBhcmFtZXRl
cnMgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAKICAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBjYW52YXNSZW5kZXJpbmdDb250ZXh0ID0gY2FudmFzKCkucmVuZGVy
aW5nQ29udGV4dCgpOwogICAgIGlmIChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQpKSB7CkBAIC00NDAsNyArNDQwLDcgQEAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkSW5pdGkKIAogICAgICAgICAvLyBUaGUgcGFyYW1ldGVyIHRvIGBzZXRMaW5lRGFzaGAgaXMg
aXRzZWxmIGFuIGFycmF5LCBzbyB3ZSBuZWVkIHRvIHdyYXAgdGhlIHBhcmFtZXRlcnMKICAgICAg
ICAgLy8gbGlzdCBpbiBhbiBhcnJheSB0byBhbGxvdyBzcHJlYWRpbmcuCi0gICAgICAgIGF1dG8g
c2V0TGluZURhc2ggPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNy
ZWF0ZSgpOworICAgICAgICBhdXRvIHNldExpbmVEYXNoID0gSlNPTjo6QXJyYXlPZjxKU09OOjpW
YWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBzZXRMaW5lRGFzaC0+YWRkSXRlbShidWlsZEFycmF5
Rm9yVmVjdG9yKHN0YXRlLmxpbmVEYXNoKSk7CiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgic2V0TGluZURhc2giKSwgV1RGTW92ZShzZXRMaW5lRGFzaCkpOwogCkBA
IC00NzEsNyArNDcxLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6
SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGkKICAgICAgICAgYXR0cmli
dXRlcy0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImltYWdlU21vb3RoaW5nRW5hYmxlZCIpLCBj
b250ZXh0MmQtPmltYWdlU21vb3RoaW5nRW5hYmxlZCgpKTsKICAgICAgICAgYXR0cmlidXRlcy0+
c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImltYWdlU21vb3RoaW5nUXVhbGl0eSIpLCBpbmRleEZv
ckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoY29udGV4dDJkLT5pbWFnZVNtb290aGlu
Z1F1YWxpdHkoKSkpKTsKIAotICAgICAgICBhdXRvIHNldFBhdGggPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIHNldFBhdGgg
PSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgICAgIHNldFBhdGgt
PmFkZEl0ZW0oaW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29udGV4dDJkLT5nZXRQ
YXRoKCktPnBhdGgoKSkpKTsKICAgICAgICAgYXR0cmlidXRlcy0+c2V0QXJyYXkoQVNDSUlMaXRl
cmFsKCJzZXRQYXRoIiksIFdURk1vdmUoc2V0UGF0aCkpOwogICAgIH0KQEAgLTUwMiwxMyArNTAy
LDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0
ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpCiAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTsK
IH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5z
cGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNv
cmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCitSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5n
JiBuYW1lLCBWZWN0b3I8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQog
ewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGFj
dGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBhY3Rpb24gPSBKU09OOjpB
cnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4
Rm9yRGF0YShuYW1lKSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SlNPTjo6VmFsdWU+PiBwYXJhbWV0ZXJzRGF0YSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PGludD4+IHN3aXp6bGVUeXBlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gcGFy
YW1ldGVyc0RhdGEgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4gc3dpenpsZVR5cGVzID0gSlNPTjo6QXJyYXlPZjxp
bnQ+OjpjcmVhdGUoKTsKIAogICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZwYXJhbWV0ZXJzRGF0
YSwgJnN3aXp6bGVUeXBlc10gKGF1dG8gdmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlcyBzd2l6
emxlVHlwZSkgewogICAgICAgICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRlbSh2YWx1ZSk7CkBAIC01
MjQsNyArNTI0LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb24KICAgICAgICAgICAgIFsmXSAo
Q2FudmFzVGV4dEFsaWduIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJp
bmcpOyB9LAogICAgICAgICAgICAgWyZdIChDYW52YXNUZXh0QmFzZWxpbmUgdmFsdWUpIHsgYWRk
UGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCiAgICAgICAgICAgICBbJl0gKGNv
bnN0IERPTU1hdHJpeDJESW5pdCYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxkb3VibGU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxkb3VibGU+PiBhcnJheSA9IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuYS52YWx1ZV9vcigxKSk7
CiAgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuYi52YWx1ZV9vcigwKSk7CiAg
ICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuYy52YWx1ZV9vcigwKSk7CkBAIC01
ODEsNyArNTgxLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb24KICAgICBhY3Rpb24tPmFkZEl0
ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3Zl
KHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGRvdWJsZT4+IHRyYWNlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8ZG91YmxlPjo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8ZG91YmxlPj4gdHJhY2UgPSBKU09OOjpB
cnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gc3RhY2tUcmFjZSA9IEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0
YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrVHJhY2UtPnNpemUoKTsgKytp
KQogICAgICAgICB0cmFjZS0+YWRkSXRlbShpbmRleEZvckRhdGEoc3RhY2tUcmFjZS0+YXQoaSkp
KTsKQEAgLTU5MCwxMyArNTkwLDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uCiAgICAgcmV0
dXJuIGFjdGlvbjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046
OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoY29u
c3QgQ2FudmFzR3JhZGllbnQmIGNhbnZhc0dyYWRpZW50KQorUmVmUHRyPEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVu
dChjb25zdCBDYW52YXNHcmFkaWVudCYgY2FudmFzR3JhZGllbnQpCiB7CiAgICAgY29uc3QgYXV0
byYgZ3JhZGllbnQgPSBjYW52YXNHcmFkaWVudC5ncmFkaWVudCgpOwogCiAgICAgU3RyaW5nIHR5
cGUgPSBncmFkaWVudC50eXBlKCkgPT0gR3JhZGllbnQ6OlR5cGU6OlJhZGlhbCA/IEFTQ0lJTGl0
ZXJhbCgicmFkaWFsLWdyYWRpZW50IikgOiBBU0NJSUxpdGVyYWwoImxpbmVhci1ncmFkaWVudCIp
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGZsb2F0Pj4gcGFyYW1l
dGVycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGZsb2F0Pjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPEpTT046OkFycmF5T2Y8ZmxvYXQ+PiBwYXJhbWV0ZXJzID0gSlNPTjo6QXJyYXlPZjxm
bG9hdD46OmNyZWF0ZSgpOwogICAgIFdURjo6c3dpdGNoT24oZ3JhZGllbnQuZGF0YSgpLAogICAg
ICAgICBbJnBhcmFtZXRlcnNdIChjb25zdCBHcmFkaWVudDo6TGluZWFyRGF0YSYgZGF0YSkgewog
ICAgICAgICAgICAgcGFyYW1ldGVycy0+YWRkSXRlbShkYXRhLnBvaW50MC54KCkpOwpAQCAtNjE0
LDIyICs2MTQsMjIgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2EKICAgICAgICAgfQogICAgICk7
CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBz
dG9wcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBzdG9wcyA9IEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGNvbG9yU3RvcCA6
IGdyYWRpZW50LnN0b3BzKCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEpTT046OlZhbHVlPj4gc3RvcCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpT
T046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPj4gc3RvcCA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKICAg
ICAgICAgc3RvcC0+YWRkSXRlbShjb2xvclN0b3Aub2Zmc2V0KTsKICAgICAgICAgc3RvcC0+YWRk
SXRlbShpbmRleEZvckRhdGEoY29sb3JTdG9wLmNvbG9yLmNzc1RleHQoKSkpOwogICAgICAgICBz
dG9wcy0+YWRkSXRlbShXVEZNb3ZlKHN0b3ApKTsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+Ojpj
cmVhdGUoKTsKICAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEodHlwZSkpOwogICAgIGFy
cmF5LT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGFycmF5LT5hZGRJdGVtKFdU
Rk1vdmUoc3RvcHMpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJh
eUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFzUGF0dGVybiYgY2FudmFzUGF0dGVybikKK1Jl
ZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFy
cmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQog
ewogICAgIEltYWdlJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1h
Z2UoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKTsKQEAgLTY0NywyOSArNjQ3LDI5IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhCiAg
ICAgZWxzZQogICAgICAgICByZXBlYXQgPSBBU0NJSUxpdGVyYWwoIm5vLXJlcGVhdCIpOwogCi0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJyYXkg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9m
PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRh
KGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpKSk7CiAgICAgYXJyYXktPmFkZEl0
ZW0oaW5kZXhGb3JEYXRhKHJlcGVhdCkpOwogICAgIHJldHVybiBhcnJheTsKIH0KIAotUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFz
OjpidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQorUmVm
UHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJy
YXlGb3JJbWFnZURhdGEoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEpCiB7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGRhdGEgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+
PiBkYXRhID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGltYWdlRGF0YS5kYXRhKCktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIGRhdGEt
PmFkZEl0ZW0oaW1hZ2VEYXRhLmRhdGEoKS0+aXRlbShpKSk7CiAKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+Ojpj
cmVhdGUoKTsKICAgICBhcnJheS0+YWRkSXRlbShXVEZNb3ZlKGRhdGEpKTsKICAgICBhcnJheS0+
YWRkSXRlbShpbWFnZURhdGEud2lkdGgoKSk7CiAgICAgYXJyYXktPmFkZEl0ZW0oaW1hZ2VEYXRh
LmhlaWdodCgpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZv
ckltYWdlQml0bWFwKGNvbnN0IEltYWdlQml0bWFwJiBpbWFnZUJpdG1hcCkKK1JlZlB0cjxKU09O
OjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9ySW1h
Z2VCaXRtYXAoY29uc3QgSW1hZ2VCaXRtYXAmIGltYWdlQml0bWFwKQogewogICAgIC8vIEZJWE1F
OiBOZWVkcyB0byBpbmNsdWRlIHRoZSBkYXRhIHNvbWVob3cuCi0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3Jl
YXRlKCk7CiAgICAgYXJyYXktPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50PihpbWFnZUJpdG1hcC53
aWR0aCgpKSk7CiAgICAgYXJyYXktPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50PihpbWFnZUJpdG1h
cC5oZWlnaHQoKSkpOwogICAgIHJldHVybiBhcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuaAppbmRleCAwYjk2MTFiMmVkNjkzOGYxOWRmNDk3ZmUzY2JiZDNl
ZjAzMThmYmZkLi4yZjZjNjQ3MjQ4MjczMTVjNWU3NGZiYTI0ZGQxMTE3NzdmYWMyNGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCkBAIC02Miw4ICs2Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBTdHJpbmcmLCBWZWN0b3I8
UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+JiYgcmVsZWFzZUluaXRpYWxT
dGF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZWNvcmRpbmc6OkZyYW1lPj4mJiByZWxlYXNlRnJhbWVzKCk7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4mJiByZWxlYXNlRGF0
YSgpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29y
ZGluZzo6RnJhbWU+PiYmIHJlbGVhc2VGcmFtZXMoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+JiYgcmVsZWFzZURhdGEoKTsKIAogICAgIHZvaWQgZmluYWxpemVGcmFt
ZSgpOwogICAgIHZvaWQgbWFya0N1cnJlbnRGcmFtZUluY29tcGxldGUoKTsKQEAgLTEwMCwyMSAr
MTAwLDIxIEBAIHByaXZhdGU6CiAKICAgICBpbnQgaW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFW
YXJpYW50KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0
aWFsU3RhdGU+IGJ1aWxkSW5pdGlhbFN0YXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gYnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52YXNH
cmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNv
bnN0IENhbnZhc1BhdHRlcm4mKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxKU09OOjpWYWx1ZT4+IGJ1
aWxkQXJyYXlGb3JJbWFnZUJpdG1hcChjb25zdCBJbWFnZUJpdG1hcCYpOworICAgIFJlZlB0cjxK
U09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOworICAgIFJlZlB0cjxKU09O
OjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0
IENhbnZhc0dyYWRpZW50Jik7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+
PiBidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJik7CisgICAg
UmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VEYXRh
KGNvbnN0IEltYWdlRGF0YSYpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVl
Pj4gYnVpbGRBcnJheUZvckltYWdlQml0bWFwKGNvbnN0IEltYWdlQml0bWFwJik7CiAKICAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIEhUTUxDYW52YXNFbGVtZW50JiBtX2NhbnZhczsKICAg
ICBTdHJpbmcgbV9jc3NDYW52YXNOYW1lOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBtX2luaXRpYWxTdGF0ZTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5n
OjpGcmFtZT4+IG1fZnJhbWVzOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxKU09OOjpWYWx1ZT4+IG1fY3VycmVudEFjdGlvbnM7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gbV9hY3Rpb25OZWVkaW5nU25hcHNob3Q7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEpTT046OlZhbHVlPj4gbV9zZXJp
YWxpemVkRHVwbGljYXRlRGF0YTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZWNvcmRpbmc6OkZyYW1lPj4gbV9mcmFtZXM7CisgICAgUmVmUHRyPEpTT046
OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBtX2N1cnJlbnRBY3Rpb25zOworICAgIFJlZlB0cjxKU09O
OjpBcnJheU9mPEpTT046OlZhbHVlPj4gbV9hY3Rpb25OZWVkaW5nU25hcHNob3Q7CisgICAgUmVm
UHRyPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBtX3NlcmlhbGl6ZWREdXBsaWNhdGVEYXRh
OwogICAgIFZlY3RvcjxEdXBsaWNhdGVEYXRhVmFyaWFudD4gbV9pbmRleGVkRHVwbGljYXRlRGF0
YTsKICAgICBkb3VibGUgbV9jdXJyZW50RnJhbWVTdGFydFRpbWUgeyBOQU4gfTsKICAgICBzaXpl
X3QgbV9idWZmZXJMaW1pdCB7IDEwMCAqIDEwMjQgKiAxMDI0IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYWIzYmRmYzE5ZWNk
ZjU3YzJlYTY1MGQyYjVlODE3MmI1ZmQ1OTZiZC4uYTNjMmYwOGNkNGE2NDJlN2Q0M2QyMTMyYWFk
YjQ0ZDZkMGFiNDFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5
OjpDCiAgICAgbV9vdmVybGF5LT5nZXRIaWdobGlnaHQoaGlnaGxpZ2h0LCBjb29yZGluYXRlU3lz
dGVtKTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBJbnNwZWN0b3JDb250cm9s
bGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdAorUmVmPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0
YT4+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2Rlcygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+YnVpbGRPYmplY3RGb3JIaWdobGlnaHRl
ZE5vZGVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCBiYTlhMzJiZTVlNmIwMGE3ODlmMzE3ZmYwYTQyYWFjYTFmMTUxNzczLi40
YmQ3ZTdiNmRiM2ZmMjNiMDBmY2Y4MjJlMzEzMzc5OGQwYWYxZTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxp
Z2h0ZWROb2RlcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBi
dWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkQ29tcG9zaXRlKEZyYW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBhMjQzMzZmNTM2MDllNTIwNjEwMzdmMzY2
MDUxMmIxZGUxNjgzMzY3Li5mZTBkYTBhZTFkYjMxZTNmZjFlZDQ3ZTMzOGNjZjk3NTYxZTdjNjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBA
IC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6OlF1YWQ+IGJ1aWxkQXJyYXlGb3JRdWFkKGNvbnN0IEZsb2EKIAogc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4g
YnVpbGRPYmplY3RGb3JIaWdobGlnaHQoY29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0g
ICAgYXV0byBhcnJheU9mUXVhZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFy
cmF5T2ZRdWFkcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpRdWFkPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBxdWFkIDogaGlnaGxpZ2h0LnF1
YWRzKQogICAgICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclF1YWQocXVh
ZCkpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQ
YWludFJlY3RzVGltZXJGaXJlZCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50
UmVjdHMoKQogewotICAgIGF1dG8gYXJyYXlPZlJlY3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWN0Pjo6Y3JlYXRlKCk7
CisgICAgYXV0byBhcnJheU9mUmVjdHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6UmVjdD46OmNyZWF0ZSgpOwogICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1fcGFpbnRSZWN0cykKICAgICAgICAgYXJyYXlPZlJlY3RzLT5hZGRJdGVtKGJ1aWxk
T2JqZWN0Rm9yUmVjdChwYWlyLnNlY29uZCkpOwogCkBAIC00MjYsOSArNDI2LDkgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3R3V0dGVyKCkKICAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJ
SUxpdGVyYWwoImRyYXdHdXR0ZXIiKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVu
dEhpZ2hsaWdodERhdGE+PiBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBjb25maWcpCitzdGF0aWMgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFn
bWVudEhpZ2hsaWdodERhdGE+PiBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBjb25maWcpCiB7Ci0gICAg
YXV0byBhcnJheU9mRnJhZ21lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVh
dGUoKTsKKyAgICBhdXRvIGFycmF5T2ZGcmFnbWVudHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPjo6Y3JlYXRl
KCk7CiAKICAgICBIaWdobGlnaHQgaGlnaGxpZ2h0OwogICAgIGJ1aWxkUmVuZGVyZXJIaWdobGln
aHQocmVuZGVyZXIsIGNvbmZpZywgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGlu
YXRlU3lzdGVtOjpWaWV3KTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0Rm9y
RWxlbQogICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAm
JiBpczxTdHlsZWRFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICBhdXRvIGNsYXNzZXMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBjbGFzc2VzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOwogICAgICAgICBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkuY2xhc3NOYW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsYXNz
TmFtZXNTdHJpbmcuc2l6ZSgpOyArK2kpIHsKQEAgLTYyMiw3ICs2MjIsNyBAQCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gSW5zcGVj
dG9yT3ZlcmxheTo6YgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPj4gYXJyYXlPZkZyYWdt
ZW50SGlnaGxpZ2h0cyA9IGJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdtZW50cyhyZW5kZXJlciwg
bV9ub2RlSGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFycmF5
T2ZGcmFnbWVudEhpZ2hsaWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMocmVu
ZGVyZXIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZyk7CiAgICAgaWYgKCFhcnJheU9mRnJhZ21lbnRI
aWdobGlnaHRzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjQyLDkgKzY0Miw5IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHRE
YXRhPiBJbnNwZWN0b3JPdmVybGF5OjpiCiAgICAgcmV0dXJuIFdURk1vdmUobm9kZUhpZ2hsaWdo
dE9iamVjdCk7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVjdG9yT3Zl
cmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3QKK1JlZjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERh
dGE+PiBJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZXMoKSBj
b25zdAogewotICAgIGF1dG8gaGlnaGxpZ2h0cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+Ojpj
cmVhdGUoKTsKKyAgICBhdXRvIGhpZ2hsaWdodHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+OjpjcmVhdGUoKTsKIAog
ICAgIGlmIChtX2hpZ2hsaWdodE5vZGUpIHsKICAgICAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBub2RlSGlnaGxpZ2h0
RGF0YSA9IGJ1aWxkSGlnaGxpZ2h0T2JqZWN0Rm9yTm9kZShtX2hpZ2hsaWdodE5vZGUuZ2V0KCks
IEhpZ2hsaWdodFR5cGU6Ok5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmgKaW5kZXggNDlkNWVmYzRjYTZhNmE1NzM2ZDhjMzM2NmY5YWY0NzBkNWU4Y2Fl
Ny4uZmYxNzk3MTIzOWEyZjIyNjI1YjRmODgyZjY0ODU3YTVhZmZkYTI1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0xMjMsNyArMTIzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERh
dGE+IGJ1aWxkSGlnaGxpZ2h0T2JqZWN0Rm9yTm9kZShOb2RlKiwgSGlnaGxpZ2h0VHlwZSkgY29u
c3Q7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+PiBidWlsZE9iamVjdEZvckhpZ2hs
aWdodGVkTm9kZXMoKSBjb25zdDsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gYnVpbGRPYmplY3RGb3JI
aWdobGlnaHRlZE5vZGVzKCkgY29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdlKCk7CiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CmluZGV4IGY3Y2Q5NDlhMmNjZjY2NTEwN2JkMDNiNmI1MjQ0ODY0NWE3ZjE3MjcuLmMxMjQyNjVi
OGJhYWYxZGNiMjVmMThiZjAwNjQ2ZGE1N2MwOWQ3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1bGFy
RXhwcmVzc2lvbi5oPgogCi11c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTsKK3VzaW5n
IEpTT046OkFycmF5T2Y7CiB1c2luZyBXZWJDb3JlOjpSdWxlU291cmNlRGF0YUxpc3Q7CiB1c2lu
ZyBXZWJDb3JlOjpDU1NSdWxlU291cmNlRGF0YTsKIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTUnVsZSogcnVsZSkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1
bGUqIHJ1bGUsIEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+JiBtZWRp
YUFycmF5KQorc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1bGUqIHJ1bGUsIEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT4mIG1lZGlhQXJy
YXkpCiB7CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CiAgICAgQ1NTUnVsZSogcGFyZW50UnVs
ZSA9IHJ1bGU7CkBAIC01NDgsOSArNTQ4LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkKICAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdAorUmVm
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBj
b25zdAogewotICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUo
KTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8SW5z
cGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsKICAgICBwb3B1bGF0ZUFsbFByb3BlcnRp
ZXMoJnByb3BlcnRpZXMpOwogCkBAIC02MTksOCArNjE5LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVz
KCkgY28KICAgICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsKICAg
ICBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoJnByb3BlcnRpZXMpOwogCi0gICAgYXV0byBwcm9wZXJ0
aWVzT2JqZWN0ID0gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46
OmNyZWF0ZSgpOwotICAgIGF1dG8gc2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHByb3Bl
cnRpZXNPYmplY3QgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UHJvcGVydHk+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHNob3J0aGFuZEVudHJpZXMgPSBBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJv
cGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CiAgICAgSGFzaFNl
dDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsK
QEAgLTEwODYsNyArMTA4Niw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTZWxlY3Rvcj4gYnVpbGRPYmplY3RGb3JTZWxlY3RvckhlbHBlcihjCiAgICAgICAgICAg
ICBzcGVjaWZpY2l0eSA9IHNlbGVjdG9yLnN0YXRpY1NwZWNpZmljaXR5KG9rYXkpOwogCiAgICAg
ICAgIGlmIChva2F5KSB7Ci0gICAgICAgICAgICBhdXRvIHR1cGxlID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHR1cGxlID0gSlNP
Tjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHR1cGxlLT5hZGRJdGVtKHN0
YXRpY19jYXN0PGludD4oKHNwZWNpZmljaXR5ICYgQ1NTU2VsZWN0b3I6OmlkTWFzaykgPj4gMTYp
KTsKICAgICAgICAgICAgIHR1cGxlLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oKHNwZWNpZmlj
aXR5ICYgQ1NTU2VsZWN0b3I6OmNsYXNzTWFzaykgPj4gOCkpOwogICAgICAgICAgICAgdHVwbGUt
PmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50PihzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjplbGVt
ZW50TWFzaykpOwpAQCAtMTA5NywxMSArMTA5NywxMSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIo
YwogICAgIHJldHVybiBpbnNwZWN0b3JTZWxlY3RvcjsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9y
Pj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0
YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNv
bnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4
dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBKU0M6OllhcnI6OlRleHRDYXNlU2Vuc2l0aXZl
LCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCi0gICAgYXV0byByZXN1bHQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVj
dG9yPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICBjb25zdCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsKICAgICBmb3IgKGF1dG8m
IHJhbmdlIDogc291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXMpIHsKICAgICAgICAgLy8gSWYgd2Ug
ZG9uJ3QgaGF2ZSBhIHNlbGVjdG9yLCB0aGF0IG1lYW5zIHRoZSBTb3VyY2VEYXRhIGZvciB0aGlz
IENTU1N0eWxlU2hlZXQKQEAgLTExMzEsNyArMTEzMSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChl
bnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VE
YXRhRm9yKCZydWxlLT5zdHlsZSgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yczsK
KyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Nl
bGVjdG9yPj4gc2VsZWN0b3JzOwogCiAgICAgLy8gVGhpcyBpbnRlbnRpb25hbGx5IGRvZXMgbm90
IHJlbHkgb24gdGhlIHNvdXJjZSBkYXRhIHRvIGF2b2lkIGNhdGNoaW5nIHRoZSB0cmFpbGluZyBj
b21tZW50cyAoYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiBzdGFydGluZyAneycpLgogICAgIFN0cmlu
ZyBzZWxlY3RvclRleHQgPSBydWxlLT5zZWxlY3RvclRleHQoKTsKQEAgLTExMzksNyArMTEzOSw3
IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTCiAgICAgaWYgKHNvdXJjZURhdGEpCiAgICAgICAg
IHNlbGVjdG9ycyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwgbV9wYXJz
ZWRTdHlsZVNoZWV0LT50ZXh0KCksIHJ1bGUtPnN0eWxlUnVsZSgpLnNlbGVjdG9yTGlzdCgpLCBl
bGVtZW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3JzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0
ZSgpOworICAgICAgICBzZWxlY3RvcnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHlsZVJ1bGUoKS5zZWxlY3Rvckxpc3QoKTsK
ICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3Qu
Zmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVj
dG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlbGVj
dG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclJ1bAogICAgICAgICAgICAgcmVzdWx0LT5zZXRSdWxlSWQoaWQuYXNQcm90b2Nv
bFZhbHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZUlkPigpKTsKICAgICB9CiAK
LSAgICBhdXRvIG1lZGlhQXJyYXkgPSBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U01lZGlhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBtZWRpYUFycmF5ID0gQXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CiAKICAgICBmaWxsTWVkaWFM
aXN0Q2hhaW4ocnVsZSwgbWVkaWFBcnJheS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJyYXktPmxl
bmd0aCgpKQpAQCAtMTE5NSw4ICsxMTk1LDggQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3QKICAg
ICBJbnNwZWN0b3JDU1NJZCBpZCA9IHJ1bGVPclN0eWxlSWQoc3R5bGUpOwogICAgIGlmIChpZC5p
c0VtcHR5KCkpIHsKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGU6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0Q3NzUHJvcGVydGllcyhBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCkpCi0gICAgICAgICAg
ICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNo
b3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkpCisgICAgICAgICAgICAuc2V0Q3NzUHJvcGVydGllcyhB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkK
KyAgICAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKQogICAgICAgICAgICAgLnJlbGVh
c2UoKTsKICAgICB9CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9
IGluc3BlY3RvclN0eWxlRm9ySWQoaWQpOwpAQCAtMTQ0Miw5ICsxNDQyLDkgQEAgYm9vbCBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewot
ICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwog
ICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDI2ZTVlZWRiOTIw
OTA5NzQ3Njk3MzEwYzRmZTA2Mjg3NmQ4YzBhM2MuLjM4YThiOWQ0MzQ1YTkyYzRkNDk3NjM4Mzk0
NTI2OGM1MmU0YzA2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIENTU1N0eWxl
RGVjbGFyYXRpb24mIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVj
dEZvclN0eWxlKCkgY29uc3Q7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRB
cnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJy
YXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CiAKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHRl
eHQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUZXh0KGNvbnN0IFN0cmluZyYp
OwpAQCAtMjEzLDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0eWxlU2hl
ZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVl
dFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVs
ZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3Qq
KTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRP
YmplY3RGb3JTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIEVsZW1lbnQqKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0Rm9yU2Vs
ZWN0b3JMaXN0KENTU1N0eWxlUnVsZSosIEVsZW1lbnQqLCBpbnQmIGVuZGluZ0xpbmUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggNDY5NDc4OTA0ZTljNmI0MDM0
NjU1NWE4MWExODJjNWMzN2E1MDc4MC4uNjIzNmJhZjA0OTY0YzYyZDY1MzAyZTVkZmQyMmYxN2Fh
Mzk2Zjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtODUsOSAr
ODUsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRl
Q2hhbmdlZCgpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdvcmtTdGF0ZVVwZGF0ZWQo
TmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQor
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVz
dHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpCiB7Ci0gICAg
cmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKKyAgICByZXN1
bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6
OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKQEAgLTE0NSw5ICsxNDUsOSBAQCBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVj
dG9yQXBwbGljYXRpbwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpi
dWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBWZWN0b3I8QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMp
CitSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvPiYgYXBwbGljYXRpb25DYWNoZVJlc291
cmNlcykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT46OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VzKQogICAgICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoaW5mbykpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaAppbmRleCAwODBmZTUxNWJjMmYyNzVmODViZGVjMjc3ZWY2ODcyNzYxNmIx
ZGNlLi43OTUxZjgzNjI1YzE2YzAyNTUzZmQ1N2UzODgxNTVhYzRkNzI4NWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTU2LDEzICs1NiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1l
V2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRNYW5pZmVzdEZv
ckZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlm
ZXN0VVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6
OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBW
ZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4mLCBjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNv
bnN0IFZlY3RvcjxBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvPiYpOworICAgIFJl
ZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VzKGNvbnN0IFZlY3RvcjxBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvPiYp
OwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAogICAgIERvY3Vt
ZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDYwMjVhZGNmMzAwMTk4YmI1NGI1
ZWEwZjJhMmIxMTUwN2RmNmExM2QuLjk4ODI4NjQ4MmU5MzE3MDk0MzBhNTU0MmVlYjc3ZTZiZDc3
YjJiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NB
Z2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rv
cjo6UHMKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9v
bCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0
Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKQordm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBi
b29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVk
b0lkTWF0Y2hlcywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCiB7CiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAo
IWVsZW1lbnQpCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAg
ICBpZiAoIW9yaWdpbmFsRWxlbWVudC0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgLy8g
UHNldWRvIGVsZW1lbnRzLgogICAgICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQ
c2V1ZG8pIHsKLSAgICAgICAgICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46
OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURP
SUQ7IHBzZXVkb0lkIDwgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBz
dGF0aWNfY2FzdDxQc2V1ZG9JZD4ocHNldWRvSWQgKyAxKSkgewogICAgICAgICAgICAgICAgIGF1
dG8gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVu
dChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAg
ICAgICAgICAgIGlmICghbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkgewpAQCAtNDcxLDcgKzQ3MSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAKICAgICAgICAgLy8gSW5oZXJpdGVkIHN0eWxl
cy4KICAgICAgICAgaWYgKCFpbmNsdWRlSW5oZXJpdGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7
Ci0gICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGF1dG8gZW50cmllcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBF
bGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAg
ICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBTdHlsZVJlc29s
dmVyJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigp
OwpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAgICAgICAgIGF0
dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKIHsKICAgICBhdXRvKiBlbGVt
ZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVu
dCkKQEAgLTUxOSw5ICs1MTksOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgIHN0eWxl
ID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nJiwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZv
cykKIHsKLSAgICBzdHlsZUluZm9zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CisgICAg
c3R5bGVJbmZvcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVT
aGVldCo+IGluc3BlY3RvclN0eWxlU2hlZXRzOwogICAgIGNvbGxlY3RBbGxTdHlsZVNoZWV0cyhp
bnNwZWN0b3JTdHlsZVNoZWV0cyk7CkBAIC03MTEsOSArNzExLDkgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGUKICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZv
clJ1bGUocnVsZSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
Y3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1By
b3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiBjc3NQcm9wZXJ0aWVzKQogewotICAgIGF1
dG8gcHJvcGVydGllcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3JlYXRlKCk7CisgICAgYXV0byBwcm9wZXJ0
aWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5
SW5mbz46OmNyZWF0ZSgpOwogICAgIGZvciAoaW50IGkgPSBmaXJzdENTU1Byb3BlcnR5OyBpIDw9
IGxhc3RDU1NQcm9wZXJ0eTsgKytpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQgPSBjb252
ZXJ0VG9DU1NQcm9wZXJ0eUlEKGkpOwogICAgICAgICBpZiAoaXNJbnRlcm5hbENTU1Byb3BlcnR5
KGlkKSkKQEAgLTcyOCw3ICs3MjgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBw
b3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3RvcgogICAgICAg
ICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGxvbmdoYW5kcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGxvbmdo
YW5kcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaiA9IDA7IGogPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraikgewogICAgICAgICAgICAg
Q1NTUHJvcGVydHlJRCBsb25naGFuZElEID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXTsKICAg
ICAgICAgICAgIGxvbmdoYW5kcy0+YWRkSXRlbShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcobG9uZ2hh
bmRJRCkpOwpAQCAtNzM5LDkgKzczOSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAg
Y3NzUHJvcGVydGllcyA9IFdURk1vdmUocHJvcGVydGllcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgZm9udEZhbWlseU5h
bWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWls
eU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIGZvbnRG
YW1pbHlOYW1lcykKIHsKLSAgICBhdXRvIGZhbWlsaWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgYXV0byBmYW1pbGllcyA9IEpTT046OkFycmF5
T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzeXN0ZW1Gb250RmFt
aWxpZXMgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnN5c3RlbUZvbnRGYW1pbGllcygpOwogICAg
IGZvciAoY29uc3QgYXV0byYgZmFtaWx5TmFtZSA6IHN5c3RlbUZvbnRGYW1pbGllcykKQEAgLTg4
OCw5ICs4ODgsOSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKAogICAgIHJldHVybiBpbnNwZWN0
b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1
bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBF
bGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK1JlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50
JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNo
Pjo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCBjb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVj
dGluZ1J1bGVzKTsKICAgICBjb250ZXh0LnBzZXVkb0lkID0gcHNldWRvSWQgPyBwc2V1ZG9JZCA6
IGVsZW1lbnQucHNldWRvSWQoKTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJ
bnNwZWN0bwogICAgICAgICBpZiAoIXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBhdXRvIG1hdGNoaW5nU2VsZWN0b3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gbWF0Y2hpbmdTZWxlY3RvcnMgPSBK
U09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRSdWxlLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAg
aW50IGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3Ig
PSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JM
aXN0OjpuZXh0KHNlbGVjdG9yKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDZiODA0MjAxMDcxZDQyM2Y4MzUzNWQx
ZWU5MzI3OTFkMDlhMzE4YmEuLmRhMzg5NTJiZGY5MmY5ZGJkZTQwNmNlOWExYzMxZDdlZDc4OTdm
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTk3LDEwICs5NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmVT
dHlsZVNoZWV0c1VwZGF0ZWQoRG9jdW1lbnQmKTsKICAgICBib29sIGZvcmNlUHNldWRvU3RhdGUo
Y29uc3QgRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwogCi0gICAgdm9p
ZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlUHNldWRv
LCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0
Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRBbGxTdHlsZVNo
ZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldElu
Zm9zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVBzZXVkbywgY29uc3Qg
Ym9vbCogY29uc3QgaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVl
dFRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiBy
ZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KSBvdmVycmlk
ZTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3Io
RXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3Vs
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIHN0eWxlU2hlZXRJZCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1J1bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyYs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVy
dHlJbmZvPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRTeXN0ZW1G
b250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBjb25zdCBKU09OOjpBcnJheSYgZm9yY2VkUHNldWRvQ2xhc3Nlcykg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9y
UnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NT
dHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVM
aXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxl
bWVudCYsIFBzZXVkb0lkKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jiwg
UHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAKICAgICAv
LyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKaW5kZXggNzgxNjUyNGYyMmY2ZjUxYjVmZGNkNDg1MTVlZThlOGQzZTI0ZTUzNy4uMzIy
NmM5OWJhMzVhODU1OTY2ZGQ0YTE3NTE0MjQ0ZjcwYTRiNzhkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAK
QEAgLTE5MSwxMyArMTkxLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RD
b250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIGVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBjYW52YXMgY29udGV4dCB0eXBl
Iik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDU1NDYW52YXNDbGll
bnROb2RlcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0KQordm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8aW50Pj4mIHJlc3VsdCkKIHsKICAgICBhdXRvKiBpbnNwZWN0b3JDYW52YXMgPSBhc3Nl
cnRJbnNwZWN0b3JDYW52YXMoZXJyb3JTdHJpbmcsIGNhbnZhc0lkKTsKICAgICBpZiAoIWluc3Bl
Y3RvckNhbnZhcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlP
ZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgOiBpbnNwZWN0b3JD
YW52YXMtPmNhbnZhcygpLmNzc0NhbnZhc0NsaWVudHMoKSkgewogICAgICAgICBpZiAoaW50IGRv
Y3VtZW50Tm9kZUlkID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkt
PmJvdW5kTm9kZUlkKCZlbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAgICAgICAgIHJlc3VsdC0+
YWRkSXRlbShtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKS0+cHVzaE5v
ZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgZWxlbWVudCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5oCmluZGV4IDUzZjEyYTE3ZGU2NDBhYTY5YjIzY2I5ZWEzNzMwMTgyMDc4YmVjNmEuLmRj
YmI2MmI0ZDhlOTE2ZWFkYTc0YzY4N2FhYTFjOTRmZTg3ZDcyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGNhbnZhc0lkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Q29udGVu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFN0cmluZyogY29udGVudCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0Q1NTQ2FudmFzQ2xpZW50Tm9kZXMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RDU1NDYW52YXNDbGllbnRO
b2RlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFJlZlB0cjxKU09OOjpB
cnJheU9mPGludD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlQ2FudmFzQ29udGV4dChF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IGJvb2wqIGNvbnN0IHNpbmdsZUZyYW1lLCBj
b25zdCBpbnQqIGNvbnN0IG1lbW9yeUxpbWl0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggZmFjNWE0NzZiNTUwYjYwNDU4NmY4YWU4NGQ2ODViMWQxNGExY2M4ZC4uZDJj
NjM1ZGZlNWEwODM5YTYzYTlkMGM2NzJmZTBmOWE3YmNjNDA5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTU1
MCw3ICs1NTAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAgICAgICAqZWxlbWVudElk
ID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2Vs
ZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mIHJlc3VsdCkKIHsKICAg
ICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAo
IW5vZGUpCkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlT
ZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICB9
CiAKICAgICBhdXRvIG5vZGVzID0gcXVlcnlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Cisg
ICAgcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRk
SXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CiB9CkBAIC01OTcs
NyArNTk3LDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5n
ZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5y
ZWxlYXNlKCkpOwotICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOworICAg
ICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShi
dWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKICAgICAgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKDAsIFdURk1vdmUoY2hpbGRyZW4pKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtODMwLDkgKzgzMCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0CiAgICAgbV9kb21FZGl0b3ItPnJlcGxhY2VXaG9sZVRleHQoZG93bmNhc3Q8VGV4dD4o
Km5vZGUpLCB2YWx1ZSwgZXJyb3JTdHJpbmcpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxp
c3RlbmVyc0FycmF5KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KQogewotICAgIGxpc3RlbmVyc0Fy
cmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpFdmVudExpc3RlbmVyPjo6Y3JlYXRlKCk7CisgICAgbGlzdGVuZXJzQXJyYXkgPSBKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgp
OwogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHdoCiAgICAgKnJlc3VsdENvdW50ID0gcmVzdWx0c1ZlY3Rvci5zaXplKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBp
bnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiBub2Rl
SWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGlu
dCB0b0luZGV4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYgbm9kZUlkcykKIHsKICAgICBT
ZWFyY2hSZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0cy5maW5kKHNlYXJjaElk
KTsKICAgICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7CkBAIC05ODMsNyArOTgz
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
KyAgICBub2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGlu
dCBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgKytpKQogICAgICAgICBub2RlSWRzLT5hZGRJ
dGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKGl0LT52YWx1ZSlbaV0uZ2V0KCkpKTsKIH0KQEAg
LTEzNDAsNyArMTM0MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICByZXN1bHQgPSBv
YmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0
dHJpYnV0ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiYgcmVzdWx0KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBh
c3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAg
LTE0NjcsNyArMTQ2Nyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSoKICAgICBpZiAobm9kZS0+
aXNDb250YWluZXJOb2RlKCkpIHsKICAgICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGRO
b2RlQ291bnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291
bnQpOwotICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hp
bGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKKyAgICAgICAgUmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKICAgICAgICAgaWYgKGNo
aWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRyZW4oV1RG
TW92ZShjaGlsZHJlbikpOwogICAgIH0KQEAgLTE0ODYsNyArMTQ4Niw3IEBAIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0g
ZWxlbWVudC5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIGF1dG8gc2hhZG93Um9vdHMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gc2hhZG93Um9vdHMgPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
c2hhZG93Um9vdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFw
KSk7CiAgICAgICAgICAgICB2YWx1ZS0+c2V0U2hhZG93Um9vdHMoV1RGTW92ZShzaGFkb3dSb290
cykpOwogICAgICAgICB9CkBAIC0xNTQxLDkgKzE1NDEsOSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5v
ZGUqCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhFbGVtZW50KiBlbGVtZW50KQorUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVt
ZW50KQogewotICAgIGF1dG8gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgYXV0byBhdHRyaWJ1dGVzVmFsdWUgPSBKU09O
OjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0dHJp
YnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlOwpAQCAtMTU1NSw5ICsxNTU1LDkg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEEKICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlOwog
fQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQor
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWlu
ZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQogewotICAgIGF1dG8gY2hpbGRy
ZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0g
MCkgewogICAgICAgICAvLyBTcGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRl
bmQgdGhhdCBjb250YWluZXIncyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAg
ICBOb2RlKiBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CkBAIC0xNTc5LDE0
ICsxNTc5LDE0IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VuCiAgICAgcmV0dXJuIGNoaWxkcmVu
OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9F
bGVtZW50cyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKICAgICBQc2V1ZG9FbGVtZW50KiBi
ZWZvcmVFbGVtZW50ID0gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgUHNldWRv
RWxlbWVudCogYWZ0ZXJFbGVtZW50ID0gZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKICAg
ICBpZiAoIWJlZm9yZUVsZW1lbnQgJiYgIWFmdGVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgYXV0
byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGJlZm9yZUVsZW1lbnQpCiAgICAgICAgIHBzZXVk
b0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShiZWZvcmVFbGVtZW50LCAwLCBu
b2Rlc01hcCkpOwogICAgIGlmIChhZnRlckVsZW1lbnQpCkBAIC0xNjU2LDE0ICsxNjU2LDE0IEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRP
TUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgcmV0dXJuIHZhbHVlOwogfQogICAgIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4mJiBheE9iamVjdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PGludD4+JiYgY2hpbGROb2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4m
JiBheE9iamVjdCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mJiBjaGlsZE5vZGVJZHMpCiB7
CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBheE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBp
ZiAoIWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmICghY2hp
bGROb2RlSWRzKQotICAgICAgICBjaGlsZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgY2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlP
ZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkT2JqZWN0
IDogY2hpbGRyZW4pIHsKICAgICAgICAgaWYgKE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkT2JqZWN0
LT5ub2RlKCkpCkBAIC0xNjg1LDEzICsxNjg1LDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
CiAgICAgTm9kZSogYWN0aXZlRGVzY2VuZGFudE5vZGUgPSBudWxscHRyOwogICAgIGJvb2wgYnVz
eSA9IGZhbHNlOwogICAgIGF1dG8gY2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OkZhbHNlOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjaGlsZE5vZGVJZHM7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGNvbnRyb2xsZWROb2RlSWRzOworICAgIFJl
ZlB0cjxKU09OOjpBcnJheU9mPGludD4+IGNoaWxkTm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxpbnQ+PiBjb250cm9sbGVkTm9kZUlkczsKICAgICBhdXRvIGN1cnJlbnRTdGF0ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJl
bnQ6OkZhbHNlOwogICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7CiAgICAgYm9vbCBleHBhbmRlZCA9
IGZhbHNlOwogICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gZmxvd2VkTm9kZUlkczsKKyAgICBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxpbnQ+PiBmbG93ZWROb2RlSWRzOwogICAgIGJvb2wgZm9jdXNlZCA9IGZhbHNlOwog
ICAgIGJvb2wgaWdub3JlZCA9IHRydWU7CiAgICAgYm9vbCBpZ25vcmVkQnlEZWZhdWx0ID0gZmFs
c2U7CkBAIC0xNjk5LDE3ICsxNjk5LDE3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAg
Ym9vbCBoaWRkZW4gPSBmYWxzZTsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgYm9vbCBsaXZlUmVn
aW9uQXRvbWljID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IGxpdmVSZWdpb25SZWxldmFudDsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CiAgICAgYXV0byBsaXZlUmVnaW9uU3RhdHVzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6TGl2ZVJl
Z2lvblN0YXR1czo6T2ZmOwogICAgIE5vZGUqIG1vdXNlRXZlbnROb2RlID0gbnVsbHB0cjsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gb3duZWROb2RlSWRzOwor
ICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+IG93bmVkTm9kZUlkczsKICAgICBOb2RlKiBw
YXJlbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIHByZXNzZWQgPSBmYWxzZTsKICAgICBib29s
IHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgYm9vbCByZXF1aXJlZCA9IGZhbHNlOwogICAgIFN0cmlu
ZyByb2xlOwogICAgIGJvb2wgc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7CisgICAgUmVmUHRy
PEpTT046OkFycmF5T2Y8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7CiAgICAgYm9vbCBzdXBw
b3J0c0NoZWNrZWQgPSBmYWxzZTsKICAgICBib29sIHN1cHBvcnRzRXhwYW5kZWQgPSBmYWxzZTsK
ICAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbiA9IGZhbHNlOwpAQCAtMTc1MCw3ICsxNzUwLDcg
QEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4g
Y29udHJvbGxlZEVsZW1lbnRzOwogICAgICAgICAgICAgYXhPYmplY3QtPmVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShjb250cm9sbGVkRWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRyKTsKICAgICAgICAg
ICAgIGlmIChjb250cm9sbGVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29u
dHJvbGxlZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgICAgICBjb250cm9sbGVkTm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50
Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBjb250cm9sbGVkRWxl
bWVudCA6IGNvbnRyb2xsZWRFbGVtZW50cykKICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxl
ZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChjb250cm9sbGVkRWxlbWVu
dCkpOwogICAgICAgICAgICAgfQpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFn
ZW50OjpidWkKICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxvd2VkRWxlbWVudHM7CiAg
ICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKGZsb3dlZEVsZW1lbnRz
LCBhcmlhX2Zsb3d0b0F0dHIpOwogICAgICAgICAgICAgaWYgKGZsb3dlZEVsZW1lbnRzLnNpemUo
KSkgewotICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzID0g
SlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBmb3IgKEVsZW1l
bnQqIGZsb3dlZEVsZW1lbnQgOiBmbG93ZWRFbGVtZW50cykKICAgICAgICAgICAgICAgICAgICAg
Zmxvd2VkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGZsb3dlZEVsZW1l
bnQpKTsKICAgICAgICAgICAgIH0KQEAgLTE4MjgsNyArMTgyOCw3IEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRBZGRpdGlv
bnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6QWRk
aXRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFJlbW92YWxz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlJlbW92
YWxzKTsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6VGV4dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9u
UmVsZXZhbnQgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5n
KGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEBh
cmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMgWyJhZGRpdGlvbnMiLCJyZW1vdmFscyIs
InRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb3JkZXIgaXMg
Y29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3RlZCBpbiBXZWJJbnNwZWN0b3JVSS4KQEAg
LTE4NjAsNyArMTg2MCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICAg
ICAgVmVjdG9yPEVsZW1lbnQqPiBvd25lZEVsZW1lbnRzOwogICAgICAgICAgICAgICAgIGF4T2Jq
ZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUob3duZWRFbGVtZW50cywgYXJpYV9vd25zQXR0cik7
CiAgICAgICAgICAgICAgICAgaWYgKG93bmVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG93bmVkTm9kZUlkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46
OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgICAgICBvd25lZE5vZGVJZHMgPSBKU09OOjpBcnJh
eU9mPGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIG93
bmVkRWxlbWVudCA6IG93bmVkRWxlbWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBvd25l
ZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChvd25lZEVsZW1lbnQpKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xODg2LDcgKzE4ODYsNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAgICAgICAgICAgICBheE9iamVjdC0+c2Vs
ZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rl
ZENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVj
dGVkQ2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNlbGVjdGVkQ2hp
bGROb2RlID0gc2VsZWN0ZWRDaGlsZE9iamVjdC0+bm9kZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChzZWxlY3RlZENoaWxkTm9kZSkpOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZh
bGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKIHsKLSAgICBhdXRvIG5v
ZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBh
dXRvIG5vZGVJZHMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICAgICAgIGludCBpZCA9IGJvdW5kTm9kZUlkKGVs
ZW1lbnQpOwogICAgICAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0
aGUgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmgKaW5kZXggYzIwNzFkOWE2MmNiODg4YjM0MmZkYWQ3MThlY2VhYTFlMzVk
MWY3ZC4uMGQwMDJiYWFhZDEwZDI3MDlmODI4OWJhZDIxNjRmNGU4MjAzZTI2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApA
QCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20g
dGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2b2lkIHF1ZXJ5U2Vs
ZWN0b3IoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywg
aW50KiBlbGVtZW50SWQpIG92ZXJyaWRlOwotICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiByZXN1bHQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPiYgcm9vdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Q2hp
bGROb2RlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVu
dElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwpA
QCAtMTIzLDE0ICsxMjMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpIG92ZXJyaWRlOwog
ICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBodG1sKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
dmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpF
dmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEV2
ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6
U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBldmVudExp
c3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3Bl
cnRpZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSlNPTjo6QXJyYXkqIG5v
ZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VhcmNo
SWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9J
bmRleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8aW50Pj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c2NhcmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QXR0
cmlidXRlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEF0dHJp
YnV0ZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChF
cnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoaWdobGlnaHRD
b25maWcpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNo
Tm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGlu
dCogbm9kZUlkKSBvdmVycmlkZTsKQEAgLTIzMSwxMiArMjMxLDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRoID0gMSk7
CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsKLSAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVz
KEVsZW1lbnQqKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5v
ZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCk7CisgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gYnVpbGRB
cnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKKyAgICBSZWY8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVy
Q2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01h
cCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmLCBOb2RlVG9J
ZE1hcCogbm9kZXNNYXApOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50
TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCwgYm9vbCBkaXNhYmxlZCA9IGZh
bHNlKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7
Ci0gICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiYmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mJik7
CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiYmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxpbnQ+PiYmKTsKICAgICAKICAgICBO
b2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIE5vZGUqIG5vZGVGb3JP
YmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApp
bmRleCBmMTE5MjlmYmNiNTVkOGRhYjI2OWQ4ZTg1MTIxYWY4OTJiNzA0ZDAyLi5jZjBiMjg0ZWRi
YzJkZDYyYjM0NDEwNjY2Mzc1YTlhMWQ2ZWZjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nJikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVt
cykKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SlNPTjo6QXJyYXlPZjxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAg
IEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAgLTk3LDEzICs5
NywxMyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1z
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBzdG9yYWdlSXRlbXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pjo6Y3JlYXRlKCk7CisgICAgYXV0byBzdG9y
YWdlSXRlbXMgPSBKU09OOjpBcnJheU9mPEpTT046OkFycmF5T2Y8U3RyaW5nPj46OmNyZWF0ZSgp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0b3JhZ2VBcmVhLT5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgIFN0cmluZyBrZXkgPSBzdG9yYWdlQXJlYS0+a2V5KGkpOwogICAgICAg
ICBTdHJpbmcgdmFsdWUgPSBzdG9yYWdlQXJlYS0+aXRlbShrZXkpOwogCi0gICAgICAgIGF1dG8g
ZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAg
ICAgICAgYXV0byBlbnRyeSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAg
ICAgIGVudHJ5LT5hZGRJdGVtKGtleSk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsK
ICAgICAgICAgc3RvcmFnZUl0ZW1zLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCmluZGV4IDU3N2MyZTcyZTJlYmQ1ODQxNTY4ZDg5NmJhYjE2MTYwZjBmZWMzY2Yu
LjI4OWU0NjNhNjQ5N2NhMmU3NmU1NWY1M2FhNWY4ZmMxMmI5OGZhMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhl
IGZyb250LWVuZC4KICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RE9NU3Rv
cmFnZUl0ZW1zKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldERPTVN0b3JhZ2VJdGVt
cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgc3RvcmFnZUlkLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxKU09OOjpBcnJheU9mPFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3Qm
IHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBK
U09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcAppbmRleCAyYzc3MGY2YmIwYTlmOTdmNjVjMzE2MTA1NjY3MGM0ZTUy
OGI2NzQ5Li42ZWNiN2NlOTFjMzFiNTY4NTBhZWFlNThhYzE2OWI2Yzk0M2MxNTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKQEAgLTgzLDExICs4MywxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgYXV0byYgcm93TGlzdCA9IHJlc3VsdFNldC5yb3dzKCk7CiAKLSAgICAgICAgYXV0byBjb2x1
bW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwor
ICAgICAgICBhdXRvIGNvbHVtbk5hbWVzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChhdXRvJiBjb2x1bW4gOiByb3dMaXN0LmNvbHVtbk5hbWVzKCkpCiAg
ICAgICAgICAgICBjb2x1bW5OYW1lcy0+YWRkSXRlbShjb2x1bW4pOwogCi0gICAgICAgIGF1dG8g
dmFsdWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SlNPTjo6VmFsdWU+OjpjcmVhdGUo
KTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3Jl
YXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiByb3dMaXN0LnZhbHVlcygpKSB7CiAg
ICAgICAgICAgICBhdXRvIGluc3BlY3RvclZhbHVlID0gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKICAg
ICAgICAgICAgICAgICBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiBKU09OOjpW
YWx1ZTo6bnVsbCgpOyB9LApAQCAtMjU2LDE0ICsyNTYsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMo
RXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpCit2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyYgZXJyb3IsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG5h
bWVzKQogewogICAgIGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgIGVycm9yID0gQVNDSUlMaXRl
cmFsKCJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Ojpj
cmVhdGUoKTsKKyAgICBuYW1lcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAK
ICAgICBpZiAoYXV0byogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgdGFibGVOYW1lIDogZGF0YWJhc2UtPnRhYmxlTmFtZXMoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgKaW5kZXggOWE4NTU5ODlhNzFkNWFmYTIzYmZiMzcwMDU2YzY4Mjk4ZWMzYjRm
NS4uOTQ2MTI3ZjQ2NGZjN2EwMDJlOTM4NjMzNzUyMmI4Y2RjMDg5N2NjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBm
cm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldERhdGFiYXNl
VGFibGVOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBuYW1lcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBuYW1lcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmKSBv
dmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCmluZGV4IDhlNDRiMDYwMjZhZTVlOTdmMGMwZmFjZTcxNDdiMmIwNTFl
NGE4YzEuLjQ2NWMzOTExYmFlNmExZDBkYWI1ZWFjOTdjMmJlMzA3YzlmMzA4ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi11c2luZyBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTsKK3VzaW5nIEpTT046OkFycmF5T2Y7CiB1c2luZyBJbnNwZWN0b3I6OlBy
b3RvY29sOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVjdFN0b3JlczsKIHVzaW5nIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwogdXNpbmcgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6SW5kZXhlZERCOjpLZXk7CkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIFJlZlB0
cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYgaWQKICAgICAgICAga2V5UGF0aC0+c2V0U3RyaW5nKHN0cmluZyk7CiAgICAgICAg
IHJldHVybiBrZXlQYXRoOwogICAgIH0sIFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3Ip
IHsKLSAgICAgICAgYXV0byBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+
OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3IpCiAgICAgICAg
ICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmcpOwogICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5
UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJl
bGVhc2UoKTsKQEAgLTIyNSwxNCArMjI1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICAgICAgYXV0byYgZGF0YWJhc2VJbmZvID0gZGF0YWJhc2UuaW5mbygpOwot
ICAgICAgICBhdXRvIG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgYXV0byBvYmplY3RTdG9yZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsKICAgICAgICAgYXV0byBvYmpl
Y3RTdG9yZU5hbWVzID0gZGF0YWJhc2VJbmZvLm9iamVjdFN0b3JlTmFtZXMoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBuYW1lIDogb2JqZWN0U3RvcmVOYW1lcykgewogICAgICAgICAgICAgYXV0byog
b2JqZWN0U3RvcmVJbmZvID0gZGF0YWJhc2VJbmZvLmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3Jl
KG5hbWUpOwogICAgICAgICAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaW5kZXhlcyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJ
bmRleD46OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpbmRleGVzID0gSlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+OjpjcmVh
dGUoKTsKICAgICAKICAgICAgICAgICAgIGZvciAoYXV0byYgaW5kZXhJbmZvIDogb2JqZWN0U3Rv
cmVJbmZvLT5pbmRleE1hcCgpLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBvYmpl
Y3RTdG9yZUluZGV4ID0gT2JqZWN0U3RvcmVJbmRleDo6Y3JlYXRlKCkKQEAgLTQxOSwxNCArNDE5
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpD
UFBFdmVudExpc3RlbmVyVHlwZSkKICAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVk
U2NyaXB0KQogICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKFdURk1vdmUocmVxdWVzdENhbGxi
YWNrKSkKLSAgICAgICAgLCBtX3Jlc3VsdChBcnJheTxEYXRhRW50cnk+OjpjcmVhdGUoKSkKKyAg
ICAgICAgLCBtX3Jlc3VsdChKU09OOjpBcnJheU9mPERhdGFFbnRyeT46OmNyZWF0ZSgpKQogICAg
ICAgICAsIG1fc2tpcENvdW50KHNraXBDb3VudCkKICAgICAgICAgLCBtX3BhZ2VTaXplKHBhZ2VT
aXplKQogICAgIHsKICAgICB9CiAgICAgSW5qZWN0ZWRTY3JpcHQgbV9pbmplY3RlZFNjcmlwdDsK
ICAgICBSZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgUmVm
PEFycmF5PERhdGFFbnRyeT4+IG1fcmVzdWx0OworICAgIFJlZjxKU09OOjpBcnJheU9mPERhdGFF
bnRyeT4+IG1fcmVzdWx0OwogICAgIGludCBtX3NraXBDb3VudDsKICAgICB1bnNpZ25lZCBtX3Bh
Z2VTaXplOwogfTsKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgog
ICAgICAgICBpZiAoIWNhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFz
ZU5hbWVBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OworICAgICAgICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBkYXRhYmFzZU5hbWVBcnJheSA9
IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgZGF0
YWJhc2VOYW1lIDogZGF0YWJhc2VOYW1lcykKICAgICAgICAgICAgIGRhdGFiYXNlTmFtZUFycmF5
LT5hZGRJdGVtKGRhdGFiYXNlTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZGM2
ZmE5ZWIzNTNlMThiYjJkODA3MTRhMjcyOTAyMmI2OTFmMTE5Yi4uYzFhYjBlMzE5ZWQ4MjM5Y2Vk
N2Q5M2RjNWMzNGVmYzBhY2M5NmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTEwMiw5
ICsxMDIsOSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVz
dHJveWVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBzZXVkb0VsZW1l
bnQoJnBzZXVkb0VsZW1lbnQpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojps
YXllcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJl
ZTo6TGF5ZXI+PiYgbGF5ZXJzKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJz
Rm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJz
KQogewotICAgIGxheWVycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUoKTsKKyAgICBsYXllcnMgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUo
KTsKIAogICAgIGF1dG8qIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CkBAIC0xMjIsNyAr
MTIyLDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNp
bmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KCpyZW5kZXJlciksIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxh
eWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVu
ZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJlci5oYXNMYXllcigp
KSB7CiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoZXJyb3JT
dHJpbmcsIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5sYXllcigp
LCBsYXllcnMpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nCiAg
ICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5n
LCBjaGlsZCwgbGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0
aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQor
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXll
ckhpZXJhcmNoeShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJM
YXllciwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgaWYgKHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQo
KSkKICAgICAgICAgbGF5ZXJzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoZXJyb3JTdHJp
bmcsIHJlbmRlckxheWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggMTA4N2NmNzI2MzY3YWVi
YTRlY2I1N2I3NDk0YTcyNTg5ZjdhMjM1NC4uODk1Nzc5ZTMwZDNmMTQ3OTk3ZGRmMzNkZWQwNWIz
YzUyNzc1ZGY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpMYXllclRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYXNvbnNGb3JD
b21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM+Jikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC03MSw4ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICB2b2lkIHVuYmluZChjb25zdCBSZW5k
ZXJMYXllciopOwogCi0gICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShFcnJvclN0cmluZyYsIFJlbmRlckVsZW1lbnQmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0g
ICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5n
JiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXll
cnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyYsIFJlbmRlckVsZW1lbnQm
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6Okxh
eWVyPj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHko
RXJyb3JTdHJpbmcmLCBSZW5kZXJMYXllciosIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJp
bmcmLCBSZW5kZXJMYXllciopOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRy
ZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCmluZGV4IGUyN2NkMjY3Mjc3ZDIwYjMwOWQ2YTBlOWM2YTI0ZTEyY2QwY2JhMmYu
LmNlYzgzYmJmYWZlZTQyMjRjMTYzODkzNmM2NTEyNTI5NjUxZmMzYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y29sbGVj
dFNhbXBsZShjb25zdCBSZXNvdXJjZVVzYWdlRGF0YSYgZGF0YSkKICAgICAgICAgLnNldFNpemUo
ZGF0YS5jYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0udG90YWxTaXplKCkpCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAKLSAgICBhdXRvIGNhdGVnb3JpZXMgPSBQcm90b2NvbDo6QXJyYXk8
UHJvdG9jb2w6Ok1lbW9yeTo6Q2F0ZWdvcnlEYXRhPjo6Y3JlYXRlKCk7CisgICAgYXV0byBjYXRl
Z29yaWVzID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6TWVtb3J5OjpDYXRlZ29yeURhdGE+Ojpj
cmVhdGUoKTsKICAgICBjYXRlZ29yaWVzLT5hZGRJdGVtKFdURk1vdmUoamF2YXNjcmlwdENhdGVn
b3J5KSk7CiAgICAgY2F0ZWdvcmllcy0+YWRkSXRlbShXVEZNb3ZlKGppdENhdGVnb3J5KSk7CiAg
ICAgY2F0ZWdvcmllcy0+YWRkSXRlbShXVEZNb3ZlKGltYWdlc0NhdGVnb3J5KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggZjViZDM1YTlmMWIzNzY2ZmJmMTU1ZmRiNzBhYjExM2ZiODczMmVjOC4u
MjRiNThlMjJlZmNiNzUxNjNlNTQwNWNiY2VhZjU5MTk2NGM0NmJjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjCiAgICAgcmV0
dXJuIHNlYXJjaFJlc3VsdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJj
aE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYg
cmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNl
YXJjaFJlc3VsdD4+JiByZXN1bHQpCiB7CiAgICAgVmVjdG9yPE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEqPiByZXNvdXJjZXMgPSBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlcygp
OwogICAgIGZvciAoYXV0byogcmVzb3VyY2VEYXRhIDogcmVzb3VyY2VzKSB7CkBAIC04OTEsNyAr
ODkxLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaE90aGVyUmVxdWVzdHMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2kKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNl
U2Vuc2l0aXZlLCBib29sIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3Vs
dHMpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJl
c3VsdHMpCiB7CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
cmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CiAgICAgaWYg
KCFyZXNvdXJjZURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDQ5ZjIwOGY4MmQ3ZjkxNjFkODVm
YzA3YzFjMzE3N2FkZGEwMTNhOGMuLjk3NTY4Y2RlNzQzZGRkNTllODY4YTBkZTE0N2RkN2NkYzY4
YTMyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDggKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2Fs
Y3VsYXRpb24oRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25z
dCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7Ci0g
ICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVn
ZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKKyAgICB2b2lkIHNlYXJjaE90aGVyUmVx
dWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CisgICAg
dm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g+PiYpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGMzNTE1OTY5NDc5NzAxZTZjY2E4ZmIxMmU3MWUwZjBhMWQ5NTM0NTUuLjJjYTRk
ZWI5YzA3NmVjNWRmMzBiYTYxYWZkMTE3MTcxYWJjMjMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTQy
Niw5ICs0MjYsOSBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tp
ZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJgogICAgICAgICAucmVsZWFzZSgp
OwogfQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0
PENvb2tpZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNo
U2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQogewotICAgIGF1dG8gY29va2llcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT46OmNy
ZWF0ZSgpOworICAgIGF1dG8gY29va2llcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNv
b2tpZSA6IGNvb2tpZXNMaXN0KQogICAgICAgICBjb29raWVzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yQ29va2llKGNvb2tpZSkpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBWZWN0b3I8VVJM
PiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENv
b2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykKIHsKICAgICAvLyBJZiB3ZSBjYW4gZ2V0IHJh
dyBjb29raWVzLgogICAgIExpc3RIYXNoU2V0PENvb2tpZT4gcmF3Q29va2llc0xpc3Q7CkBAIC01
MTcsNyArNTE3LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXIKICAgICBpZiAocmF3Q29va2ll
c0ltcGxlbWVudGVkKQogICAgICAgICBjb29raWVzID0gYnVpbGRBcnJheUZvckNvb2tpZXMocmF3
Q29va2llc0xpc3QpOwogICAgIGVsc2UKLSAgICAgICAgY29va2llcyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgp
OworICAgICAgICBjb29raWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRl
bGV0ZUNvb2tpZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3Qg
U3RyaW5nJiB1cmwpCkBAIC01NTUsOSArNTU1LDkgQEAgc3RhdGljIGJvb2wgdGV4dENvbnRlbnRG
b3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0cmluZyoK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJ
blJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVn
ZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1h
dGNoPj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJj
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7Ci0g
ICAgcmVzdWx0cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICByZXN1bHRzID0g
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1h
dGNoPjo6Y3JlYXRlKCk7CiAKICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAq
b3B0aW9uYWxJc1JlZ2V4IDogZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtNjA1
LDkgKzYwNSw5IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjCiAgICAgICAgIC5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVz
dWx0Pj4mIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKKyAg
ICByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJj
aFJlc3VsdD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4
ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAg
LTgzMSw3ICs4MzEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplYwogICAgIEFTU0VSVF9BUkco
ZnJhbWUsIGZyYW1lKTsKIAogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZT4gZnJhbWVPYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lKGZyYW1lKTsKLSAgICBhdXRvIHN1
YnJlc291cmNlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1YnJlc291cmNl
cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJj
ZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRGcmFtZShXVEZNb3Zl
KGZyYW1lT2JqZWN0KSkKICAgICAgICAgLnNldFJlc291cmNlcyhzdWJyZXNvdXJjZXMuY29weVJl
ZigpKQpAQCAtODU2LDEwICs4NTYsMTAgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAg
ICAgc3VicmVzb3VyY2VzLT5hZGRJdGVtKFdURk1vdmUocmVzb3VyY2VPYmplY3QpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGlsZHJlbkFycmF5OworICAgIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPj4gY2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVl
KCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5n
KCkpIHsKICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAgICAgICAgICBjaGlsZHJl
bkFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGNoaWxkcmVu
QXJyYXkgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICByZXN1bHQtPnNldENoaWxkRnJhbWVz
KGNoaWxkcmVuQXJyYXkpOwogICAgICAgICB9CiAgICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0
ZW0oYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoY2hpbGQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY1MDM5NThh
NWY2MzU2ZWI0NDFkM2UxMzZhMGJlZTlkNTAyYTBmMWEuLjVkNTk2ZjdkMTBjMjdmMzAyZTQzNWZk
MzJkMjExMzZjMDlkMzJmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtOTIsMTIgKzkyLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbG9h
ZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdp
biwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKSBvdmVy
cmlkZTsKICAgICB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+
PiYgY29va2llcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4m
IGNvb2tpZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUmVxdWVzdElkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZWFyY2hJblJl
c291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGNh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUmVxdWVz
dElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgY2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogY29uc3QgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJp
bmcmLCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGEwNWJiYWI3ZWRhNjhh
NzNiZDZlNDYwZDBiNDIwNTM2NGNiMmU4MDEuLjY5ZTA5NGE2N2UyM2VlZGZkNzVlMWUxNGU5NzEz
OTNmNDY0Y2I2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
V2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViQ29uc29sZUFnZW50OjpX
ZWJDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JIZWFwQWdlbnQq
IGhlYXAKIHsKIH0KIAotdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQordm9pZCBXZWJDb25zb2xl
QWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWw+PiYgY2hhbm5lbHMpCiB7
CiAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDaGFubmVsVGFibGUgewogICAgICAgICBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IG5hbWU7CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViQ29uc29sZUFn
ZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvCiAgICAgICAgIHsgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIk1lZGlhIiksIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2U6Ok1lZGlhIH0sCiAgICAgfTsK
IAotICAgIGNoYW5uZWxzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD46OmNyZWF0ZSgpOworICAgIGNoYW5uZWxzID0gSlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPjo6Y3JlYXRl
KCk7CiAKICAgICBzaXplX3QgbGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjaGFubmVsVGFibGUp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCmluZGV4IGFhZjIx
MzI3MDg2Nzg3NTNlN2Y1Njk3MWM1YzkzMTI5YmZhZGQzZjIuLjBjOGM5ODk3YWIxYzY1OGQwNTdh
MDQ0YjM4MTQ2NzE4MTk5ZWE0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyopOwogCi0gICAgdm9pZCBnZXRM
b2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbD4+JikgZmluYWw7Cisg
ICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mKSBmaW5hbDsKICAg
ICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5Njg3OWMzODY4Yjk0ZGNh
MDUyOGI0NzMyNGQ3M2UxNTRkMGQ1ZTYzLi41N2IzYjY0ZDFlOGZlNmIzYWE3NGIzMjJiOGI4ZjAx
MDRmZGFlZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ+IFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpidWlsCiAKIC8vIFBsYXRmb3JtLWluZGVwZW5kZW50IENvbW1hbmRz
LgogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXROZXh0Q29udGV4dChSZWY8V2ViQXV0
b21hdGlvblNlc3Npb24+JiYgcHJvdGVjdGVkVGhpcywgVmVjdG9yPFJlZjxXZWJQYWdlUHJveHk+
PiYmIHBhZ2VzLCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pj4gY29udGV4dHMsIFJlZjxXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0TmV4dENvbnRleHQoUmVmPFdlYkF1dG9tYXRp
b25TZXNzaW9uPiYmIHByb3RlY3RlZFRoaXMsIFZlY3RvcjxSZWY8V2ViUGFnZVByb3h5Pj4mJiBw
YWdlcywgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
QnJvd3NpbmdDb250ZXh0Pj4gY29udGV4dHMsIFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6R2V0
QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUoY29udGV4
dHMpKTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRC
cm93c2luZ0NvbnRleHRzKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaQogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIGdldE5leHRDb250ZXh0KG1ha2VSZWYoKnRoaXMpLCBXVEZN
b3ZlKHBhZ2VzKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pjo6Y3JlYXRlKCksIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBnZXROZXh0Q29udGV4dChtYWtlUmVmKCp0aGlzKSwgV1RGTW92ZShwYWdlcyks
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdD
b250ZXh0Pjo6Y3JlYXRlKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPEdldEJyb3dzaW5nQ29udGV4
dENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTExNyw5ICsxMTE3LDkgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29v
a2llKGNvbnN0IFcKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29r
aWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2ll
c0xpc3QpCitzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXNMaXN0KQogewotICAgIGF1dG8gY29va2llcyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb2tpZT46OmNy
ZWF0ZSgpOworICAgIGF1dG8gY29va2llcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6Q29va2llPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGNvb2tpZSA6IGNvb2tpZXNMaXN0KQogICAgICAgICBjb29raWVzLT5hZGRJdGVtKGJ1aWxk
T2JqZWN0Rm9yQ29va2llKGNvb2tpZSkpOwpAQCAtMTI0MCw5ICsxMjQwLDkgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmkKICAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWUocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCBhY3RpdmVVUkwuaG9zdCgp
KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Npb25z
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVy
bWlzc2lvbnMpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRTZXNzaW9uUGVybWlzc2lv
bnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKQog
ewotICAgIGF1dG8gcGVybWlzc2lvbnNPYmplY3RBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9u
RGF0YT46OmNyZWF0ZSgpOworICAgIGF1dG8gcGVybWlzc2lvbnNPYmplY3RBcnJheSA9IEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Np
b25EYXRhPjo6Y3JlYXRlKCk7CiAgICAgYXV0byBnZXRVc2VyTWVkaWFQZXJtaXNzaW9uT2JqZWN0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRh
OjpjcmVhdGUoKQogICAgICAgICAuc2V0UGVybWlzc2lvbihJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbjo6R2V0VXNlck1lZGlhKQogICAgICAgICAuc2V0
VmFsdWUobV9wZXJtaXNzaW9uRm9yR2V0VXNlck1lZGlhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4
IDM4NDk2NzkyYmU5OTNiOWE5NGMwNGFlYTIyOTFiOTlhMDQ5NDgxNTUuLmIxZGIxMmIxOTNmMzUz
MzFjODc1NzBkZjRkYjM4NDFhMzllMzA0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVTaW5nbGVDb29raWUoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUsIFJlZjxEZWxldGVTaW5nbGVDb29raWVDYWxsYmFjaz4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRTaW5nbGVDb29raWUoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBKU09OOjpPYmpl
Y3QmIGNvb2tpZSwgUmVmPEFkZFNpbmdsZUNvb2tpZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFNlc3Np
b25QZXJtaXNzaW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25Q
ZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVybWlzc2lvbnMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
U2Vzc2lvblBlcm1pc3Npb25zKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lv
bkRhdGE+PiYgb3V0X3Blcm1pc3Npb25zKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlc3Npb25Q
ZXJtaXNzaW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmIGlu
X3Blcm1pc3Npb25zKSBvdmVycmlkZTsKIAogICAgIC8vIFBsYXRmb3JtOiBtYWNPUwpAQCAtMTY2
LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHlGb3JI
YW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYlBhZ2VQcm94eShj
b25zdCBXZWJQYWdlUHJveHkmKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoV2ViUGFn
ZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKTsKLSAgICB2b2lkIGdldE5l
eHRDb250ZXh0KFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiwgVmVjdG9yPFJlZjxXZWJQYWdl
UHJveHk+PiYmLCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pj4sIFJlZjxXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGdldE5leHRD
b250ZXh0KFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiwgVmVjdG9yPFJlZjxXZWJQYWdlUHJv
eHk+PiYmLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpCcm93c2luZ0NvbnRleHQ+PiwgUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uOjpHZXRCcm93c2lu
Z0NvbnRleHRzQ2FsbGJhY2s+JiYpOwogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gd2Vi
RnJhbWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgaGFuZGxlRm9yV2Vi
RnJhbWVJRCh1aW50NjRfdCBmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNTBkYTYwNzI2Nzk4ZGYxOGMxODk5OWU4ODA5NzZlN2Rk
MGZlYWU0Li41NjBlNmNjNjc5MzQ5OThhNjBiZjUwNjlkZTNmOWNjY2E5ZjVhYzVhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTctMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxUPiB0byBKU09O
IG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGR1cGxpY2F0ZSB0ZXN0IGNhc2VzIGZvciBKU09OOjpBcnJheU9mPFQ+IGJhc2VkIG9u
IEpTT046OkFycmF5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZh
bHVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEyLTAxICBB
bGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBB
ZGQgU2FtcGxlTWFwLmNwcCBBUEkgdGVzdHMgdG8gQ01ha2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwCmluZGV4IDU5YmJmODQzMTVhY2ExNzkyNGU5MTE4NGMx
Y2ZmZmIxZWZhOTQxYmEuLjJmNDk5M2JlOWYxNTgxMzdlMTNlYmU1OGI1MmVmZDI0ZmFiYzUzOTYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1ZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcApAQCAtMTMz
LDYgKzEzMywxMiBAQCBURVNUKEpTT05WYWx1ZSwgQ29uc3RydWN0KQogICAgICAgICBFWFBFQ1Rf
VFJVRShvYmplY3QtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6T2JqZWN0KTsKICAgICAg
ICAgRVhQRUNUX0VRKG9iamVjdC0+c2l6ZSgpLCAwKTsKICAgICB9CisKKyAgICB7CisgICAgICAg
IGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBF
WFBFQ1RfVFJVRShhcnJheS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSk7Cisg
ICAgICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3RoKCksIDBVKTsKKyAgICB9CiB9CiAKIFRFU1Qo
SlNPTkFycmF5LCBCYXNpYykKQEAgLTIyOSw2ICsyMzUsOTAgQEAgVEVTVChKU09OQXJyYXksIEJh
c2ljKQogICAgIEVYUEVDVF9UUlVFKGl0ID09IGFycmF5LT5lbmQoKSk7CiB9CiAKK1RFU1QoSlNP
TkFycmF5T2YsIEJhc2ljKQoreworICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
YXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CisKKyAgICBhcnJh
eS0+YWRkSXRlbShKU09OOjpWYWx1ZTo6bnVsbCgpKTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxl
bmd0aCgpLCAxVSk7CisgICAgYXV0byB2YWx1ZSA9IGFycmF5LT5nZXQoMCk7CisgICAgRVhQRUNU
X1RSVUUodmFsdWUtPmlzTnVsbCgpKTsKKworICAgIC8vIE5vdGU6IGFkZEl0ZW0oYm9vbCkgaXMg
bm90IGltcGxlbWVudGVkIGJlY2F1c2UgaXQgd291bGQgYmUgYW1iaWd1b3VzCisgICAgLy8gd2l0
aCBhZGRJdGVtKFJlZlB0cjxUPiksIGFuZCB0aGUgbGF0dGVyIGlzIG11Y2ggbW9yZSBjb21tb24g
dG8gZG8uCisKKyAgICBhcnJheS0+YWRkSXRlbSgxKTsKKyAgICBFWFBFQ1RfRVEoYXJyYXktPmxl
bmd0aCgpLCAyVSk7CisgICAgdmFsdWUgPSBhcnJheS0+Z2V0KDEpOworICAgIEVYUEVDVF9UUlVF
KHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkludGVnZXIpOworICAgIGludCBp
bnRlZ2VyVmFsdWU7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPmFzSW50ZWdlcihpbnRlZ2VyVmFs
dWUpKTsKKyAgICBFWFBFQ1RfRVEoaW50ZWdlclZhbHVlLCAxKTsKKworICAgIGFycmF5LT5hZGRJ
dGVtKDEuNSk7CisgICAgRVhQRUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgM1UpOworICAgIHZhbHVl
ID0gYXJyYXktPmdldCgyKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046
OlZhbHVlOjpUeXBlOjpEb3VibGUpOworICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICBFWFBF
Q1RfVFJVRSh2YWx1ZS0+YXNEb3VibGUoZG91YmxlVmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEoZG91
YmxlVmFsdWUsIDEuNSk7CisKKyAgICBhcnJheS0+YWRkSXRlbSgid2Via2l0Iik7CisgICAgRVhQ
RUNUX0VRKGFycmF5LT5sZW5ndGgoKSwgNFUpOworICAgIHZhbHVlID0gYXJyYXktPmdldCgzKTsK
KyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpTdHJp
bmcpOworICAgIFN0cmluZyBzdHJpbmdWYWx1ZTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+YXNT
dHJpbmcoc3RyaW5nVmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEoc3RyaW5nVmFsdWUsICJ3ZWJraXQi
KTsKKworICAgIGFycmF5LT5hZGRJdGVtKEpTT046Ok9iamVjdDo6Y3JlYXRlKCkpOworICAgIEVY
UEVDVF9FUShhcnJheS0+bGVuZ3RoKCksIDVVKTsKKyAgICB2YWx1ZSA9IGFycmF5LT5nZXQoNCk7
CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6T2Jq
ZWN0KTsKKyAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3RWYWx1ZTsKKyAgICBFWFBFQ1Rf
VFJVRSh2YWx1ZS0+YXNPYmplY3Qob2JqZWN0VmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEob2JqZWN0
VmFsdWUtPnNpemUoKSwgMCk7CisKKyAgICBhcnJheS0+YWRkSXRlbShKU09OOjpBcnJheTo6Y3Jl
YXRlKCkpOworICAgIEVYUEVDVF9FUShhcnJheS0+bGVuZ3RoKCksIDZVKTsKKyAgICB2YWx1ZSA9
IGFycmF5LT5nZXQoNSk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5cGUoKSA9PSBKU09OOjpW
YWx1ZTo6VHlwZTo6QXJyYXkpOworICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYXJyYXlWYWx1ZTsK
KyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+YXNBcnJheShhcnJheVZhbHVlKSk7CisgICAgRVhQRUNU
X0VRKGFycmF5VmFsdWUtPmxlbmd0aCgpLCAwVSk7CisKKyAgICBhdXRvIGl0ID0gYXJyYXktPmJl
Z2luKCk7CisgICAgdmFsdWUgPSBpdC0+Z2V0KCk7CisgICAgRVhQRUNUX1RSVUUodmFsdWUtPnR5
cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6TnVsbCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXQgPT0gYXJyYXktPmVuZCgpKTsKKworICAgIHZhbHVlID0gaXQtPmdldCgpOworICAg
IEVYUEVDVF9UUlVFKHZhbHVlLT50eXBlKCkgPT0gSlNPTjo6VmFsdWU6OlR5cGU6OkludGVnZXIp
OworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAg
ICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpT
T046OlZhbHVlOjpUeXBlOjpEb3VibGUpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0
ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1Rf
VFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmcpOworICAgICsr
aXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9
IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dHlwZSgpID09IEpTT046OlZhbHVl
OjpUeXBlOjpPYmplY3QpOworICAgICsraXQ7CisgICAgRVhQRUNUX0ZBTFNFKGl0ID09IGFycmF5
LT5lbmQoKSk7CisKKyAgICB2YWx1ZSA9IGl0LT5nZXQoKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1
ZS0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSk7CisgICAgKytpdDsKKyAgICBF
WFBFQ1RfVFJVRShpdCA9PSBhcnJheS0+ZW5kKCkpOworfQorCiBURVNUKEpTT05PYmplY3QsIEJh
c2ljKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>