<?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>211059</bug_id>
          
          <creation_ts>2020-04-26 19:28:41 -0700</creation_ts>
          <short_desc>[JSC] CallData/ConstructData should include CallType/ConstructType</short_desc>
          <delta_ts>2020-04-29 11:10:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211053</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=211037</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645878</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-26 19:28:41 -0700</bug_when>
    <thetext>[JSC] CallData/ConstructData struct should include CallType/CallData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645879</commentid>
    <comment_count>1</comment_count>
      <attachid>397642</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-26 19:39:39 -0700</bug_when>
    <thetext>Created attachment 397642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645889</commentid>
    <comment_count>2</comment_count>
      <attachid>397642</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-26 22:32:11 -0700</bug_when>
    <thetext>Comment on attachment 397642
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        getCallData/getConstructData return a CallType/ConstructType and have a CallData/ConstructData out param,
&gt; +        and then *both* of these are passed side-by-side to `call`/`construct`, which all seems a bit silly.
&gt; +
&gt; +        This patch adds a CallType/ConstructType field to CallData/ConstructData such that getCallData/getConstructData
&gt; +        can do exactly what their names suggest and such that `call`/`construct` require one less overt parameter.

Thanks. Glad you considered my suggestion.

I will point out that &quot;get&quot; in WebKit coding style is supposed to be reserved for functions with out arguments, so a name change is called for here. But I don’t think &quot;callData&quot; and &quot;constructData&quot; are necessarily good names, because they sound like verb phrases. So it might take a little work to think of better names.

&gt; Source/JavaScriptCore/runtime/CallData.h:43
&gt;      Host,

Irritating inconsistency that we call it &quot;Host&quot; here and &quot;native&quot; in the union.

Might also want to move CallType inside the struct and name it CallData::Type.

&gt; Source/JavaScriptCore/runtime/ConstructData.h:46
&gt; -enum class ConstructType : unsigned {
&gt; +enum class ConstructType : uint8_t {
&gt;      None,
&gt;      Host,
&gt;      JS
&gt;  };
&gt;  
&gt;  struct ConstructData {

Seems that CallData and ConstructData are not different. Maybe they were at some point. At this point, I don’t understand why we have a separate type for ConstructType and ConstructData.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:89
&gt; -enum class CallType : unsigned;
&gt; +enum class CallType : uint8_t;
&gt;  struct CallData;
&gt; -enum class ConstructType : unsigned;
&gt; +enum class ConstructType : uint8_t;
&gt;  struct ConstructData;

Seems unlikely that we need the forward declarations of CallType and ConstructType here any more. Seems unlikely they are used by code that doesn’t include the header that has the struct definitions in it.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:517
&gt;      VM&amp; vm, JSGlobalObject* globalObject, CallFrame* callFrame, JSString* string, JSValue searchValue, CallData&amp; callData,

Doesn’t it seem like this should be const CallData&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645892</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-26 22:50:59 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; I will point out that &quot;get&quot; in WebKit coding style is supposed to be
&gt; reserved for functions with out arguments, so a name change is called for
&gt; here. But I don’t think &quot;callData&quot; and &quot;constructData&quot; are necessarily good
&gt; names, because they sound like verb phrases. So it might take a little work
&gt; to think of better names.

Oh whoops. Perhaps `makeCallData`? Or even `dataForCall`?

&gt; &gt; Source/JavaScriptCore/runtime/CallData.h:43
&gt; &gt;      Host,
&gt; 
&gt; Irritating inconsistency that we call it &quot;Host&quot; here and &quot;native&quot; in the
&gt; union.

Hmm, true. Changing the union would be less visible, but then I think &quot;native&quot; is a clearer word than &quot;host&quot;.

&gt; Might also want to move CallType inside the struct and name it
&gt; CallData::Type.

I thought this wasn&apos;t possible because there&apos;s a different usage of CallType in JSC but apparently it&apos;s a totally different enum:
https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/bytecode/CallLinkInfo.h#L46

So that ought to work after all!

&gt; &gt; Source/JavaScriptCore/runtime/ConstructData.h:46
&gt; &gt; -enum class ConstructType : unsigned {
&gt; &gt; +enum class ConstructType : uint8_t {
&gt; &gt;      None,
&gt; &gt;      Host,
&gt; &gt;      JS
&gt; &gt;  };
&gt; &gt;  
&gt; &gt;  struct ConstructData {
&gt; 
&gt; Seems that CallData and ConstructData are not different. Maybe they were at
&gt; some point. At this point, I don’t understand why we have a separate type
&gt; for ConstructType and ConstructData.

That&apos;s a really good point. Different functions are needed for these but not different structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645903</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-26 23:45:08 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #3)
&gt; (In reply to Darin Adler from comment #2)
&gt; &gt; I will point out that &quot;get&quot; in WebKit coding style is supposed to be
&gt; &gt; reserved for functions with out arguments, so a name change is called for
&gt; &gt; here. But I don’t think &quot;callData&quot; and &quot;constructData&quot; are necessarily good
&gt; &gt; names, because they sound like verb phrases. So it might take a little work
&gt; &gt; to think of better names.
&gt; 
&gt; Oh whoops. Perhaps `makeCallData`? Or even `dataForCall`?

Hmm, even given the convention though, I&apos;m a bit apprehensive about suddenly changing this particular name given its pervasiveness -- in particular, OverridesGetCallData is a flag used for JSC Structures at large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645921</commentid>
    <comment_count>5</comment_count>
      <attachid>397654</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-27 00:59:10 -0700</bug_when>
    <thetext>Created attachment 397654
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645927</commentid>
    <comment_count>6</comment_count>
      <attachid>397659</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-27 01:28:36 -0700</bug_when>
    <thetext>Created attachment 397659
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645932</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-27 02:09:37 -0700</bug_when>
    <thetext>Committed r260744: &lt;https://trac.webkit.org/changeset/260744&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397659.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645933</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-27 02:10:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/62437437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646022</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-27 08:59:17 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #4)
&gt; OverridesGetCallData is a flag used for JSC Structures

Yes, we&apos;d rename that flag too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646505</commentid>
    <comment_count>10</comment_count>
      <attachid>397659</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-28 09:08:11 -0700</bug_when>
    <thetext>Comment on attachment 397659
Patch for landing

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

This is a nice refactoring

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        - renames enum value Host to Native in alignment with CallData&apos;s union

Nit: Maybe should’ve done the renaming in the other direction. We use “JSC_HOST_CALL” everywhere for what this “Native” is referring to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646530</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-28 09:43:05 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; Comment on attachment 397659 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=397659&amp;action=review
&gt; 
&gt; This is a nice refactoring
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:16
&gt; &gt; +        - renames enum value Host to Native in alignment with CallData&apos;s union
&gt; 
&gt; Nit: Maybe should’ve done the renaming in the other direction. We use
&gt; “JSC_HOST_CALL” everywhere for what this “Native” is referring to

Bike shedding here, but I came from a world where &quot;Native&quot; is the term of art for such a concept i.e. C/C++ code that is native to the machine.  Also, in Source/JavaScriptCore, ...

$ grep -rn Native * | grep -v ChangeLog | grep -v CMakeLists.txt | grep -v xcode | grep -v &apos;JavaScriptCore.order&apos; | grep -v Sources.txt | grep -v NativeTraits | grep -v InjectedScriptHost | wc
     599    3718   73246

$ grep -rn Host * | grep -v ChangeLog | grep -v CMakeLists.txt | grep -v xcode | grep -v &apos;JavaScriptCore.order&apos; | grep -v Sources.txt | grep -v NativeTraits | grep -v InjectedScriptHost | wc
     249    1267   25459

If you consider InjectedScriptHost a valid vote for using &quot;Host&quot; as well, then ...

$ grep -rn Host * | grep -v ChangeLog | grep -v CMakeLists.txt | grep -v xcode | grep -v &apos;JavaScriptCore.order&apos; | grep -v Sources.txt | grep -v NativeTraits | wc
     426    2192   50769

No matter how you slice it, &quot;Native&quot; is more commonly used than &quot;Host&quot;.  

I don&apos;t strongly object to making &quot;Host&quot; the name of choice.  I used to think of &quot;Host&quot; as the machine hosting the development code, but I understand that in some worlds (e.g. gcc), &quot;host&quot; means the machine hosting the emulated code.

Regardless, I think we all agree on one thing: let&apos;s be consistent everywhere in the code on using only one term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646583</commentid>
    <comment_count>12</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 11:49:20 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #11)
&gt; Regardless, I think we all agree on one thing: let&apos;s be consistent
&gt; everywhere in the code on using only one term.

Absolutely. My thinking is merely that global consistency is tricky at present but &quot;when callData.type is Native, we have a TaggedNativeFunction callData.native.function&quot; is nice local consistency; the notion of &quot;host call&quot; is a good counterpoint though, so I&apos;m happy to switch it if anybody feels strongly enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646610</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-28 12:28:53 -0700</bug_when>
    <thetext>I understand one reason we might prefer &quot;host&quot;. In the past I’ve found the &quot;native&quot; term ambiguous. To me, in a JavaScript engine, it seems the &quot;native tongue&quot; could be JavaScript itself, rather than the underlying computing system the engine is built on top of. It’s things like DOM bindings that cause us to leave the JavaScript type system, garbage collection, etc. that seem &quot;less native&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646646</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 13:07:27 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; I understand one reason we might prefer &quot;host&quot;. In the past I’ve found the
&gt; &quot;native&quot; term ambiguous. To me, in a JavaScript engine, it seems the &quot;native
&gt; tongue&quot; could be JavaScript itself, rather than the underlying computing
&gt; system the engine is built on top of. It’s things like DOM bindings that
&gt; cause us to leave the JavaScript type system, garbage collection, etc. that
&gt; seem &quot;less native&quot;.

Oh, hmm, that&apos;s a bit surprising to me. I think I&apos;d understand if somebody was concerned that C++ &quot;isn&apos;t native enough&quot;(?) but &quot;native&quot; is the term I&apos;m used to hearing in describing something implemented below the level of userland code.

For instance, ECMA-262 requires that Function.prototype.toString include &quot;[native code]&quot; for native functions (https://tc39.es/ecma262/#prod-NativeFunction) and the non-userland Error classes are all NativeErrors (https://tc39.es/ecma262/#sec-native-error-types-used-in-this-standard).

Other references:
- https://reactnative.dev/
- http://craftinginterpreters.com/functions.html#native-functions

On the other hand, from the view of ECMA-262, the &quot;host (environment)&quot; for JSC is WebCore (or any application that embeds JSC).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647074</commentid>
    <comment_count>15</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-29 11:10:21 -0700</bug_when>
    <thetext>I have a slight personal preference for &quot;Host&quot; over &quot;Native&quot;, but I don&apos;t care that much. My stronger preference is for consistency. (That said, we&apos;ve had both these terms for a while, and I don&apos;t think it really confuses anybody.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397642</attachid>
            <date>2020-04-26 19:39:39 -0700</date>
            <delta_ts>2020-04-27 00:59:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211059-20200426193938.patch</filename>
            <type>text/plain</type>
            <size>231696</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MWE1NDEzYmM1MmQzNjc4ZGZjNzY4ZmUwNjVlMzYwNWEyNjJmMjNjLi44NDUwNGFhOGE5ZTM1ZGVh
ZjNkYzA3YTQ5MjM2NjE2MGJmYzE3Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjggQEAKKzIwMjAtMDQtMjYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtKU0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc3RydWN0IHNo
b3VsZCBpbmNsdWRlIENhbGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGdldENhbGxEYXRhL2dldENvbnN0cnVjdERhdGEg
cmV0dXJuIGEgQ2FsbFR5cGUvQ29uc3RydWN0VHlwZSBhbmQgaGF2ZSBhIENhbGxEYXRhL0NvbnN0
cnVjdERhdGEgb3V0IHBhcmFtLAorICAgICAgICBhbmQgdGhlbiAqYm90aCogb2YgdGhlc2UgYXJl
IHBhc3NlZCBzaWRlLWJ5LXNpZGUgdG8gYGNhbGxgL2Bjb25zdHJ1Y3RgLCB3aGljaCBhbGwgc2Vl
bXMgYSBiaXQgc2lsbHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgQ2FsbFR5cGUvQ29u
c3RydWN0VHlwZSBmaWVsZCB0byBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN1Y2ggdGhhdCBnZXRD
YWxsRGF0YS9nZXRDb25zdHJ1Y3REYXRhCisgICAgICAgIGNhbiBkbyBleGFjdGx5IHdoYXQgdGhl
aXIgbmFtZXMgc3VnZ2VzdCBhbmQgc3VjaCB0aGF0IGBjYWxsYC9gY29uc3RydWN0YCByZXF1aXJl
IG9uZSBsZXNzIG92ZXJ0IHBhcmFtZXRlci4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdENhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTT2JqZWN0Q2FsbEFzQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6Cisg
ICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAq
IGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50Lmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9s
bGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgICog
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
VG9TdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbCk6Cisg
ICAgICAgIChKU0M6OnByb2ZpbGVkQ2FsbCk6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToK
KyAgICAgICAgKEpTQzo6cHJvZmlsZWRDb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29u
c3RydWN0RGF0YS5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpw
cm9maWxlZENvbnN0cnVjdCk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0
ZXJhdG9yQ2xvc2UpOgorICAgICAgICAoSlNDOjpoYXNJdGVyYXRvck1ldGhvZCk6CisgICAgICAg
IChKU0M6Oml0ZXJhdG9yTWV0aG9kKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JGb3JJdGVyYWJs
ZSk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
Ojpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0
aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENhbGxEYXRh
KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJv
bWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlOjp0aGVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTWljcm90YXNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNaWNyb3Rhc2s6
OnJ1bik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OnByb3ZpZGVGZXRjaCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUxvYWRlcjo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsaW5r
QW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVz
dEltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5naWZpZXI6OmlzQ2FsbGFibGVSZXBsYWNlciBjb25zdCk6CisgICAgICAg
IChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lm
aWVyOjp0b0pTT04pOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6V2Fsa2VyKToKKyAgICAgICAgKEpTQzo6
V2Fsa2VyOjpjYWxsUmV2aXZlcik6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJzZSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om9yZGluYXJ5
U2V0U2xvdyk6CisgICAgICAgIChKU0M6OmNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRhKToKKyAg
ICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21p
c2UuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmNyZWF0ZURlZmVycmVkRGF0YSk6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZWRQcm9taXNlKToKKyAgICAgICAgKEpTQzo6
Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0TWFwKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9y
bVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1l
dGhvZEdldE93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1I
YXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KToKKyAg
ICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1H
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1T
ZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3Rv
dHlwZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RDb25zdHJ1
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAgICAgICAgKEpTQzo6b3Bl
cmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyk6CisgICAgICAgIChKU0M6
OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpjYWxsUHJvbWlzZVJlamVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dFdlYWtNYXApOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJW
TS5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXaXRoU3RhY2tTaXplUHJvYmVGdW5jdGlvbik6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbik6CisKIDIwMjAtMDQtMjYgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIENsZWFybHkgZGlzdGluZ3Vp
c2ggaXNDb25zdHJ1Y3RvciBmcm9tIGdldENvbnN0cnVjdERhdGEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMTk1
MjQwMWI0NGU0MWE0NDgzNDc1NjkzMGJlZGM0NDQwN2JmNjA3Li5lOWQ5NDE1MjlkMWJhM2Q4Nzdl
MjdkYTlhOGUzOTIwOGE2OGZmODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDIw
LTA0LTI2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBbSlNDXSBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN0cnVjdCBzaG91bGQgaW5jbHVkZSBDYWxs
VHlwZS9Db25zdHJ1Y3RUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2Fs
bGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3Rv
bUVsZW1lbnRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQnVp
bHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVu
dEFyZ3VtZW50cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0
RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3RvckJhc2U6OmdldENhbGxEYXRhKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JG
b3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2xlYXJCYWNraW5nTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFRvQmFj
a2luZ01hcCk6CisgICAgICAgIChXZWJDb3JlOjpmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5n
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ01hcCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERh
dGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01TZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyQmFja2luZ1NldCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUb0JhY2tpbmdTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9y
d2FyZEZ1bmN0aW9uQ2FsbFRvQmFja2luZ1NldCk6CisgICAgICAgIChXZWJDb3JlOjpmb3J3YXJk
Rm9yRWFjaENhbGxUb0JhY2tpbmdTZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNF
eGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRl
OjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNT
dGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNT
dGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6
Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbFBsdWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1JbnRlcm5hbDo6Y2FsbEZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpsb2NrKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRhYmxlU3RyZWFtQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6Y2FsbEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVQbHVnaW5DYWxsKToKKyAgICAgICAgKEdlbmVyYXRlTGVnYWN5
Q2FsbGVyRGVmaW5pdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpnZXRDYWxsRGF0YSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRDYWxsRGF0YSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5o
OgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgICogYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgY2FsbFdl
YlNjcmlwdE1ldGhvZDp3aXRoQXJndW1lbnRzOl0pOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBicmlkZ2Uv
cnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRT
aGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1l
ZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0Q3VycmVudE1lZGlhQ29udHJvbHNTdGF0dXMpOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNsb25lQXJyYXlCdWZmZXIpOgorCiAyMDIwLTA0LTI2ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBzdGVw
cyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUzYjAy
M2MyY2JlYjliZTM1ZWNiZWE5MWE1ODAzMjAwMjljYTNjZWYuLjRlN2VhMDBhN2M2NGFjYjA4ZGZm
NTM5NzQ2YWEzMzEzMWM3MmQyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQt
MjYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtK
U0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc3RydWN0IHNob3VsZCBpbmNsdWRlIENhbGxUeXBl
L0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OkpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpo
YXNNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAg
ICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjppbnZva2UpOgorCiAyMDIwLTA0LTI2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTg3YzY3MTIzMTc2MWNhNDEwOWJjMGU3NTFhNDZh
OGUwODU2OTQ4ZC4uNzUyZWYwNzFkMmMwMzZiNzc4YzcyNWZhYTRiNzM4NjM2YjQ3OTAwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTI2ICBS
b3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBD
YWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN0cnVjdCBzaG91bGQgaW5jbHVkZSBDYWxsVHlwZS9Db25z
dHJ1Y3RUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNvbnN0cnVjdCk6
CisKIDIwMjAtMDQtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFN0b3AgdXNpbmcgbGl2ZSByYW5nZXMgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHJhbmdlIG9m
IHRoZSBzZWxlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0YTc0YmYwMzQy
YmJjODNhYjIyMTI5Y2YwYWU1MDczYmQxYWY0OWZiLi4zYTc4MmJjM2VhYTFkOGQ2OTE5ZTZlMWNl
ZDdjMWVkMTgzMDhhMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjAtMDQtMjYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29t
PgorCisgICAgICAgIFtKU0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc3RydWN0IHNob3VsZCBp
bmNsdWRlIENhbGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5QTl9JbnZva2UpOgorCiAyMDIwLTA0LTIxICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIGZ1bmN0
aW9ucyB0aGF0IHJldHVybiByYW5nZSBvZiB0aGUgc2VsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDlmNGNl
NzZlZGUxZWFlOGVkMDJkNWYzZjFiZjdkMDk0ZjcxOWZmNi4uODk5NDk2OGQzZDIxY2Y3ZmY4Nzc1
OWUyNjhjMzdkODA2ODA2ZmJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcApAQCAtNjQsMTAgKzY0LDEyIEBAIHZvaWQgSlND
YWxsYmFja0NvbnN0cnVjdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2Fz
dDxKU0NhbGxiYWNrQ29uc3RydWN0b3IqPihjZWxsKS0+SlNDYWxsYmFja0NvbnN0cnVjdG9yOjp+
SlNDYWxsYmFja0NvbnN0cnVjdG9yKCk7CiB9CiAKLUNvbnN0cnVjdFR5cGUgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCitDb25zdHJ1Y3REYXRhIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqKQogeworICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAg
ICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDb25zdHJ1Y3RUeXBlOjpIb3N0OwogICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0PEpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvcj47Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKaW5kZXgg
ZmJkMjQzMTE5NDgxMjg2NTY2MmIyZWZjYTM0MGM2YWVjMWU4ZTc3Yi4uNzRmNmQxYmI3N2ViZTRh
OTMzMmI0ZDg1ZmQ2OGM4NDk2Yjg5MDE5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAKICAgICBmcmllbmQgc3RydWN0IEFQSUNhbGxiYWNrRnVuY3Rpb247CiAKLSAgICBzdGF0aWMg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0RGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwogCiAg
ICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNvbnN0cnVjdENhbGxiYWNrKCkg
eyByZXR1cm4gbV9jYWxsYmFjazsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCmluZGV4IGU2NDM1MTMxM2Q3Zjg3YWMxY2JkZmJiYzA2MjNmYWNhOWI4
OWYwN2MuLjJjOGNiNGEyNzA2MjRkNDJhZjNiN2JiZTVhNDZmOGJiZTNjYjg5MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDgsOCArMjA4
LDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIENvbnN0cnVjdERhdGEgZ2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlND
ZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA2MDc1YjBiYWNkYTUxNTVh
NWYxYTIxYzI2MDY4YWQ4ZjJmMjlhZDJlLi5lYTUxYjQ1Yzc4Y2VmNzkyODI3YTE2YmFjN2NkNWE3
MzAzNzQ1MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNDMwLDE2ICs0MzAsMTggQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUNvbnN0cnVjdFR5cGUg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwg
Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdERhdGEgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKGpzQ2xhc3MtPmNhbGxBc0NvbnN0cnVj
dG9yKSB7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDb25zdHJ1Y3RUeXBlOjpI
b3N0OwogICAgICAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3Q7Ci0gICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpOb25l
OworICAgIHJldHVybiBjb25zdHJ1Y3REYXRhOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgpAQCAtNTA1LDE2ICs1MDcsMTggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWMKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KLUNhbGxUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBmb3IgKEpTQ2xhc3NSZWYganND
bGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNz
LT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoanNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsK
KyAgICAgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsVHlwZTo6SG9zdDsKICAgICAgICAgICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGw7Ci0gICAgICAgICAgICByZXR1cm4gQ2Fs
bFR5cGU6Okhvc3Q7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBmYmQ1MWVlMDM0ZmJkNGY2YTMwMThiMGEwY2YzYjRmY2QxZDZmYTY0Li42NTQ4ZjE1
ZmFiNjA4MTA5ZGIxOGExZmJlODc5NjFhMDNkNjA2ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNzM1LDEyICs3MzUsMTEgQEAgSlNWYWx1ZVJlZiBK
U09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVj
dCwgSlNPYmplY3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRDYWxsRGF0YShqc09iamVjdCwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGpzT2Jq
ZWN0KTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IHRvUmVmKGdsb2JhbE9iamVjdCwg
cHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpBUEksIGpzT2JqZWN0
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVGhpc09iamVjdCwgYXJnTGlzdCkpOworICAgIEpTVmFs
dWVSZWYgcmVzdWx0ID0gdG9SZWYoZ2xvYmFsT2JqZWN0LCBwcm9maWxlZENhbGwoZ2xvYmFsT2Jq
ZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwganNPYmplY3QsIGNhbGxEYXRhLCBqc1RoaXNPYmpl
Y3QsIGFyZ0xpc3QpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0
eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXN1
bHQgPSAwOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NjgsOSArNzY3LDggQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvYmplY3QsIHNpemUKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsK
IAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNv
bnN0cnVjdFR5cGUgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRh
KGpzT2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKLSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpOb25lKQorICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERh
dGEodm0sIGpzT2JqZWN0KTsKKyAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENvbnN0cnVj
dFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnTGlzdDsKQEAgLTc4Myw3ICs3ODEsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdENhbGxB
c0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgc2l6ZQog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBKU09iamVjdFJlZiByZXN1bHQgPSB0b1Jl
Zihwcm9maWxlZENvbnN0cnVjdChnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6QVBJLCBq
c09iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCkpOworICAgIEpT
T2JqZWN0UmVmIHJlc3VsdCA9IHRvUmVmKHByb2ZpbGVkQ29uc3RydWN0KGdsb2JhbE9iamVjdCwg
UHJvZmlsaW5nUmVhc29uOjpBUEksIGpzT2JqZWN0LCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KSk7
CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCA4NjZhZWJjOWQ5ZWI2MzkzZmE5ZTdjMGE4MTYx
NzdkOGZkNGFhNjA3Li4zMzcyNmU4YTUxNGZiOWIwZDA5NGU5NTMzNmE1MTBkNDYyMGRhMTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcApAQCAtMTE0LDE3ICsxMTQsMTYgQEAgRXhwZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQ
dHI8RXhjZXB0aW9uPj4gU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKICAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc2Nv
cGUuZXhjZXB0aW9uKCkpOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBpZiAobV9jYWxsSGFuZGxlcikKLSAgICAg
ICAgcmVzdWx0ID0gbV9jYWxsSGFuZGxlcihtX2dsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlvbik7CisgICAg
ICAgIHJlc3VsdCA9IG1fY2FsbEhhbmRsZXIobV9nbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICByZXN1bHQgPSBKU0M6OmNhbGwobV9nbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLCBleGNlcHRpb24pOworICAgICAg
ICByZXN1bHQgPSBKU0M6OmNhbGwobV9nbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwg
dGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXhjZXB0aW9u
KSB7CiAgICAgICAgIC8vIERvIG5vdCB0cmVhdCBhIHRlcm1pbmF0ZWQgZXhlY3V0aW9uIGV4Y2Vw
dGlvbiBhcyBoYXZpbmcgYW4gZXhjZXB0aW9uLiBKdXN0IHRyZWF0IGl0IGFzIGFuIGVtcHR5IHJl
c3VsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaAppbmRleCA0NTU2NzdkMjc1OWJhYjUzZGIzY2E4ZTRkYTJlOGEzM2Y5ZGZkMzA1
Li5hMjM3ZDYzZDYyNDc2N2E5NGMyZDAxNmNkYWNmNTdmNWQ2NTgyNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdEZ1
bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0
YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKTsKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlw
dEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0
YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2Ny
aXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9u
Q2FsbEhhbmRsZXIgaGFuZGxlciA9IG51bGxwdHIpOwogICAgIEV4cGVjdGVkPEpTQzo6SlNWYWx1
ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjYWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDQ0Mzg3NmEyMzM4OTY1NzBmMWQyNjI3
YTI5NjJjN2IzODA2MGE0MmEuLjU4ODJjNGRlZDZlMTkxZmM5YmVkZDgwYmYyZDBkMWE1NDkzZGU2
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MzA0MywxNCArMzA0MywxMyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFk
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbAogICAgIEpTQXJyYXkq
IGFycmF5OwogICAgIHsKICAgICAgICAgSlNGdW5jdGlvbiogaXRlcmF0aW9uRnVuY3Rpb24gPSBn
bG9iYWxPYmplY3QtPml0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpOwotICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRh
KHZtLCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwotICAgICAgICBBU1NFUlQoY2FsbFR5
cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERh
dGEodm0sIGl0ZXJhdGlvbkZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUg
IT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChpdGVyYWJsZSk7CiAgICAgICAgIEFTU0VS
VCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIEpTVmFsdWUgYXJyYXlSZXN1
bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwganNOdWxsKCksIGFyZ3VtZW50cyk7CisgICAgICAgIEpTVmFsdWUgYXJyYXlSZXN1bHQg
PSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uRnVuY3Rpb24sIGNhbGxEYXRhLCBqc051bGwo
KSwgYXJndW1lbnRzKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBu
dWxscHRyKTsKICAgICAgICAgYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGFycmF5UmVzdWx0KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNTFlM2MxYTAzMDUxZjBiNDJhYzUxNjIxNWE5
NWE0NjJjZTQ2YmRiMC4uMWUwNTViM2E3NDVlNjcxYjdmMjYzZWZjOGVhYzIxMTA2NDhmYmVjNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMTU4LDkgKzE1OCw4IEBAIEV4cGVjdGVkPEpTT2JqZWN0
KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uVmFsdWUs
IGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0
byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvblZhbHVlKTsKKyAgICBpZiAoY2Fs
bERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtMTY5LDcgKzE2OCw3IEBAIEV4cGVj
dGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGVJbmplY3RlZFNjCiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaWQpKTsKICAgICBB
U1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gSlND
OjpjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBn
bG9iYWxUaGlzVmFsdWUsIGFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGds
b2JhbE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJn
cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9i
amVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JFbnZpcm9ubWVudC5oCmluZGV4IDc3YzZjZWVlNzEyYWZiMmQ1MjcxNWQwMTdhOWU2
OTIwNzBlY2NlZTMuLmVhZDI4Y2ZlMzNiM2JhZWM1OTRlYjE2ZDVjOGQ4ZGU3NGE1MzBkMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJv
bm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVu
dmlyb25tZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgVk07CiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci10eXBlZGVmIEpTQzo6SlNWYWx1ZSAo
Kkluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxU
eXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKTsKK3R5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rp
b25DYWxsSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6
OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogdHlwZWRlZiBKU0M6OkpTVmFsdWUg
KCpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBK
U0M6OlNvdXJjZUNvZGUmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogY2xhc3MgSW5zcGVjdG9yRW52aXJvbm1l
bnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggYWQ0YjIxNWM1NWE1Y2Q1OGZiYjJmNDJhMTIxNDdjYjQ3MDU4OTI3OC4uODMy
NmQzZjBjOGNkODNlOGFhNDZlOTJkYTE3ZmRlNmM5MTVlYmE5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03ODAsMTUgKzc4
MCwxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSgogICAgICAgICAgICAgY2FzZSBKU09OUFBh
dGhFbnRyeVR5cGVDYWxsOiB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGJh
c2VPYmplY3QuZ2V0KGdsb2JhbE9iamVjdCwgSlNPTlBQYXRoLmxhc3QoKS5tX3BhdGhFbnRyeU5h
bWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNW
YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbikp
OwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpzb25Bcmc7CiAgICAgICAg
ICAgICAgICAganNvbkFyZy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFqc29uQXJnLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBqc1VuZGVmaW5lZCgpIDogYmFzZU9i
amVjdDsKLSAgICAgICAgICAgICAgICBKU09OUFZhbHVlID0gSlNDOjpjYWxsKGdsb2JhbE9iamVj
dCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBqc29uQXJnKTsKKyAg
ICAgICAgICAgICAgICBKU09OUFZhbHVlID0gSlNDOjpjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGpzb25BcmcpOwogICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTg1Nyw3ICs4NTYsNyBAQCBmYWlsZWRKU09OUDoKICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCi1KU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRh
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTg2Nyw3ICs4NjYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2Fs
bChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgaWYg
KHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAKLSAgICBib29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlOjpKUyk7
CisgICAgYm9vbCBpc0pTQ2FsbCA9IChjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpKUyk7CiAg
ICAgSlNTY29wZSogc2NvcGUgPSBudWxscHRyOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSAxICsg
YXJncy5zaXplKCk7IC8vIGltcGxpY2l0ICJ0aGlzIiBwYXJhbWV0ZXIKIApAQCAtODc3LDcgKzg3
Niw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgc2NvcGUgPSBjYWxsRGF0YS5q
cy5zY29wZTsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0
KTsKKyAgICAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpOwogICAg
ICAgICBnbG9iYWxPYmplY3QgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICB9CiAK
QEAgLTkyOSw3ICs5MjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRl
Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU09iamVjdCog
Y29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJn
ZXQpCitKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBu
ZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk0Myw3ICs5
NDIsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTTwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBib29sIGlzSlNDb25zdHJ1Y3QgPSAoY29uc3RydWN0VHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpKUyk7CisgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdERhdGEu
dHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpKUyk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBudWxscHRy
OwogICAgIHNpemVfdCBhcmdzQ291bnQgPSAxICsgYXJncy5zaXplKCk7IC8vIGltcGxpY2l0ICJ0
aGlzIiBwYXJhbWV0ZXIKIApAQCAtOTUzLDcgKzk1Miw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNPCiAgICAgICAgIHNjb3BlID0gY29uc3RydWN0RGF0YS5qcy5zY29wZTsKICAgICAgICAgZ2xv
YmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCk7CisgICAgICAg
IEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCk7CiAgICAg
ICAgIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApp
bmRleCA2NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcxYTY0YmM4Li5mODZhNGZjZTFl
N2FjZDc5OTg0YWM5OGUxOGZmODRkMGQwNDRmMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMTA2LDggKzEwNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNl
Q29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwogICAgICAgICBKU1Zh
bHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0
ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci0gICAgICAg
IEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1
bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlz
dCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ29uc3Ry
dWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CiAgICAgICAgIEpT
VmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIEpTU2NvcGUqKTsKIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2Fs
bEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJl
Z2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGRkNjVmN2JlZWYwNWM3Mjc5M2ZiZWZkN2I0OGJmMWJiNDc0
MWM2ZDMuLmU3ZjI0NWYzZTI5NzJlZTc3ZDY4M2U1YzIyYTc5YTNhNTBlYWFlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA1OCwxMiArMTA1
OCwxMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogICAgIGNhbGxlZUZyYW1lLT5zZXRDb2Rl
QmxvY2soMCk7CiAKICAgICBpZiAoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKSA9
PSBDb2RlRm9yQ2FsbCkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGVlLCBjYWxsRGF0YSk7Ci0gICAg
Ci0gICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwotICAgIAotICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKKyAgICAgICAgYXV0byBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsZWUpOworICAgICAgICBBU1NFUlQoY2FsbERhdGEudHlw
ZSAhPSBDYWxsVHlwZTo6SlMpOworCisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxU
eXBlOjpIb3N0KSB7CiAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsZWVGcmFtZSk7CiAgICAgICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2Jq
ZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xv
YmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsKQEAgLTEwNzgsNyArMTA3Niw3IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVG
cmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIEFTU0VSVChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBl
ID09IENhbGxUeXBlOjpOb25lKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsZWUpKTsK
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNF
bnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLApAQCAtMTA4NiwxMyArMTA4NCwxMSBA
QCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChjYWxsTGlua0lu
Zm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIAotICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwotICAg
IAotICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6OkpTKTsKLSAgICAK
LSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7CisKKyAgICBh
dXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjYWxsZWUpOworICAgIEFT
U0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOworCisgICAgaWYg
KGNvbnN0cnVjdERhdGEudHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7CiAgICAgICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgY2Fs
bGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOwpA
QCAtMTEwNCw4ICsxMTAwLDggQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKIAogICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KHRhZ0NGdW5jdGlvbjx2b2lkKiwgSlNFbnRyeVB0clRhZz4oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFt
ZSkpOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RU
eXBlOjpOb25lKTsKKworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ29uc3RydWN0
VHlwZTo6Tm9uZSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsZWUpKTsKICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDA4OTMzNTMzOGE4ZDIy
NDJjNGE4YjY1ZmE5OTNlZjliYTY1YzY2Yy4uNTBiZmFlNDZjY2FkZDllZjI1ZjBhYWFiZTc3YmRh
MmU5ZDRlNzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE5NDEsOSArMTk0MSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9h
ZGNhc3QoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgY2FsbGJhY2ssIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsYmFjayk7
CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgY2FsbGJhY2siX3MpKSk7CiAgICAgCiAg
ICAgUmVmUHRyPE1lc3NhZ2U+IG1lc3NhZ2U7CkBAIC0xOTYxLDcgKzE5NjAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0
KEpTR2xvYmFsT2JqZWN0KgogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKG1lc3NhZ2UtPmluZGV4
KCkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJncy5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y2FsbChnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzTnVsbCgp
LCBhcmdzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdzKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRS
ZXBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBhYjIyNzFmMmMwOWYwMmQ3NWNlOWIzNjQ4NWYyZThiZmQ0YzFjOGZlLi5lMDU1ZDMzZTAwODU1
YWY3MjNlZDI4Y2UyOTVmM2VkODk3ODQ1MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1MjAsMTIgKzE1MjAsMTAgQEAgc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1l
LCBKU1ZhbHVlIGNhbGxlZSwKICAgICBjYWxsZWVGcmFtZS0+Y2xlYXJSZXR1cm5QQygpOwogCiAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxlZSwgY2Fs
bERhdGEpOwotICAgIAotICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6OkpTKTsK
LSAgICAKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7CisgICAgICAg
IGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGVlKTsKKyAgICAgICAgQVNTRVJU
KGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6OkpTKTsKKworICAgICAgICBpZiAoY2FsbERhdGEu
dHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkgewogICAgICAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgICAgIGNhbGxlZUZyYW1lLT5zZXRD
YWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChj
YWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOwpAQCAtMTUzNCwxOCArMTUz
MiwxNiBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEpTVmFsdWUgY2FsbGVlLAogICAgICAgICAKICAgICAgICAgc2xvd1Bh
dGhMb2coIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAiLCBjYWxsZWUsICJcbiIpOwog
Ci0gICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgIEFT
U0VSVChjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpOb25lKTsKICAgICAgICAgTExJTlRfQ0FM
TF9USFJPVyhnbG9iYWxPYmplY3QsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGdsb2JhbE9iamVj
dCwgY2FsbGVlKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCk7Ci0gICAgCi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNhbGxlZSwgY29uc3Ry
dWN0RGF0YSk7Ci0gICAgCi0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlw
ZTo6SlMpOwotICAgIAotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Okhv
c3QpIHsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNh
bGxlZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpK
Uyk7CisKKyAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENvbnN0cnVjdFR5cGU6Okhvc3Qp
IHsKICAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsK
ICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAg
ICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxs
ZWVGcmFtZSkpOwpAQCAtMTU1NCw3ICsxNTUwLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlw
ZSBoYW5kbGVIb3N0Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVlIGNhbGxlZSwK
ICAgICAKICAgICBzbG93UGF0aExvZygiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAiLCBjYWxsZWUsICJcbiIpOwogCi0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZTo6Tm9uZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpOb25lKTsKICAgICBMTElOVF9DQUxMX1RIUk9XKGdsb2JhbE9iamVjdCwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsZWUpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4
IDJiYmI2YzM0ZGZhMzYzYTE4Nzg1MDgzMDkxYzE2NzA3MDVjN2Q5ZTEuLjBlN2U3NTEyYmY5YzIz
NGI5OWIwZTYyODE5M2E0MGY5ZDRlN2ZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTYxNSwxNyArNjE1LDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGJvb2wgY3VzdG9tSm9pbkNhc2UgPSBmYWxzZTsK
ICAgICAgICAgaWYgKCFmdW5jdGlvbi5pc0NlbGwoKSkKICAgICAgICAgICAgIGN1c3RvbUpvaW5D
YXNlID0gdHJ1ZTsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09
IENhbGxUeXBlOjpOb25lKQogICAgICAgICAgICAgY3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAg
ICAgICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2luQ2FzZSkpCiAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGdsb2JhbE9iamVjdCwgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5j
bGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKSk7CiAKICAgICAgICAgLy8gNC4gUmV0dXJu
IHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1
bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVu
dHMgbGlzdC4KLSAgICAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09iamVjdCkgfHwgY2FsbFR5cGUg
IT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uICE9IGFycmF5UHJv
dG9GdW5jSm9pbikKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSkpOworICAgICAgICBpZiAoIWlzSlNBcnJheSh0
aGlzT2JqZWN0KSB8fCBjYWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSkpOwogICAgIH0K
IAogICAgIEFTU0VSVChpc0pTQXJyYXkodGhpc1ZhbHVlKSk7CkBAIC03MDYsMTAgKzcwNSw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSlNW
YWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBlbGVtZW50LmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBj
b252ZXJzaW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgICAgIGlmIChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGdsb2Jh
bE9iamVjdCwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQs
IGFyZ3VtZW50cyk7CisgICAgICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0s
IGNvbnZlcnNpb25GdW5jdGlvbik7CisgICAgICAgICAgICBpZiAoY2FsbERhdGEudHlwZSAhPSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjYWxsKGdsb2JhbE9i
amVjdCwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsRGF0YSwgZWxlbWVudCwgYXJndW1lbnRzKTsK
ICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FsbERhdGEuY3BwCmluZGV4IGFmOGI2YzI1ZTI1YzE4NDg1NmE1NjZlMTJkOGM1ZTk2
NGFmYjgzNGUuLmY4OGQ2YTgxYTQ5MjU2OTQyOGIyODFkNDQ1NmFiOGViNmEyYzc5ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAKQEAgLTQ0LDI2ICs0NCwy
NSBAQCBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uT2Jq
ZWN0KTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVj
dCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncykpOwogfQogCi1KU1ZhbHVlIGNhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUg
Y2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCitKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpKUyB8
fCBjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7Ci0gICAgcmV0dXJuIHZtLmludGVycHJldGVy
LT5leGVjdXRlQ2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGZ1bmN0aW9uT2JqZWN0KSwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIEFTU0VSVChjYWxsRGF0YS50
eXBlID09IENhbGxUeXBlOjpKUyB8fCBjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpIb3N0KTsK
KyAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVDYWxsKGdsb2JhbE9iamVjdCwgYXNP
YmplY3QoZnVuY3Rpb25PYmplY3QpLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKIH0KIAot
SlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGds
b2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwog
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgcmV0dXJuZWRF
eGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKQEAgLTczLDE4ICs3MiwxOCBAQCBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUgY2FsbAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNWYWx1ZSBwcm9maWxlZENhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUodm0uZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KSwgcmVhc29uKTsKLSAgICByZXR1
cm4gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncyk7CisgICAgcmV0dXJuIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
bk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKLUpTVmFsdWUgcHJvZmls
ZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFz
b24sIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBO
YWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgcHJvZmlsZWRD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24s
IEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBTY3JpcHRQcm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZSh2bS5kZXByZWNhdGVkVk1FbnRy
eUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpLCByZWFzb24pOwotICAgIHJldHVybiBjYWxsKGds
b2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGNhbGwoZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNl
cHRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWxsRGF0YS5oCmluZGV4IGY1YWJmNGRmNGZlMzVkMTZlZjQwZTQ1NTQzYTVlMTIwYTM5
Mjg4NGUuLjU4YTliZTJjOGMyMDI3NWVlN2Q3ZDA5YWEyMzQ0YTA4MDg4NWRjYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAtMzMsMjAgKzMzLDE5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBBcmdMaXN0OwogY2xh
c3MgRXhjZXB0aW9uOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgSlNPYmplY3Q7
CiBjbGFzcyBKU1Njb3BlOwogCi1lbnVtIGNsYXNzIENhbGxUeXBlIDogdW5zaWduZWQgeworZW51
bSBjbGFzcyBDYWxsVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCiAgICAgSG9zdCwKICAgICBK
UwogfTsKIAogc3RydWN0IENhbGxEYXRhIHsKKyAgICBDYWxsVHlwZSB0eXBlIHsgQ2FsbFR5cGU6
Ok5vbmUgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBUYWdn
ZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKQEAgLTU4LDIwICs1NywyMCBAQCBzdHJ1Y3QgQ2Fs
bERhdGEgewogICAgIH07CiB9OwogCi1lbnVtIGNsYXNzIFByb2ZpbGluZ1JlYXNvbiB7CitlbnVt
IGNsYXNzIFByb2ZpbGluZ1JlYXNvbiA6IHVpbnQ4X3QgewogICAgIEFQSSwKICAgICBNaWNyb3Rh
c2ssCiAgICAgT3RoZXIKIH07CiAKLS8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0
IG5lZWQgdG8gZGVhbCB3aXRoIENhbGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBn
b2luZyB0byB1c2UgdGhlbS4KKy8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5l
ZWQgdG8gZGVhbCB3aXRoIENhbGxEYXRhIHVubGVzcyB5b3UgYXJlIGdvaW5nIHRvIHVzZSBpdC4K
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
ZnVuY3Rpb25PYmplY3QsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
OwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CitKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdM
aXN0Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
OwogCi1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHByb2ZpbGVkQ2FsbChKU0dsb2JhbE9iamVj
dCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNv
bnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKLUpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiwgUHJvZmls
aW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERh
dGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYsIE5ha2VkUHRyPEV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgcHJvZmls
ZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiwgUHJvZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0
Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHByb2ZpbGVkQ2FsbChKU0dsb2JhbE9iamVj
dCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQ2FsbERh
dGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYsIE5ha2VkUHRyPEV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDdhNTliOGZkYjBjMjJjY2JiZDI4
ZDgwMzFkYThhMTdlZTA1MzcyMTkuLjU2Y2Y3YmVjOGJhYWIwMmNiMzA5Y2I0YmE5ZmMzYjk2Y2Nk
ZWRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC00
NywxMCArNDcsMTAgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBWaXNpdENoaWxk
cmVuRnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIFZp
c2l0Q2hpbGRyZW5GdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkodmlzaXRDaGlsZHJlbik7
CiAKLSAgICB1c2luZyBHZXRDYWxsRGF0YUZ1bmN0aW9uUHRyID0gQ2FsbFR5cGUgKCopKEpTQ2Vs
bCosIENhbGxEYXRhJik7CisgICAgdXNpbmcgR2V0Q2FsbERhdGFGdW5jdGlvblB0ciA9IENhbGxE
YXRhICgqKShKU0NlbGwqKTsKICAgICBHZXRDYWxsRGF0YUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJM
RV9FTlRSWShnZXRDYWxsRGF0YSk7CiAKLSAgICB1c2luZyBHZXRDb25zdHJ1Y3REYXRhRnVuY3Rp
b25QdHIgPSBDb25zdHJ1Y3RUeXBlICgqKShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAg
dXNpbmcgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyID0gQ29uc3RydWN0RGF0YSAoKikoSlND
ZWxsKik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRS
WShnZXRDb25zdHJ1Y3REYXRhKTsKIAogICAgIHVzaW5nIFB1dEZ1bmN0aW9uUHRyID0gYm9vbCAo
KikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGNlZjA5ZjA2OTdkMjk0ZTYyYTI0NGEx
NTRmYjU4ZmQ5NDFlMGRiZjUuLjY3YTNhZjBhY2ExN2RmZTIzYzEwYjBiMzVlYWVmYzE1YTg3NDgx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMTUwMiwxNCArMTUwMiwxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c3ByZWFkKQogICAgIEpTQXJyYXkqIGFycmF5OwogICAgIHsKICAgICAgICAgSlNGdW5jdGlvbiog
aXRlcmF0aW9uRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPml0ZXJhdG9yUHJvdG9jb2xGdW5jdGlv
bigpOwotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgICAgICBhdXRv
IGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdGlvbkZ1bmN0aW9uKTsKKyAgICAgICAg
QVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChpdGVy
YWJsZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAg
ICAgIEpTVmFsdWUgYXJyYXlSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3VtZW50cyk7CisgICAgICAg
IEpTVmFsdWUgYXJyYXlSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uRnVuY3Rp
b24sIGNhbGxEYXRhLCBqc051bGwoKSwgYXJndW1lbnRzKTsKICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihhcnJheVJlc3VsdCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNw
cAppbmRleCA0N2IyNDc0MThjYTg4ZWZkMWI3OGU2MzExYjY3NWQxZWZhNWE1ZmYwLi4wYjAwZThh
MjJhM2RlNzVjNTQ4Mzg4ZDkyOTUwMDk4MGIwMGVhZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcApAQCAtNDQsMjggKzQ0LDI3IEBAIEpT
T2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBj
b25zdHJ1Y3Rvck9iamVjdCwgSlNWCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBn
ZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7Ci0g
ICAgaWYgKFVOTElLRUxZKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkpIHsK
KyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rv
ck9iamVjdCk7CisgICAgaWYgKFVOTElLRUxZKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0
cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJn
ZXQpKTsgIAorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0KGdsb2JhbE9i
amVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkp
OyAgCiB9CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
LCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJn
ZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEFTU0VSVChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTIHx8IGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZTo6SG9zdCk7Ci0gICAgcmV0dXJuIHZtLmludGVycHJldGVyLT5leGVjdXRlQ29uc3Ry
dWN0KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoY29uc3RydWN0b3JPYmplY3QpLCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOworICAgIEFTU0VSVChjb25zdHJ1
Y3REYXRhLnR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SlMgfHwgY29uc3RydWN0RGF0YS50eXBlID09
IENvbnN0cnVjdFR5cGU6Okhvc3QpOworICAgIHJldHVybiB2bS5pbnRlcnByZXRlci0+ZXhlY3V0
ZUNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGNvbnN0cnVjdG9yT2JqZWN0KSwgY29u
c3RydWN0RGF0YSwgYXJncywgbmV3VGFyZ2V0KTsKIH0KIAotSlNPYmplY3QqIHByb2ZpbGVkQ29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFz
b24sIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJn
cywgSlNWYWx1ZSBuZXdUYXJnZXQpCitKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBj
b25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwgY29u
c3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHByb2ZpbGluZ1Njb3Bl
KHZtLmRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCksIHJlYXNvbik7
Ci0gICAgcmV0dXJuIGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yT2JqZWN0LCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOworICAgIHJldHVy
biBjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0
YSwgYXJncywgbmV3VGFyZ2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggZmI2MTk3NGE3ZGIz
OWM0OTFmOWY5M2JhZWI2Y2FjMTI2MjFmM2JhMi4uNGZkZmM2N2Y3YTAyZDI1MGIwZmM2ZDZhYjhh
NGQzNWRiM2YwNDhlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0
cnVjdERhdGEuaApAQCAtMjksMjQgKzI5LDIyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUZ1
bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcmdMaXN0OwotY2xhc3MgQ2Fs
bEZyYW1lOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBKU1Njb3BlOwogCi1lbnVtIGNsYXNzIENvbnN0cnVjdFR5cGUgOiB1bnNpZ25lZCB7CitlbnVt
IGNsYXNzIENvbnN0cnVjdFR5cGUgOiB1aW50OF90IHsKICAgICBOb25lLAogICAgIEhvc3QsCiAg
ICAgSlMKIH07CiAKIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKKyAgICBDb25zdHJ1Y3RUeXBlIHR5
cGUgeyBDb25zdHJ1Y3RUeXBlOjpOb25lIH07CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb247CkBAIC01OCwyMiAr
NTYsMjIgQEAgc3RydWN0IENvbnN0cnVjdERhdGEgewogICAgIH07CiB9OwogCi0vLyBDb252ZW5p
ZW5jZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBDYWxsRGF0YSBhbmQg
Q2FsbFR5cGUgdW5sZXNzIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZW0uCisvLyBDb252ZW5pZW5j
ZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBDb25zdHJ1Y3REYXRhIHVu
bGVzcyB5b3UgYXJlIGdvaW5nIHRvIHVzZSBpdC4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBKU1ZhbHVlIG5ld1RhcmdldCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZSk7CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25z
dHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKK0pTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGNv
bnN0cnVjdG9yLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsKIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncykKK0FMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBj
b25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewotICAgIHJldHVybiBjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvck9iamVjdCwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3QpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvck9iamVjdCwgY29u
c3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3QpOwogfQogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBQcm9maWxp
bmdSZWFzb24sIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOworSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIHByb2ZpbGVkQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgUHJv
ZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwg
Y29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKIAotQUxXQVlTX0lOTElORSBKU09i
amVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
ZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQorQUxXQVlTX0lOTElORSBKU09iamVjdCogcHJvZmlsZWRDb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNv
biwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICByZXR1cm4gcHJvZmlsZWRDb25z
dHJ1Y3QoZ2xvYmFsT2JqZWN0LCByZWFzb24sIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBjb25zdHJ1Y3Rvck9iamVjdCk7CisgICAgcmV0dXJu
IHByb2ZpbGVkQ29uc3RydWN0KGdsb2JhbE9iamVjdCwgcmVhc29uLCBjb25zdHJ1Y3Rvck9iamVj
dCwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3QpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKaW5kZXggOGU2ODBmNjg0MzBiOWQzMTEyNzE5ZDc5OWE1MjM2MDNkMjNhNzAyMS4u
OGUzNWExZTEwYzNlMWFjYTJmNGNiNDEwZDZhNjEwZjQxODQ3MjBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTExNjcsMTIgKzEx
NjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09O
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBKU1ZhbHVlIHRvSVNPVmFsdWUg
PSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRvSVNPU3RyaW5n
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b0lTT1ZhbHVl
KTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvSVNPU3RyaW5nIGlz
IG5vdCBhIGZ1bmN0aW9uIl9zKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwg
KnZtLmVtcHR5TGlzdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwg
YXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxEYXRhLCBvYmplY3QsICp2bS5lbXB0eUxpc3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IDY2Y2M3NTA3MzkwYmE0MWUwODg5Y2Q2
YjZjNTAwZTc2YjAyMTYwYjUuLmMxOGM5ZTBmNGI1MDdlM2U5ZWIwMjQ0ZTNlNzA2MzFjMjI0Njhm
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cApAQCAtNTUsOSArNTUsOCBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldAogCiAgICAgSlNPYmpl
Y3QqIGdldHRlciA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIo
KTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
dGVyLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChnbG9iYWxPYmplY3QsIGdldHRlciwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpKTsKKyAgICBhdXRvIGNhbGxEYXRhID0g
Z2V0Q2FsbERhdGEodm0sIGdldHRlcik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBj
YWxsKGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBjYWxsRGF0YSwgYmFzZSwgQXJnTGlzdCgpKSk7CiB9
CiAKIGJvb2wgY2FsbFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21h
TW9kZSkKQEAgLTc2LDEwICs3NSw5IEBAIGJvb2wgY2FsbFNldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyCiAgICAgYXJn
cy5hcHBlbmQodmFsdWUpOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0g
ICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7CisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBzZXR0ZXIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICBjYWxsKGdsb2JhbE9iamVjdCwgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2Us
IGFyZ3MpOworICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBzZXR0ZXIsIGNhbGxEYXRhLCBiYXNlLCBh
cmdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCA1NDJmNzMwYjE5YTVkZTIwMjJm
NjAwMTA5N2NhNjVkZWNjODQxMzU4Li45Y2JhYjU3NGNiZjIzNWY1NTQyNTliMWRlNTBkYWM4NDkw
MmJhMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcApAQCAtODcsMjEgKzg3LDI2IEBAIGNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1
bmN0aW9uOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1D
YWxsVHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxE
YXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpT
Q2VsbCogY2VsbCkKIHsKICAgICBhdXRvKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0
aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uLT5tX2Z1bmN0aW9uRm9yQ2FsbCk7CisK
KyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBjYWxsRGF0YS50eXBlID0gQ2FsbFR5cGU6Okhv
c3Q7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gZnVuY3Rpb24tPm1fZnVuY3Rpb25G
b3JDYWxsOwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY2FsbERhdGE7
CiB9CiAKLUNvbnN0cnVjdFR5cGUgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDb25zdHJ1Y3REYXRh
IEludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsKQogeworICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBhdXRvKiBmdW5jdGlvbiA9IGpzQ2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKGZ1bmN0aW9uLT5tX2Z1bmN0aW9u
Rm9yQ29uc3RydWN0ID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKQotICAgICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGZ1bmN0aW9uLT5tX2Z1bmN0aW9uRm9yQ29uc3RydWN0OwotICAgIHJldHVybiBDb25z
dHJ1Y3RUeXBlOjpIb3N0OworICAgIGlmIChmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0cnVj
dCAhPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcikgeworICAgICAgICBjb25zdHJ1Y3RE
YXRhLnR5cGUgPSBDb25zdHJ1Y3RUeXBlOjpIb3N0OworICAgICAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGZ1bmN0aW9uLT5tX2Z1bmN0aW9uRm9yQ29uc3RydWN0OworICAgIH0K
KyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAogY29uc3QgU3RyaW5nIEludGVybmFsRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMDBkYjExZTcxYjgyNGQx
YmI4MjNmMzhlMGVkOThhMDYxNmI3ZGIwZC4uODM2ZDU2ZmRjMjZhNzE3ZTczOGM2ODVlZGMyZmNj
YTFlMDdlMWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaApAQCAtODgsOCArODgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFz
cyBOYW1lQWRkaXRpb25Nb2RlIHsgV2l0aFN0cnVjdHVyZVRyYW5zaXRpb24sIFdpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uIH07CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmFtZUFkZGl0aW9uTW9kZSA9IE5hbWVBZGRp
dGlvbk1vZGU6OldpdGhTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBD
b25zdHJ1Y3REYXRhIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOwogCiAgICAgVGFnZ2Vk
TmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rp
b24gbV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4IDc3NzNjMTdhOTAwMDMyZWFm
ZjU0M2JiNjJmZjUwMTlkMDQ3NDhhZjguLmRhNGE4NTk1NTY1NjBiN2E1MmYyNGUyOTRmMTUyN2I2
OTMzNjFhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRl
cmF0b3JPcGVyYXRpb25zLmNwcApAQCAtNDIsMTYgKzQyLDE1IEBAIEpTVmFsdWUgaXRlcmF0b3JO
ZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRp
b25SZWNvCiAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvcjsK
ICAgICBKU1ZhbHVlIG5leHRGdW5jdGlvbiA9IGl0ZXJhdGlvblJlY29yZC5uZXh0TWV0aG9kOwog
Ci0gICAgQ2FsbERhdGEgbmV4dEZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgbmV4dEZ1
bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgbmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rp
b25DYWxsRGF0YSk7Ci0gICAgaWYgKG5leHRGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQorICAgIGF1dG8gbmV4dEZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgbmV4
dEZ1bmN0aW9uKTsKKyAgICBpZiAobmV4dEZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbmV4dEZ1bmN0aW9uQXJndW1lbnRzOwog
ICAgIGlmICghYXJndW1lbnQuaXNFbXB0eSgpKQogICAgICAgICBuZXh0RnVuY3Rpb25Bcmd1bWVu
dHMuYXBwZW5kKGFyZ3VtZW50KTsKICAgICBBU1NFUlQoIW5leHRGdW5jdGlvbkFyZ3VtZW50cy5o
YXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3Qs
IG5leHRGdW5jdGlvbiwgbmV4dEZ1bmN0aW9uQ2FsbFR5cGUsIG5leHRGdW5jdGlvbkNhbGxEYXRh
LCBpdGVyYXRvciwgbmV4dEZ1bmN0aW9uQXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGNhbGwoZ2xvYmFsT2JqZWN0LCBuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRhLCBp
dGVyYXRvciwgbmV4dEZ1bmN0aW9uQXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKQEAgLTEw
NSw5ICsxMDQsOCBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ2FsbERhdGEgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSByZXR1cm5GdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHJldHVybkZ1bmN0aW9u
LCByZXR1cm5GdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAocmV0dXJuRnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCByZXR1cm5GdW5jdGlvbik7CisgICAgaWYgKHJldHVybkZ1bmN0aW9u
Q2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBl
eGNlcHRpb24pOwogICAgICAgICBlbHNlCkBAIC0xMTcsNyArMTE1LDcgQEAgdm9pZCBpdGVyYXRv
ckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVy
YXRpb25SZWNvcmQKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHJldHVybkZ1bmN0aW9uQXJn
dW1lbnRzOwogICAgIEFTU0VSVCghcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHJldHVy
bkZ1bmN0aW9uLCByZXR1cm5GdW5jdGlvbkNhbGxUeXBlLCByZXR1cm5GdW5jdGlvbkNhbGxEYXRh
LCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzKTsKKyAg
ICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHJldHVybkZ1bmN0aW9u
LCByZXR1cm5GdW5jdGlvbkNhbGxEYXRhLCBpdGVyYXRpb25SZWNvcmQuaXRlcmF0b3IsIHJldHVy
bkZ1bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBleGNlcHRpb24pOwpAQCAtMTY1
LDggKzE2Myw3IEBAIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dCh2YWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7
Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVj
dCwgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
IlN5bWJvbC5pdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpT
VmFsdWUgYXBwbHlNZXRob2QgPSBvYmplY3QtPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxE
YXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgIlN5bWJvbC5pdGVyYXRvciBw
cm9wZXJ0eSBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKIAogICAgIHJldHVybiAhYXBwbHlNZXRob2QuaXNVbmRlZmluZWQoKTsK
QEAgLTE3OCw4ICsxNzUsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9yTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5
cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBtZXRob2QgPSBvYmplY3QtPmdldE1ldGhvZChnbG9i
YWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsK
KyAgICBKU1ZhbHVlIG1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9y
IHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwganNVbmRlZmluZWQoKSk7CiAKICAgICByZXR1cm4gbWV0aG9kOwpAQCAtMTkwLDE1
ICsxODYsMTQgQEAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgQ2FsbERhdGEgaXRlcmF0b3JNZXRob2RDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBpdGVy
YXRvck1ldGhvZENhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yTWV0aG9kLCBpdGVy
YXRvck1ldGhvZENhbGxEYXRhKTsKLSAgICBpZiAoaXRlcmF0b3JNZXRob2RDYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gaXRlcmF0b3JNZXRob2RDYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCBpdGVyYXRvck1ldGhvZCk7CisgICAgaWYgKGl0ZXJhdG9yTWV0aG9kQ2FsbERh
dGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBBcmdM
aXN0IGl0ZXJhdG9yTWV0aG9kQXJndW1lbnRzOwotICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxs
KGdsb2JhbE9iamVjdCwgaXRlcmF0b3JNZXRob2QsIGl0ZXJhdG9yTWV0aG9kQ2FsbFR5cGUsIGl0
ZXJhdG9yTWV0aG9kQ2FsbERhdGEsIG9iamVjdCwgaXRlcmF0b3JNZXRob2RBcmd1bWVudHMpOwor
ICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0b3JNZXRob2Qs
IGl0ZXJhdG9yTWV0aG9kQ2FsbERhdGEsIG9iamVjdCwgaXRlcmF0b3JNZXRob2RBcmd1bWVudHMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIWl0ZXJh
dG9yLmlzT2JqZWN0KCkpIHsKQEAgLTIyMCwxNSArMjE1LDE0IEBAIEl0ZXJhdGlvblJlY29yZCBp
dGVyYXRvckZvckl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
aXRlcmFiCiAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgCi0gICAgQ2FsbERhdGEgaXRlcmF0b3JGdW5j
dGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHZtLCBpdGVyYXRvckZ1bmN0aW9uLCBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEp
OwotICAgIGlmIChpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
KyAgICBhdXRvIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBpdGVy
YXRvckZ1bmN0aW9uKTsKKyAgICBpZiAoaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgQXJnTGlzdCBpdGVyYXRv
ckZ1bmN0aW9uQXJndW1lbnRzOwotICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGdsb2JhbE9i
amVjdCwgaXRlcmF0b3JGdW5jdGlvbiwgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlLCBpdGVyYXRv
ckZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhYmxlLCBpdGVyYXRvckZ1bmN0aW9uQXJndW1lbnRzKTsK
KyAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gY2FsbChnbG9iYWxPYmplY3QsIGl0ZXJhdG9yRnVuY3Rp
b24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSwgaXRlcmFibGUsIGl0ZXJhdG9yRnVuY3Rpb25B
cmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBp
ZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDViNDE4ZjFmOTdhNTUwNWQ2ZjhkZmQ3
ZWEwYmQ1YzNmMjQ2NTk5OGUuLjZlNTRjNjcyNjk1NzM2MjRiMGVlZDY5MTZlNTdjOTkxNTlmYzZj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcApAQCAtNTcsMTAgKzU3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICAg
ICAgLy8gRm9yY2UgdGhlIGV4ZWN1dGFibGUgdG8gY2FjaGUgaXRzIGFyaXR5IGVudHJ5cG9pbnQu
CiAgICAgICAgIGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoQ29kZUZvckNhbGwsIE11c3RDaGVj
a0FyaXR5KTsKICAgICB9Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0aW9uLCBj
YWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpOwor
ICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdl
dEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVu
Y3Rpb24sIGNhbGxEYXRhLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtODUsMTAgKzg0
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICB9CiAKICAgICBKU09iamVjdCogdGFy
Z2V0RnVuY3Rpb24gPSBib3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpOwotICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRh
cmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
OjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
YWxsKGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91
bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCB0YXJnZXRGdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUg
IT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEsIGJv
dW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTA4LDE0ICsxMDYs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlv
bkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOwotICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24s
IGNvbnN0cnVjdERhdGEpOwotICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5
cGU6Ok5vbmUpOworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEoZ2xv
YmFsT2JqZWN0LT52bSgpLCB0YXJnZXRGdW5jdGlvbik7CisgICAgQVNTRVJUKGNvbnN0cnVjdERh
dGEudHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gY2FsbEZyYW1lLT5uZXdUYXJnZXQoKTsKICAgICBpZiAobmV3VGFyZ2V0ID09IGJvdW5kRnVu
Y3Rpb24pCiAgICAgICAgIG5ld1RhcmdldCA9IHRhcmdldEZ1bmN0aW9uOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNv
bnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24s
IGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xNDAsMTQgKzEzNywxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdAogICAgIH0KIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlv
biA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7Ci0gICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0
cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNvbnN0cnVj
dERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbik7CisgICAgQVNTRVJU
KGNvbnN0cnVjdERhdGEudHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKIAogICAgIEpTVmFs
dWUgbmV3VGFyZ2V0ID0gY2FsbEZyYW1lLT5uZXdUYXJnZXQoKTsKICAgICBpZiAobmV3VGFyZ2V0
ID09IGJvdW5kRnVuY3Rpb24pCiAgICAgICAgIG5ld1RhcmdldCA9IHRhcmdldEZ1bmN0aW9uOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChn
bG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
LCBhcmdzLCBuZXdUYXJnZXQpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBpc0JvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKaW5kZXggMmQ4MjZkNDFlOWJjZmZhYjk1NjIwYmEwNzg3NDU5ZTY3MDFiMTc2Ni4uNjdi
ZDFjMjFjMTBkMDZjOWZmZjYzNzc4NmEyY2RjYTFjNGUxMjVkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtODMsOSArODMsOSBAQCB1c2luZyBXcml0
ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNf
c2FtZTxULCBVbmtubwogCiBlbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgOiB1aW50OF90IHsg
Tm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwogCi1lbnVtIGNsYXNz
IENhbGxUeXBlIDogdW5zaWduZWQ7CitlbnVtIGNsYXNzIENhbGxUeXBlIDogdWludDhfdDsKIHN0
cnVjdCBDYWxsRGF0YTsKLWVudW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVuc2lnbmVkOworZW51
bSBjbGFzcyBDb25zdHJ1Y3RUeXBlIDogdWludDhfdDsKIHN0cnVjdCBDb25zdHJ1Y3REYXRhOwog
CiB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCAwNjU5NzllODM1MjI0YTZjMjdhODRkZGZmNmIyNmY0YmJl
N2NmYmFhLi4wMjY0MTMyMmU1NTM3YmUzZTI4YTgyYzg0YTQ2MjQ1OTc1OWE4ZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTk1LDIwICs5NSwxNCBAQCBj
b25zdCBKU09iamVjdCogSlNDZWxsOjpnZXRPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBpc09i
amVjdCgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKSA6IDA7CiB9CiAKLUNh
bGxUeXBlIEpTQ2VsbDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQor
Q2FsbERhdGEgSlNDZWxsOjpnZXRDYWxsRGF0YShKU0NlbGwqKQogewotICAgIGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZSA9IG51bGxwdHI7Ci0gICAgY2FsbERhdGEuanMuc2NvcGUgPSBu
dWxscHRyOwotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIENhbGxUeXBlOjpOb25lOworICAgIHJldHVybiB7IH07CiB9CiAKLUNvbnN0cnVjdFR5cGUg
SlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCitDb25zdHJ1Y3REYXRhIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKQog
ewotICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKLSAg
ICBjb25zdHJ1Y3REYXRhLmpzLnNjb3BlID0gbnVsbHB0cjsKLSAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCmluZGV4IGFhMmUxZDI0MzM4ZTIyZjE3YWQ5NGRmYjdiM2Y5YWE3ZGNkZjhl
ODAuLmM2NTVlOGQ3MjU4MzVlNTczNTIyYmUyZTU1MGMzNWZhMWEyNDZmM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xNDksOCArMTQ5LDggQEAgcHVibGljOgog
ICAgIC8vIHRoaXMgaXMgYW4gb2JqZWN0LCB0aGVuIHR5cGVvZiB3aWxsIHJldHVybiAiZnVuY3Rp
b24iIGluc3RlYWQgb2YgIm9iamVjdCIuIFRoZXNlIG1ldGhvZHMKICAgICAvLyBjYW5ub3QgY2hh
bmdlIHRoZWlyIG1pbmRzIGFuZCBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGV5IGFyZSBzb21ldGlt
ZXMgY2FsbGVkIGZyb20gY29tcGlsZXIKICAgICAvLyB0aHJlYWRzLgotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgQ29uc3RydWN0RGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwogCiAgICAgLy8g
QmFzaWMgY29udmVyc2lvbnMuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1ByaW1p
dGl2ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGYzMmYy
OWQxZTE4ZDBiZGU3MTFmNjQ4MDhhNGJiMTU4M2ExMDQ0YzkuLjA4NjUyOTk1MDY5ODU3ODcwOTA3
NDNlMmYzMDg2NmQyYTBhZDQzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIzMywxNyArMjMzLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU0NlbGw6OmlzRnVuY3Rpb24oVk0mIHZtKQogewogICAgIGlmICh0eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpbmxpbmVUeXBlRmxhZ3Mo
KSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKSB7Ci0gICAgICAgIENhbGxEYXRhIGlnbm9yZWRDYWxs
RGF0YTsKLSAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGhpcywg
aWdub3JlZENhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKLSAgICB9CisgICAgaWYgKGlubGlu
ZVR5cGVGbGFncygpICYgT3ZlcnJpZGVzR2V0Q2FsbERhdGEpCisgICAgICAgIHJldHVybiBtZXRo
b2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmU7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ29uc3RydWN0b3Io
Vk0mIHZtKQogewotICAgIENvbnN0cnVjdERhdGEgaWdub3JlZENvbnN0cnVjdERhdGE7Ci0gICAg
cmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzLCBpZ25vcmVkQ29u
c3RydWN0RGF0YSkgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZTsKKyAgICByZXR1cm4gbWV0aG9kVGFi
bGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9u
ZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGFmMDhi
OGEzMmI2OTdhZmJjMGU5YzljM2VjZjc0NmQxMGQwYWViZTYuLmJlZTQxNDdlMWQzMTIzZGEzMDcy
OWM5M2NmYTlmYWNkM2ZmNDk2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0yNzQsMTYgKzI3NCwyMSBAQCB2b2lkIEpTRnVuY3Rpb246OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihiaXR3aXNlX2Nhc3Q8
dWludHB0cl90Pih0aGlzT2JqZWN0LT5tX2V4ZWN1dGFibGVPclJhcmVEYXRhKSAmIH5yYXJlRGF0
YVRhZykpOwogfQogCi1DYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNl
bGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTRnVuY3Rpb246OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKwogICAgIEpTRnVuY3Rp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxs
VHlwZTo6SG9zdDsKICAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gdGhpc09iamVj
dC0+bmF0aXZlRnVuY3Rpb24oKTsKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAg
IH0gZWxzZSB7CisgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsVHlwZTo6SlM7CisgICAgICAg
IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpOworICAgICAgICBjYWxsRGF0YS5qcy5zY29wZSA9IHRoaXNPYmplY3QtPnNjb3BlKCk7CiAg
ICAgfQotICAgIGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IHRoaXNPYmplY3QtPmpz
RXhlY3V0YWJsZSgpOwotICAgIGNhbGxEYXRhLmpzLnNjb3BlID0gdGhpc09iamVjdC0+c2NvcGUo
KTsKLSAgICByZXR1cm4gQ2FsbFR5cGU6OkpTOworCisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQog
CiBjbGFzcyBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgewpAQCAtNjkxLDI0ICs2OTYsMjYgQEAg
Ym9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogLy8gRUNNQSAxMy4yLjIgW1tDb25zdHJ1Y3Rd
XQotQ29uc3RydWN0VHlwZSBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2Vs
bCwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdERhdGEgSlNGdW5jdGlv
bjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwpCiB7Ci0gICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CisgICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwogCisgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsK
LSAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkgPT0gY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6
Tm9uZTsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSB0aGlzT2JqZWN0
LT5uYXRpdmVDb25zdHJ1Y3RvcigpOwotICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9z
dDsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkgIT0gY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdERhdGEudHlw
ZSA9IENvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpOworICAgICAgICBpZiAoZnVuY3Rpb25F
eGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgIT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDb25zdHJ1Y3RU
eXBlOjpKUzsKKyAgICAgICAgICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxl
ID0gZnVuY3Rpb25FeGVjdXRhYmxlOworICAgICAgICAgICAgY29uc3RydWN0RGF0YS5qcy5zY29w
ZSA9IHRoaXNPYmplY3QtPnNjb3BlKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpOwotICAgIGlmIChmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpCi0gICAgICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlOjpOb25lOwotCi0gICAgY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUg
PSBmdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY29uc3RydWN0RGF0YS5qcy5zY29wZSA9IHRoaXNP
YmplY3QtPnNjb3BlKCk7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6OkpTOworICAgIHJldHVy
biBjb25zdHJ1Y3REYXRhOwogfQogCiBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZN
JiB2bSwgSlNPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCA3YjAyYTk1ZGYwMDYzODk0NWNmOWE2ODdiYmY3YzQyNTVmZTliNDU5
Li42MWIwYzFjZDczYjE4YmM1YmU5ZmJhYTAyYTU4NzZkMDJkYmJiOGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMTgsOCArMTE4LDggQEAgcHVi
bGljOgogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKCk7CiAgICAgVGFn
Z2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IoKTsKIAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBDb25zdHJ1Y3REYXRhIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOwogCiAgICAgc3Rh
dGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwCmluZGV4IGUxZjBhYjU0NjQyZjVhMDViOTA2N2I4OTMxN2JlNTY0ODRkY2UzOTEuLjQ1
YjJhM2Y1N2ZmYTFiY2E0YmJhNTcwYzk0OWEzMjM4MTg5OTExY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKQEAgLTYyLDE2
ICs2MiwxNSBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFByb21pc2U6OnRoZW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNGdW5jdAogCiAgICAgSlNPYmplY3QqIGZ1bmN0
aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudGhlblB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsK
LSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRh
LnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQob25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCA6
IGpzVW5kZWZpbmVkKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQob25SZWplY3RlZCA/IG9uUmVq
ZWN0ZWQgOiBqc1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxv
d2VkKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNJbnRlcm5h
bFByb21pc2UqPihjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgdGhpcywgYXJndW1lbnRzKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganND
YXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgdGhpcywgYXJndW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAppbmRleCBiMDNjYzBj
ZTczZjA2YmM1NzgzY2RlMWViNzk1N2U4Yzk2ZTU3NmI5Li44ZGM5Y2QyNWUyYWM4ZDI3YWUwOGY4
YjZmZmRmZTZkMGM1NzAyMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01pY3JvdGFzay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNaWNyb3Rhc2suY3BwCkBAIC03Niw5ICs3Niw4IEBAIHZvaWQgSlNNaWNyb3Rhc2s6OnJ1bihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBD
YWxsRGF0YSBoYW5kbGVyQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgaGFuZGxlckNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEodm0sIG1fam9iLmdldCgpLCBoYW5kbGVyQ2FsbERhdGEpOwotICAgIEFTU0VS
VChoYW5kbGVyQ2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gaGFuZGxlckNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIG1fam9iLmdldCgpKTsKKyAgICBBU1NFUlQoaGFuZGxl
ckNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgaGFuZGxlckFyZ3VtZW50czsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5k
ZXggPCBtYXhBcmd1bWVudHM7ICsraW5kZXgpIHsKQEAgLTkzLDcgKzkyLDcgQEAgdm9pZCBKU01p
Y3JvdGFzazo6cnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgaWYgKFVOTElL
RUxZKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkpCiAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZGVidWdnZXIoKS0+d2lsbFJ1bk1pY3JvdGFzaygpOwogCi0gICAgcHJvZmlsZWRDYWxsKGdsb2Jh
bE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpNaWNyb3Rhc2ssIG1fam9iLmdldCgpLCBoYW5kbGVy
Q2FsbFR5cGUsIGhhbmRsZXJDYWxsRGF0YSwganNVbmRlZmluZWQoKSwgaGFuZGxlckFyZ3VtZW50
cyk7CisgICAgcHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpNaWNy
b3Rhc2ssIG1fam9iLmdldCgpLCBoYW5kbGVyQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGhhbmRs
ZXJBcmd1bWVudHMpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCAyNzRk
MmNjZjk1MzEyODlmNjBlZDU5ZDhjYWM1NWY3MWE5YTc5M2M0Li44ZjJiYjA4N2FmZDM4MTIxMDdk
MjUzNzA0ODBkNWE5MWNkOWNjNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0xMzEsMTQgKzEzMSwxMyBAQCBKU0FycmF5KiBK
U01vZHVsZUxvYWRlcjo6ZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVw
ZW5kZW5jeUtleXNJZkV2YWx1YXRlZFB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsK
LSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRh
LnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKIAotICAgIEpTVmFsdWUgcmVzdWx0
ID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMs
IGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+
KHZtLCByZXN1bHQpOwpAQCAtMTUxLDkgKzE1MCw4IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6
OnByb3ZpZGVGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwK
IAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb3ZpZGVGZXRjaFB1Ymxp
Y05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRh
KHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAg
ICBTb3VyY2VDb2RlIHNvdXJjZSB7IHNvdXJjZUNvZGUgfTsKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CkBAIC0xNjEsNyArMTU5LDcgQEAgSlNWYWx1ZSBKU01vZHVsZUxvYWRl
cjo6cHJvdmlkZUZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5
LAogICAgIGFyZ3VtZW50cy5hcHBlbmQoSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFdURk1vdmUo
c291cmNlKSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXMs
IGFyZ3VtZW50cykpOwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6Omxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpA
QCAtMTcxLDkgKzE2OSw4IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKICAgICBKU09iamVj
dCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb2FkQW5kRXZhbHVhdGVNb2R1bGVQdWJsaWNOYW1l
KCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
dm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
OjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rp
b24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1v
ZHVsZU5hbWUpOwpAQCAtMTgxLDcgKzE3OCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAg
ICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSBwcm9taXNlID0gY2FsbChnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7Cisg
ICAgSlNWYWx1ZSBwcm9taXNlID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0
YSwgdGhpcywgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKICAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4ocHJvbWlzZSk7CiB9
CkBAIC0xOTMsOSArMTkwLDggQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjps
b2FkTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIEpTT2Jq
ZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvYWRNb2R1bGVQdWJsaWNOYW1lKCkpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsK
KyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAg
IEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZU5hbWUp
OwpAQCAtMjAzLDcgKzE5OSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6
bG9hZE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgYXJndW1l
bnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSBwcm9taXNlID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1
ZSBwcm9taXNlID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAg
ICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4ocHJvbWlzZSk7CiB9CkBAIC0yMTUs
MTYgKzIxMSwxNSBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgSlNPYmplY3QqIGZ1
bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubGlua0FuZEV2YWx1YXRlTW9kdWxlUHVibGljTmFtZSgpKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsK
KyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAg
IEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZUtleSk7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJn
dW1lbnRzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsKGdsb2JhbE9iamVj
dCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAogSlNJbnRlcm5h
bFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBw
YXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMzQsOSArMjI5LDggQEAgSlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIGF1dG8qIGZ1bmN0aW9uID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVxdWVzdEltcG9ydE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwgbW9kdWxlS2V5LmltcGwoKSkpOwpA
QCAtMjQ0LDcgKzIzOCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVx
dWVzdEltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXJndW1lbnRz
LmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxv
d2VkKCkpOwogCi0gICAgSlNWYWx1ZSBwcm9taXNlID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSBw
cm9taXNlID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpcywgYXJn
dW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBy
ZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4ocHJvbWlzZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGIzNzQ1OGI3NzZjOWM0
ZDFhYTRhOGU1NDIwYTliOTAxYzkxYTNiNmYuLmRmMWEzNDJmMmZhNWYxYmE3MGFjYzY0YWU0YTlm
MTM5NmU4NzE0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCkBAIC0xMjEsMTMgKzEyMSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5kZW50KCk7
CiAgICAgdm9pZCB1bmluZGVudCgpOwogICAgIHZvaWQgc3RhcnROZXdMaW5lKFN0cmluZ0J1aWxk
ZXImKSBjb25zdDsKLSAgICBib29sIGlzQ2FsbGFibGVSZXBsYWNlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwbGFjZXJDYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZTsgfQorICAgIGJvb2wgaXNDYWxs
YWJsZVJlcGxhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYWNlckNhbGxEYXRhLnR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmU7IH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBjb25zdCBtX2dsb2JhbE9i
amVjdDsKICAgICBKU1ZhbHVlIG1fcmVwbGFjZXI7CiAgICAgYm9vbCBtX3VzaW5nQXJyYXlSZXBs
YWNlciB7IGZhbHNlIH07CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbV9hcnJheVJlcGxhY2VyUHJv
cGVydHlOYW1lczsKLSAgICBDYWxsVHlwZSBtX3JlcGxhY2VyQ2FsbFR5cGUgeyBDYWxsVHlwZTo6
Tm9uZSB9OwogICAgIENhbGxEYXRhIG1fcmVwbGFjZXJDYWxsRGF0YTsKICAgICBTdHJpbmcgbV9n
YXA7CiAKQEAgLTIzMSw4ICsyMzAsOCBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZpZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSByZXBsYWNlciwgSlNWYWx1ZQogICAgIGlm
IChtX3JlcGxhY2VyLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIHJlcGxhY2VyT2Jq
ZWN0ID0gYXNPYmplY3QobV9yZXBsYWNlcik7CiAKLSAgICAgICAgbV9yZXBsYWNlckNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VyT2JqZWN0LCBtX3JlcGxhY2VyQ2FsbERhdGEpOwot
ICAgICAgICBpZiAobV9yZXBsYWNlckNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAg
ICAgIG1fcmVwbGFjZXJDYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlck9iamVjdCk7
CisgICAgICAgIGlmIChtX3JlcGxhY2VyQ2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkg
ewogICAgICAgICAgICAgYm9vbCBpc0FycmF5UmVwbGFjZXIgPSBKU0M6OmlzQXJyYXkoZ2xvYmFs
T2JqZWN0LCByZXBsYWNlck9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCApOwogICAgICAgICAgICAgaWYgKGlzQXJyYXlSZXBsYWNlcikgewpAQCAtMzA0LDE1
ICszMDMsMTQgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUYKICAgICBKU1ZhbHVlIHRvSlNPTkZ1
bmN0aW9uID0gYmFzZVZhbHVlLmdldChtX2dsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
dG9KU09OKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
dG9KU09ORnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b0pTT05GdW5jdGlv
bik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJl
dHVybiBiYXNlVmFsdWU7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFy
Z3MuYXBwZW5kKHByb3BlcnR5TmFtZS52YWx1ZShtX2dsb2JhbE9iamVjdCkpOwogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
Y2FsbChtX2dsb2JhbE9iamVjdCwgYXNPYmplY3QodG9KU09ORnVuY3Rpb24pLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGJhc2VWYWx1ZSwgYXJncykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY2FsbChtX2dsb2JhbE9iamVjdCwgYXNPYmplY3QodG9KU09ORnVuY3Rpb24pLCBjYWxsRGF0
YSwgYmFzZVZhbHVlLCBhcmdzKSk7CiB9CiAKIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQg
U3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSG9sZGVyJiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFt
ZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQpAQCAtMzMzLDcgKzMzMSw3IEBAIFN0cmlu
Z2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFs
dWUoU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogICAgICAgICBB
U1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAgQVNTRVJUKGhvbGRlci5vYmpl
Y3QoKSk7Ci0gICAgICAgIHZhbHVlID0gY2FsbChtX2dsb2JhbE9iamVjdCwgbV9yZXBsYWNlciwg
bV9yZXBsYWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlci5vYmplY3QoKSwg
YXJncyk7CisgICAgICAgIHZhbHVlID0gY2FsbChtX2dsb2JhbE9iamVjdCwgbV9yZXBsYWNlciwg
bV9yZXBsYWNlckNhbGxEYXRhLCBob2xkZXIub2JqZWN0KCksIGFyZ3MpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTdHJpbmdpZnlGYWlsZWQpOwogICAgIH0KIApAQCAtNTkx
LDEwICs1ODksOSBAQCBjbGFzcyBXYWxrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdh
bGtlcik7CiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiBwdWJsaWM6Ci0gICAgV2Fs
a2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2Fs
bFR5cGUgY2FsbFR5cGUsIENhbGxEYXRhIGNhbGxEYXRhKQorICAgIFdhbGtlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxEYXRhIGNhbGxEYXRh
KQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2Z1
bmN0aW9uKGZ1bmN0aW9uKQotICAgICAgICAsIG1fY2FsbFR5cGUoY2FsbFR5cGUpCiAgICAgICAg
ICwgbV9jYWxsRGF0YShjYWxsRGF0YSkKICAgICB7CiAgICAgfQpAQCAtNjA2LDE0ICs2MDMsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgYXJncy5hcHBlbmQocHJvcGVydHkpOwogICAgICAgICBhcmdz
LmFwcGVuZCh1bmZpbHRlcmVkKTsKICAgICAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgICAgIHJldHVybiBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBtX2Z1bmN0aW9uLCBtX2Nh
bGxUeXBlLCBtX2NhbGxEYXRhLCB0aGlzT2JqLCBhcmdzKTsKKyAgICAgICAgcmV0dXJuIGNhbGwo
bV9nbG9iYWxPYmplY3QsIG1fZnVuY3Rpb24sIG1fY2FsbERhdGEsIHRoaXNPYmosIGFyZ3MpOwog
ICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBIb2xkZXI7CiAKICAgICBKU0dsb2JhbE9iamVjdCog
bV9nbG9iYWxPYmplY3Q7CiAgICAgSlNPYmplY3QqIG1fZnVuY3Rpb247Ci0gICAgQ2FsbFR5cGUg
bV9jYWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX2NhbGxEYXRhOwogfTsKIApAQCAtODAwLDEyICs3
OTYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh1bmZpbHRlcmVkKTsKICAgICAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0g
Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgV2Fsa2VyIHdhbGtlcihnbG9iYWxPYmplY3QsIGFz
T2JqZWN0KGZ1bmN0aW9uKSwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBXYWxrZXIgd2Fsa2Vy
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsRGF0YSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh3YWxrZXIud2Fsayh1bmZpbHRlcmVkKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA5YzVkNTVhOTM4OGRjNjE4
MTVjNmVmNDY3NTZlNzdhMGRhYjBiMjdmLi4wZTgwNmEzOGMzNzYyMDQwNTczZjJhYjAxMDZjYmQ5
ODQxODU5NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CkBAIC03NjcsMTAgKzc2Nyw5IEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtCiAgICAgYXJncy5h
cHBlbmQodmFsdWUpOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXJPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoc2V0dGVyT2JqZWN0LCBjYWxsRGF0YSk7Cisg
ICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBzZXR0ZXJPYmplY3QpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICBjYWxsKGdsb2JhbE9iamVjdCwgc2V0dGVyT2JqZWN0LCBjYWxs
VHlwZSwgY2FsbERhdGEsIHJlY2VpdmVyLCBhcmdzKTsKKyAgICBjYWxsKGdsb2JhbE9iamVjdCwg
c2V0dGVyT2JqZWN0LCBjYWxsRGF0YSwgcmVjZWl2ZXIsIGFyZ3MpOwogCiAgICAgLy8gOS4xLjku
MS05IFJldHVybiB0cnVlLgogICAgIHJldHVybiB0cnVlOwpAQCAtMjExNyw5ICsyMTE2LDggQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBz
Y29wZS5leGNlcHRpb24oKSk7CiAgICAgaWYgKGZ1bmN0aW9uLmlzVW5kZWZpbmVkT3JOdWxsKCkg
JiYgbW9kZSA9PSBUeXBlSGludE1vZGU6OlRha2VzSGludCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24pOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAg
ICAgIGlmIChtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSBpcyBu
b3QgYSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zKTsKICAgICAgICAgcmV0dXJuIHNj
b3BlLmV4Y2VwdGlvbigpOwpAQCAtMjE0Myw3ICsyMTQxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICB9CiAgICAgQVNTRVJUKCFjYWxsQXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgY29uc3RfY2FzdDxKU09iamVjdCo+KG9iamVjdCksIGNhbGxBcmdzKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEs
IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLCBjYWxsQXJncyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghcmVzdWx0
LmlzR2V0dGVyU2V0dGVyKCkpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKQEAgLTIyNDAs
OSArMjIzOCw4IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZhbHVlICE9IGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkgewotICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZt
LCBoYXNJbnN0YW5jZVZhbHVlLCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0
YSh2bSwgaGFzSW5zdGFuY2VWYWx1ZSk7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VW
YWx1ZU5vdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0yMjUwLDcgKzIyNDcsNyBAQCBib29sIEpTT2JqZWN0Ojpo
YXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgIGFyZ3Mu
YXBwZW5kKHZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0g
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGhhc0luc3RhbmNlVmFs
dWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJncyk7CisgICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGhhc0luc3RhbmNlVmFsdWUsIGNhbGxEYXRhLCB0aGlz
LCBhcmdzKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgIH0KQEAgLTM4
NjksNyArMzg2Niw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKIC8vIEltcGxlbWVudHMg
R2V0TWV0aG9kKE8sIFApIGluIHNlY3Rpb24gNy4zLjkgb2YgdGhlIHNwZWMuCiAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0bWwjc2VjLWdl
dG1ldGhvZAotSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCitKU1ZhbHVlIEpT
T2JqZWN0OjpnZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbERhdGEm
IGNhbGxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTM4ODUsOCArMzg4Miw4IEBAIEpTVmFs
dWUgSlNPYmplY3Q6OmdldE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RGF0YSYgY2FsbERhdGEsIENhCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0K
IAotICAgIGNhbGxUeXBlID0gbWV0aG9kLmFzQ2VsbCgpLT5tZXRob2RUYWJsZSh2bSktPmdldENh
bGxEYXRhKG1ldGhvZC5hc0NlbGwoKSwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgbWV0
aG9kKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCmluZGV4IGE2ODc4YTZhNGI0M2IzOGQ1OGUzZjM5Mjg2OTNhZDM3
MDI3OTJlMTEuLjU2MzNmNDI1YTJkMzY2MjIxMzk0NmQ0ZWEzMTljMmE3MTcxODVjMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTAwLDcgKzkwMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX2J1dHRlcmZseTsKICAgICB9CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGdldE1ldGhvZChKU0dsb2JhbE9iamVjdCosIENhbGxEYXRh
JiwgQ2FsbFR5cGUmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZ2V0TWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpOwogCiAgICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZShWTSYsIFByb3BlcnR5
TmFtZSk7CiAgICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZUV4Y2x1ZGluZ1Byb3RvKFZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CmluZGV4IDUxZTBiZjM3ODZlMTc2ODY1YTg2ZmM5MTY1NjYyZThlNTNkNWMyMzQuLjUwYmIyYmIw
ZDIxN2RmODY4ODVhZDRmZmEwYjRlZDljZjk1YzIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC01MTEsMjcgKzUxMSwyNyBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKLWlubGluZSBD
YWxsVHlwZSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxs
RGF0YSkKK2lubGluZSBDYWxsRGF0YSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpO
b25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2Vs
bCgpOwogICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCi0gICAgICAgIHJl
dHVybiBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShjZWxsLCBjYWxsRGF0YSk7Ci0gICAgQ2FsbFR5
cGUgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShjZWxsLCBjYWxs
RGF0YSk7Ci0gICAgQVNTRVJUKHJlc3VsdCA9PSBDYWxsVHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1Zh
bGlkQ2FsbGVlKCkpOworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoY2Vs
bCk7CisgICAgQ2FsbERhdGEgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxs
RGF0YShjZWxsKTsKKyAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUgfHwg
dmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK2lubGluZSBDb25zdHJ1Y3REYXRhIGdldENvbnN0
cnVjdERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpCi0gICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpOb25lOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwogICAgIGlmIChjZWxsLT50
eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCi0gICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRD
b25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVjdERhdGEpOwotICAgIENvbnN0cnVjdFR5cGUgcmVz
dWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0
cnVjdERhdGEpOwotICAgIEFTU0VSVChyZXN1bHQgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2
YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q29u
c3RydWN0RGF0YShjZWxsKTsKKyAgICBDb25zdHJ1Y3REYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKKyAgICBBU1NFUlQocmVzdWx0LnR5
cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCmluZGV4IDA5YzM2ZTVkZTI5NzBiYTA3NzEwODJhNjExZDRjNzE3ZWE4ZTM2NTUu
LjcxYmUxNWJhZjA4NTcwYmExODg5MjhkZmIwN2FhNTZiM2I4Mzk3ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtMTA3LDE0ICsxMDcsMTMgQEAg
SlNQcm9taXNlOjpEZWZlcnJlZERhdGEgSlNQcm9taXNlOjpjcmVhdGVEZWZlcnJlZERhdGEoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
ID0gZ2xvYmFsT2JqZWN0LT5uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCk7Ci0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRh
KGdsb2JhbE9iamVjdC0+dm0oKSwgbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBj
YWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eUZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsVHlw
ZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJn
dW1lbnRzLmFwcGVuZChwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIEFTU0VSVCghYXJndW1lbnRz
Lmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSBkZWZlcnJlZCA9IGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
VW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSBkZWZlcnJlZCA9IGNhbGwoZ2xv
YmFsT2JqZWN0LCBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsRGF0YSwganNVbmRl
ZmluZWQoKSwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgRGVmZXJyZWREYXRhIHJlc3VsdDsKQEAgLTEzNCwxMyArMTMzLDEyIEBAIEpTUHJv
bWlzZSogSlNQcm9taXNlOjpyZXNvbHZlZFByb21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPnByb21pc2VS
ZXNvbHZlRnVuY3Rpb24oKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAg
QVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0g
SlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBl
ICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKLSAgICBhdXRvIHJlc3VsdCA9IGNhbGwo
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3Qt
PnByb21pc2VDb25zdHJ1Y3RvcigpLCBhcmd1bWVudHMpOworICAgIGF1dG8gcmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNl
Q29uc3RydWN0b3IoKSwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmluaGVyaXRzPEpTUHJvbWlzZT4odm0pKTsK
ICAgICByZXR1cm4ganNDYXN0PEpTUHJvbWlzZSo+KHJlc3VsdCk7CkBAIC0xNDgsMTYgKzE0Niwx
NSBAQCBKU1Byb21pc2UqIEpTUHJvbWlzZTo6cmVzb2x2ZWRQcm9taXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2FsbEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rpb24sIEpT
UHJvbWlzZSogcHJvbWlzZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0o
KSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6
Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZt
KCksIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsVHlwZTo6Tm9u
ZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRz
LmFwcGVuZChwcm9taXNlKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKICAgICBBU1NF
UlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgY2FsbChnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7
CisgICAgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwganNVbmRlZmluZWQo
KSwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWJhZDAyOTZlODE3
ZDk1NDA2MThhN2NmODNiZjY1NzFhYjA0YTgwNC4uOTYzZTQ5ZjVjMjdiMjRkNTMyYmJlOGZkM2Ey
Mzc3NTg4MzYyOWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cENvbnN0cnVjdG9yLmNwcApAQCAtODgsOSArODgsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
QwogICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IG1hcC0+SlNPYmplY3Q6OmdldChnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2Fs
bERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7Ci0gICAgaWYgKGFkZGVy
RnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGFkZGVyRnVuY3Rp
b25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKKyAgICBpZiAoYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTEyLDcgKzExMSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgICAgICBBU1NF
UlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgbWFwLCBhcmd1bWVudHMpOworICAgICAg
ICBjYWxsKGdsb2JhbE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
LCBtYXAsIGFyZ3VtZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAppbmRleCA1ZWU0MWZhMTI5NDAwMGNmYTA2MmU0ZjMxZWYwYmNhNjM2OWM4NDhhLi5i
N2NmMjFjM2NmY2IwMzQxM2I3OWE3OTBjNzdmNTY4MmI3YmRkZjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTI5OSwxMyAr
Mjk5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBJZiBJc0NhbGxhYmxlKHRvU3Ry
aW5nKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRvU3Ry
aW5nLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAg
IGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdG9TdHJpbmcpOworICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiB0b1N0cmluZyBwYXNzaW5n
IHRoZSB0aGlzIHZhbHVlIGFuZCBubyBhcmd1bWVudHMuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRvU3RyaW5nLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgdG9T
dHJpbmcsIGNhbGxEYXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxpc3QpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNmU0YjE1YzJkMDczZWZm
ZTg5NzE0ZTYwOWQxNTRiOTMxZmZjMTNiNS4uYTVkMDlhNjQ3OWFkZGFiOGY1MmM1YThmZWY5Nzk5
OTFjMmFkNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcApAQCAtMTM4LDggKzEzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdl
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm94eU9iamVjdCogcHJveHlPCiAKICAg
ICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1
ZSBnZXRIYW5kbGVyID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEs
IGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICInZ2V0JyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVl
IGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
dm0ucHJvcGVydHlOYW1lcy0+Z2V0LCAiJ2dldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgb2JqZWN0IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIGlmIChnZXRIYW5kbGVyLmlzVW5kZWZpbmVkKCkpCkBAIC0x
NTAsNyArMTQ5LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5T2JqZWN0KiBwcm94eU8KICAgICBhcmd1bWVudHMuYXBw
ZW5kKGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChyZWNlaXZl
cik7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVl
IHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0SGFuZGxlciwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNh
bGwoZ2xvYmFsT2JqZWN0LCBnZXRIYW5kbGVyLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7CkBAIC0yMTMsOCArMjEyLDcgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamUKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFu
ZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlw
ZTsKLSAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZp
ZXIodm0sICJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKSwgIidnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJf
cyk7CisgICAgSlNWYWx1ZSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRob2QgPSBoYW5kbGVy
LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKSwgIidnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHBy
b3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JNZXRob2QuaXNVbmRlZmluZWQoKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdEdldE93blByb3BlcnR5KCkpOwpAQCAtMjIzLDcgKzIy
MSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJn
ZXQpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoaWRlbnRpZmllclRvU2FmZVB1YmxpY0pTVmFsdWUo
dm0sIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICBB
U1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJlc3Vs
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRob2QsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBS
ZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9k
LCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNVbmRlZmluZWQoKSAmJiAh
dHJhcFJlc3VsdC5pc09iamVjdCgpKSB7CkBAIC0zMTcsOCArMzE1LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPiho
YW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxU
eXBlOwotICAgIEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9i
amVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsICInaGFzJyBw
cm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAg
IEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIGlmIChoYXNNZXRob2QuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdEhhc1Byb3BlcnR5KCkp
OwpAQCAtMzI3LDcgKzMyNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICBhcmd1bWVu
dHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChpZGVudGlmaWVyVG9TYWZl
UHVibGljSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNW
YWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGhhc01ldGhvZCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9
IGNhbGwoZ2xvYmFsT2JqZWN0LCBoYXNNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVu
dHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGJvb2wg
dHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBA
IC00MjAsOCArNDE3LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1YKIAogICAgIEpTT2JqZWN0
KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIHNldE1ldGhv
ZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwg
dm0ucHJvcGVydHlOYW1lcy0+c2V0LCAiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRs
ZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
ZXQsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFi
bGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKHNldE1ldGhvZC5pc1VuZGVm
aW5lZCgpKQpAQCAtNDMzLDcgKzQyOSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWCiAgICAg
YXJndW1lbnRzLmFwcGVuZChwdXRWYWx1ZSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFs
dWUpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1
ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldE1ldGhvZCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNh
bGwoZ2xvYmFsT2JqZWN0LCBzZXRNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBib29sIHRyYXBS
ZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKQEAgLTUxMywxNSArNTA5LDEzIEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0s
ICJhcHBseSIpLCAiJ2FwcGx5JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgYXBwbHlNZXRob2QgPSBoYW5kbGVyLT5nZXRN
ZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJhcHBseSIp
LCAiJ2FwcGx5JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFi
bGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAgaWYgKGFwcGx5
TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxE
YXRhKHRhcmdldCwgY2FsbERhdGEpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNhbGxUeXBlLCBjYWxsRGF0
YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgQXJnTGlzdChjYWxsRnJhbWUpKSkpOworICAgICAg
ICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHRhcmdldCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwg
dGFyZ2V0LCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgQXJnTGlzdChjYWxsRnJh
bWUpKSkpOwogICAgIH0KIAogICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXko
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0
ciksIEFyZ0xpc3QoY2FsbEZyYW1lKSk7CkBAIC01MzEsMjAgKzUyNSwxOCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKICAgICBhcmd1bWVu
dHMuYXBwZW5kKGFyZ0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2Vk
KCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwo
Z2xvYmFsT2JqZWN0LCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBh
cmd1bWVudHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJn
dW1lbnRzKSkpOwogfQogCi1DYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBQcm94eU9iamVjdDo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIFByb3h5
T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIGlmICghcHJv
eHktPm1faXNDYWxsYWJsZSkgewotICAgICAgICBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFi
bGUgPSBudWxscHRyOwotICAgICAgICBjYWxsRGF0YS5qcy5zY29wZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybiBDYWxsVHlwZTo6Tm9uZTsKKyAgICBpZiAocHJveHktPm1faXNDYWxsYWJsZSkg
eworICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbFR5cGU6Okhvc3Q7CisgICAgICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Qcm94eUNhbGw7CiAgICAgfQotCi0gICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gcGVyZm9ybVByb3h5Q2FsbDsKLSAgICByZXR1cm4gQ2Fs
bFR5cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC01NjQsMTUgKzU1NiwxMyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUgY29uc3RydWN0TWV0aG9kID0gaGFuZGxl
ci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRp
Zmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdE1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRl
bnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94
eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJv
eHktPnRhcmdldCgpOwogICAgIGlmIChjb25zdHJ1Y3RNZXRob2QuaXNVbmRlZmluZWQoKSkgewot
ICAgICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgICAgIENvbnN0cnVjdFR5
cGUgY29uc3RydWN0VHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3RE
YXRhKHRhcmdldCwgY29uc3RydWN0RGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnN0
cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRhcmdl
dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChjYWxsRnJhbWUpLCBjYWxs
RnJhbWUtPm5ld1RhcmdldCgpKSkpOworICAgICAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRD
b25zdHJ1Y3REYXRhKHZtLCB0YXJnZXQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdHJ1
Y3REYXRhLnR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRh
cmdldCwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChjYWxsRnJhbWUpLCBjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKSkpOwogICAgIH0KIAogICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJy
YXkoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVs
bHB0ciksIEFyZ0xpc3QoY2FsbEZyYW1lKSk7CkBAIC01ODIsMjQgKzU3MiwyMiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIGFy
Z3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CiAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJn
dW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBjb25zdHJ1
Y3RNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghcmVzdWx0LmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3Vs
ZCBiZSBhbiBvYmplY3QiX3MpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotQ29uc3RydWN0VHlwZSBQcm94eU9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
IGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDb25zdHJ1Y3REYXRhIFByb3h5
T2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDb25zdHJ1Y3RE
YXRhIGNvbnN0cnVjdERhdGE7CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYgKCFwcm94eS0+bV9pc0NvbnN0cnVjdGlibGUpIHsKLSAg
ICAgICAgY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSBudWxscHRyOwotICAg
ICAgICBjb25zdHJ1Y3REYXRhLmpzLnNjb3BlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgaWYgKHByb3h5LT5tX2lzQ29uc3RydWN0aWJsZSkgewor
ICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDb25zdHJ1Y3RUeXBlOjpIb3N0OworICAgICAg
ICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Qcm94eUNvbnN0cnVjdDsK
ICAgICB9Ci0KLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Qcm94
eUNvbnN0cnVjdDsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICByZXR1cm4g
Y29uc3RydWN0RGF0YTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5j
dGlvbj4KQEAgLTYyNSw4ICs2MTMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUg
ZGVsZXRlUHJvcGVydHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBj
YWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiZGVsZXRlUHJvcGVydHkiKSwg
IidkZWxldGVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0aG9kID0gaGFuZGxl
ci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAi
ZGVsZXRlUHJvcGVydHkiKSwgIidkZWxldGVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwog
ICAgIGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKQpAQCAtNjM2LDcgKzYy
Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJn
ZXQpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoaWRlbnRpZmllclRvU2FmZVB1YmxpY0pTVmFsdWUo
dm0sIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICBB
U1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJlc3Vs
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBkZWxldGVQcm9wZXJ0eU1ldGhvZCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNh
bGwoZ2xvYmFsT2JqZWN0LCBkZWxldGVQcm9wZXJ0eU1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIs
IGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAg
ICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTcwNyw4ICs2OTQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVu
dEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0
KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIHByZXZlbnRF
eHRlbnNpb25zTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERh
dGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgInByZXZlbnRFeHRlbnNpb25zIiksICIn
cHJldmVudEV4dGVuc2lvbnMnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBi
ZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2
bSwgInByZXZlbnRFeHRlbnNpb25zIiksICIncHJldmVudEV4dGVuc2lvbnMnIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50
YXJnZXQoKTsKICAgICBpZiAocHJldmVudEV4dGVuc2lvbnNNZXRob2QuaXNVbmRlZmluZWQoKSkK
QEAgLTcxNyw3ICs3MDMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVu
c2lvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEFTU0VS
VCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0g
Y2FsbChnbG9iYWxPYmplY3QsIHByZXZlbnRFeHRlbnNpb25zTWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIHByZXZlbnRFeHRlbnNpb25zTWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxl
ciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAK
ICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwpAQCAtNzU5LDggKzc0NSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4
dGVuc2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGlzRXh0ZW5zaWJs
ZU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxs
VHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVuc2libGUn
IHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7Cisg
ICAgSlNWYWx1ZSBpc0V4dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFs
T2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidp
c0V4dGVuc2libGUnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwpAQCAtNzcwLDcgKzc1NSw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1l
bnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGlzRXh0ZW5z
aWJsZU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAg
IEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpc0V4dGVuc2libGVNZXRo
b2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1
bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC04MjUsOCArODEwLDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnQKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0
Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZTsKLSAgICBKU1ZhbHVlIGRlZmluZVByb3BlcnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0
TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVz
LT5kZWZpbmVQcm9wZXJ0eSwgIidkZWZpbmVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGRlZmluZVByb3Bl
cnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZt
LnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCAiJ2RlZmluZVByb3BlcnR5JyBwcm9wZXJ0
eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGlmIChkZWZpbmVQcm9wZXJ0eU1l
dGhvZC5pc1VuZGVmaW5lZCgpKQpAQCAtODQxLDcgKzgyNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0CiAgICAgYXJndW1lbnRzLmFwcGVuZChpZGVudGlmaWVyVG9TYWZlUHVibGljSlNWYWx1
ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQoZGVzY3JpcHRvck9iamVjdCk7CiAgICAgQVNTRVJUKCFhcmd1bWVu
dHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2Jh
bE9iamVjdCwgZGVmaW5lUHJvcGVydHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxl
ciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVj
dCwgZGVmaW5lUHJvcGVydHlNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGJvb2wgdHJhcFJl
c3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC05MjIs
OCArOTA2LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKIAogICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIG93bktleXNNZXRob2Qg
PSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1h
a2VJZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBvd25LZXlz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJ
ZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7
CiAgICAgRW51bWVyYXRpb25Nb2RlIGVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKTsKQEAgLTkzNiw3ICs5MTksNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHRhcmdldCk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgb3duS2V5c01ldGhvZCwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJh
cFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBvd25LZXlzTWV0aG9kLCBjYWxsRGF0YSwgaGFu
ZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCiAgICAgSGFzaFNldDxVbmlxdWVkU3RyaW5nSW1wbCo+IHVuY2hlY2tlZFJlc3VsdEtleXM7
CkBAIC0xMTAxLDggKzEwODQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90
eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdAogCiAgICAgSlNP
YmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUgc2V0
UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxs
RGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAic2V0UHJvdG90eXBlT2YiKSwgIidz
ZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIHNldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+
Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAic2V0
UHJvdG90eXBlT2YiKSwgIidzZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhh
bmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBA
IC0xMTEzLDcgKzEwOTUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdAogICAgIGFyZ3VtZW50
cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHByb3RvdHlwZSk7CiAgICAg
QVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHRyYXBSZXN1
bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgc2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBj
YWxsKGdsb2JhbE9iamVjdCwgc2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVy
LCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAog
ICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9i
amVjdCk7CkBAIC0xMTY2LDggKzExNDgsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU09iamVj
dCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBnZXRQcm90
b3R5cGVPZk1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRh
LCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJnZXRQcm90b3R5cGVPZiIpLCAiJ2dldFBy
b3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFi
bGUiX3MpOworICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRN
ZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJnZXRQcm90
b3R5cGVPZiIpLCAiJ2dldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxl
ciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBAIC0xMTc3
LDcgKzExNTgsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xv
YmFsT2JqZWN0LCBnZXRQcm90b3R5cGVPZk1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5k
bGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBnZXRQcm90b3R5cGVPZk1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHJhcFJl
c3VsdC5pc09iamVjdCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCBlZTViZDkwNThjZmE4MThhNDY3
NGE1MjJiZjYwYTJjYTA5ZWFjMWJiLi45YjMzYTBlNDZlOWJhZTI5MjNmZjYxOGIzZThhMmRlYmEx
MDdhNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
QEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFt
ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7Ci0gICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpT
Q2VsbCopOworICAgIHN0YXRpYyBDb25zdHJ1Y3REYXRhIGdldENvbnN0cnVjdERhdGEoSlNDZWxs
Kik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAppbmRleCA0YmM4ZDRjMWVhZTg4ZWUzMTA0N2M1ZWM3Mzg0ZWQz
Nzg0ZjUzOGEzLi5lNmRhYmZiYTNkZWQ5NzkxMjYzNGZjZWNlODdmNjlmY2I0NzVmZjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAt
OTYsOSArOTYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RD
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CiAKLSAgICBDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgdGFyZ2V0LCBjb25zdHJ1Y3REYXRhKTsKLSAgICBpZiAoY29uc3RydWN0VHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQorICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENv
bnN0cnVjdERhdGEodm0sIHRhcmdldCk7CisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlwZSA9PSBD
b25zdHJ1Y3RUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOwogCiAgICAgSlNWYWx1
ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CkBAIC0xMjMsNyArMTIyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2Jh
bE9iamVjdCwgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudHMs
IG5ld1RhcmdldCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNvbnN0cnVjdERhdGEsIGFyZ3Vt
ZW50cywgbmV3VGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IGJlYzE3NjA3ZGMxZjI3ZDMz
ZDNiNDRkZWFmYmYzYWViMmRlN2QzOTcuLjk2Yjk0YzVlMGVjMjgzZDQ2MzJlYzE2NDc1MTUwYmY0
MzAyM2UyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCkBAIC01MjMsMTAgKzUyMyw4IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxl
cjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAg
ICAgICAgICAgICBhdXRvIHNldEZhbGxiYWNrRnJhbWVUeXBlID0gWyZdIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWFscmVhZHlIYXNFeGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBGcmFt
ZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBlOjpVbmtub3duOwotICAgICAgICAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgICAg
ICAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2VsbCwgY2FsbERh
dGEpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkKKyAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2Vs
bCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Okhvc3Qp
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZyYW1lVHlwZTo6SG9zdDsKIAogICAgICAg
ICAgICAgICAgIHN0YWNrRnJhbWUuZnJhbWVUeXBlID0gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDY5MDk5OGZlYTdj
NjllZjBmNzgyYTMzNDJjZjk5OTczZGFkNGQ0Y2YuLmE3MWUwNTI2MjE2ODg4N2Y3OTkxYzIwNjk2
MmMxMWQzM2YwZTM3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTg4LDkgKzg4LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEMKICAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRh
KHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwotICAgIGlmIChVTkxJ
S0VMWShhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpKQorICAgIGF1dG8g
YWRkZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOwor
ICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtOTgsNyArOTcs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobmV4dFZhbHVlKTsKICAgICAg
ICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgY2FsbChnbG9i
YWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5j
dGlvbkNhbGxEYXRhLCBzZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0
LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHNldCwgYXJndW1lbnRzKTsK
ICAgICB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDRhYzU0
MTZiODE0YTcwNjJjMWI5ODAwZDE3ZjhiM2JiMjJmZTIzY2UuLjE4YTVkNDQ3NDExYjMxOTRlYmZh
MmVkOTBhNDcyMzE3NDMxZjQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTU3RyaW5nKiByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNTdHJpbmcqIHN0cmluZywgSlNWYWx1ZSBzZWFyY2hW
YWx1ZSwgQ2FsbERhdGEmIGNhbGxEYXRhLAotICAgIENhbGxUeXBlIGNhbGxUeXBlLCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKKyAgICBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAgICAg
ICByZWdFeHBPYmplY3QtPnNldExhc3RJbmRleChnbG9iYWxPYmplY3QsIDApOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgpKSAKKyAg
ICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50
U3RyaW5nLmxlbmd0aCgpKSAKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
cmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGdsb2JhbE9iamVjdCwgc3RyaW5nLCBzb3VyY2Us
IHJlZ0V4cCkpOwogICAgIH0KIApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCiAgICAgVmVjdG9yPFN0cmlu
ZywgMTY+IHJlcGxhY2VtZW50czsKIAogICAgIC8vIFRoaXMgaXMgZWl0aGVyIGEgbG9vcCAoaWYg
Z2xvYmFsIGlzIHNldCkgb3IgYSBvbmUtd2F5IChpZiBub3QpLgotICAgIGlmIChnbG9iYWwgJiYg
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6OkpTKSB7CisgICAgaWYgKGdsb2JhbCAmJiBjYWxsRGF0YS50
eXBlID09IENhbGxUeXBlOjpKUykgewogICAgICAgICAvLyByZWdFeHAtPm51bVN1YnBhdHRlcm5z
KCkgKyAxIGZvciBwYXR0ZXJuIGFyZ3MsICsgMiBmb3IgbWF0Y2ggc3RhcnQgYW5kIHN0cmluZwog
ICAgICAgICBpbnQgYXJnQ291bnQgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxICsgMjsK
ICAgICAgICAgaWYgKGhhc05hbWVkQ2FwdHVyZXMpCkBAIC02MTksNyArNjE5LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAgICAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
ICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGlmIChjYWxs
RGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCFzb3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgcmVzdWx0
LnN0YXJ0IC0gbGFzdEluZGV4KSkpCiAgICAgICAgICAgICAgICAgICAgIE9VVF9PRl9NRU1PUlko
Z2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIHJlcGxhY2VWYWx1
ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmdzKTsKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIHJlcGxhY2VWYWx1
ZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3MpOwogICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIFN0cmluZyBy
ZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBA
IC03MjQsNyArNzI0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1By
b3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cihKU0dsb2JhbE9iamUKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcgPSBlbXB0eVN0cmluZygpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAot
ICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgc2VhcmNoVmFs
dWUsIGNhbGxEYXRhLCBDYWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRTdHJpbmcsIEpTVmFsdWUo
KSkpOworICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgc2Vh
cmNoVmFsdWUsIGNhbGxEYXRhLCByZXBsYWNlbWVudFN0cmluZywgSlNWYWx1ZSgpKSk7CiB9CiAK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVn
RXhwU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiB0aGlzVmFs
dWUsIFJlZ0V4cE9iamVjdCogc2VhcmNoVmFsdWUsIEpTU3RyaW5nKiByZXBsYWNlU3RyaW5nKQpA
QCAtNzM4LDcgKzczOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKEpTR2xvYmFsT2JqZWN0CiAgICAgU3RyaW5nIHJl
cGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZVN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICAgICAgdm0sIGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgQ2Fs
bFR5cGU6Ok5vbmUsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBsYWNlU3RyaW5nKSk7CisgICAgICAg
IHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBzZWFyY2hWYWx1ZSwgY2Fs
bERhdGEsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBsYWNlU3RyaW5nKSk7CiB9CiAKIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNTdHJp
bmcqIHN0cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNlVmFsdWUpCkBA
IC03NDYsMTUgKzc0NiwxNCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFj
ZVVzaW5nUmVnRXhwU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3Ry
aW5nOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwg
cmVwbGFjZVZhbHVlKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkg
ewogICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCgKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBzdHJpbmcs
IHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBs
YWNlVmFsdWUpKTsKKyAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBzdHJpbmcs
IHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJlcGxhY2VWYWx1ZSkp
OwogfQogCiBlbnVtIGNsYXNzIFJlcGxhY2VNb2RlIDogYm9vbCB7IFNpbmdsZSwgR2xvYmFsIH07
CkBAIC03NjgsMTQgKzc2NywxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVw
bGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNl
VmFsdWUsIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJl
cGxhY2VWYWx1ZSk7CiAgICAgT3B0aW9uYWw8Q2FjaGVkQ2FsbD4gY2FjaGVkQ2FsbDsKICAgICBT
dHJpbmcgcmVwbGFjZVN0cmluZzsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
IHsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICBy
ZXBsYWNlU3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIH0gZWxzZSBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6OkpTKSB7CisgICAgfSBlbHNlIGlmIChjYWxsRGF0YS50
eXBlID09IENhbGxUeXBlOjpKUykgewogICAgICAgICBjYWNoZWRDYWxsLmVtcGxhY2UoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4ocmVwbGFjZVZhbHVlKSwgMyk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICBj
YWNoZWRDYWxsLT5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzkwLDcgKzc4OCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBWZWN0b3I8U3RyaW5nUmFuZ2UsIDE2PiBzb3VyY2VS
YW5nZXM7CiAgICAgVmVjdG9yPFN0cmluZywgMTY+IHJlcGxhY2VtZW50czsKICAgICBkbyB7Ci0g
ICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoY2Fs
bERhdGEudHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXBs
YWNlbWVudDsKICAgICAgICAgICAgIGlmIChjYWNoZWRDYWxsKSB7CiAgICAgICAgICAgICAgICAg
YXV0byogc3Vic3RyaW5nID0ganNTdWJzdHJpbmcodm0sIHN0cmluZywgbWF0Y2hTdGFydCwgc2Vh
cmNoU3RyaW5nTGVuZ3RoKTsKQEAgLTgwOSw3ICs4MDcsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1N0cmluZyogcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqCiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobWF0Y2hTdGFydCkpOwog
ICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVu
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCByZXBsYWNlVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
anNVbmRlZmluZWQoKSwgYXJncyk7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBjYWxs
KGdsb2JhbE9iamVjdCwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJn
cyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKICAgICAgICAgICAgIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlbWVudC50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOwpAQCAtODIwLDcgKzgxOCw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCoKICAgICAgICAgICAgIE9VVF9PRl9NRU1PUlkoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAKICAgICAgICAgc2l6ZV90IG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIHNlYXJjaFN0cmluZ0xl
bmd0aDsKLSAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKQorICAgICAgICBp
ZiAoY2FsbERhdGEudHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50cy5hcHBlbmQocmVwbGFjZVN0cmluZyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
U3RyaW5nQnVpbGRlciByZXBsYWNlbWVudChTdHJpbmdCdWlsZGVyOjpPdmVyZmxvd0hhbmRsZXI6
OlJlY29yZE92ZXJmbG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAx
NjJlOTlkZWQzZWIwMWIyMjcwMjVhODIyZTA2MzJiMjFjODYxZGVjLi5lNWQ3YmZmNWJlMDkyODA5
NGI0NTYyZGYzMjgyZjE5OGM1YmU1ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0xMjU4LDE0ICsxMjU4LDEzIEBAIHZvaWQgVk06OmNhbGxQcm9taXNlUmVqZWN0aW9u
Q2FsbGJhY2soU3Ryb25nPEpTUHJvbWlzZT4mIHByb21pc2UpCiAKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSgqdGhpcyk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKCp0aGlzLCBjYWxsYmFjaywgY2FsbERh
dGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKCp0aGlzLCBjYWxsYmFjayk7CisgICAgQVNTRVJUKGNhbGxE
YXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKICAgICBhcmdzLmFwcGVuZChwcm9taXNlLmdldCgpKTsKICAgICBhcmdzLmFwcGVuZChw
cm9taXNlLT5yZXN1bHQoKnRoaXMpKTsKLSAgICBjYWxsKHByb21pc2UtPmdsb2JhbE9iamVjdCgp
LCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncyk7CisgICAgY2Fs
bChwcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgY2FsbGJhY2ssIGNhbGxEYXRhLCBqc051bGwoKSwg
YXJncyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjdk
ZmE2YmQ0MTk1Y2Q4M2NlMTE0MTBhNzA2ZWJlN2ExMmQ5YjA4ZC4uNWFhMDU0MzU0ZDQ1YzYzZjE2
MTkwNzMzYWY2ZjVlYTY1MjRiNGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCkBAIC03OSw5ICs3OSw4IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+
SlNPYmplY3Q6OmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBDYWxs
RGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxs
RGF0YSk7Ci0gICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
KyAgICBhdXRvIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1
bmN0aW9uKTsKKyAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTAzLDcgKzEw
Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtN
YXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
dmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBhZGRlckZ1
bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vh
a01hcCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rp
b24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKICAgICB9KTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBhNzE5
MGY5NGFmZmYyNzU5ZDIyNzI1MDkxNWE2NjcxYjU0NTI2Yjg3Li4xYTU4YjJkN2IwNGJkNjk5M2I5
OTY2MGI5MzU2YjhkOTU1NDVkMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDkgKzc5LDggQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWMKICAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3ZWFrU2V0LT5K
U09iamVjdDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxE
YXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhKTsKLSAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQor
ICAgIGF1dG8gYWRkZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVu
Y3Rpb24pOworICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC04OSw3ICs4OCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChuZXh0VmFsdWUpOwogICAgICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBjYWxsKGdsb2Jh
bE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3Vt
ZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRkMWQ0OWNh
YmIxMGY5ZDVlOTk3YmY4YmVjYjA3NTM4NmQ3ZTZhZjkuLmE3MGQ2MTEwMjRkZjUzNjY1NjE0MmMw
NTFlNTY3OTRhNTRmNWE0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKQEAgLTIxNDcsMTAgKzIxNDcsOSBAQCBzdGF0aWMgdm9pZCBjYWxsV2l0aFN0YWNr
U2l6ZVByb2JlRnVuY3Rpb24oUHJvYmU6OlN0YXRlKiBzdGF0ZSkKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmlu
ZWQoKSwgYXJncyk7CisgICAgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwg
anNVbmRlZmluZWQoKSwgYXJncyk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAppbmRleCA3OTZjODY4OGIyNzY0ZWI5M2Y2MzZkNTE5M2EzZTk3NTNm
YjgxOWIyLi5kYmM4ZGZiZmQyMWM5OTBmZTUzZjQwNWEzYjA1NzE0ZGIzNzc4Y2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwCkBAIC02NTcsOSArNjU3LDggQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NF
UlQoIWV4Y2VwdGlvbik7CiAKICAgICBpZiAoSlNPYmplY3QqIHN0YXJ0RnVuY3Rpb24gPSBtX3N0
YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgc3RhcnRGdW5jdGlvbiwg
Y2FsbERhdGEpOwotICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgc3RhcnRGdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCAqdm0uZW1wdHlMaXN0KTsKKyAgICAgICAg
YXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIHN0YXJ0RnVuY3Rpb24pOworICAg
ICAgICBjYWxsKGdsb2JhbE9iamVjdCwgc3RhcnRGdW5jdGlvbiwgY2FsbERhdGEsIGpzVW5kZWZp
bmVkKCksICp2bS5lbXB0eUxpc3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4IDJmZmI0ZGI0Nzgx
ZjFiMDFmNmQ3MmZhNjM1ZTY5YWJkYWUzOTRkNzkuLjEyZGU4ZWI3OGM3M2NmZTgyZjNiN2VlYWQ5
ZmUyOWU5MmIxZGEzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAgLTQzLDExICs0Mywx
MCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gd2FzbUZ1bmN0aW9uLT5mdW5jdGlv
bigpOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKKyAgICBhdXRvIGNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
YWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxE
YXRhLCBqc1VuZGVmaW5lZCgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CiB9CiAKIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihWTSYgdm0sIE5h
dGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9u
IGltcG9ydGFibGVGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA1MzdlZWU3
ZGFjYzdkYzQ0NmQ5ODk5NmQ4NGRiNWQxZGEzNGYxZWE0Li44OWI3MjMxYjRjN2EyNWU5M2IzYzkx
MDUwMTg4NzBlODQ5YjFjMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xODgsOSAr
MTg4LDggQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2Vt
ZW50KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU0M6OkpT
T2JqZWN0KiByZXBsYWNlbWVudE9iamVjdCA9IHJlcGxhY2VtZW50RnVuY3Rpb24udG9PYmplY3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAg
ICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBy
ZXBsYWNlbWVudE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShyZXBsYWNlbWVu
dE9iamVjdCwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpO
b25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZW1lbnRPYmpl
Y3QpOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlz
dDsKQEAgLTIwMCw3ICsxOTksNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojpp
bnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKICAgICBhcmdMaXN0LmFwcGVuZCh0
b0pTPElETFNlcXVlbmNlPElETE51bGxhYmxlPElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmdsb2JhbE9iamVjdCwgbV9uYW1lcykpOwogICAgIGFyZ0xpc3QuYXBwZW5kKHRv
SlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBtX3ZhbHVlcykpOwogICAgIEFTU0VSVCghYXJnTGlzdC5o
YXNPdmVyZmxvd2VkKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Z2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnQgPSBj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlcGxhY2VtZW50T2JqZWN0LCBjYWxsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBhcmdMaXN0KTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRl
eCA2Yjc3OTQ5OTY2MGY1MzllYzU1ODM0OTdkY2FhODUzZjdjYTRjMWViLi5jZjRmNzU2MWY4N2Rk
NTY1NzY1YzI4MjkxZThkYjU5YzMyYzc4ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC00OCwxMyArNDgsMTIgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QKIAogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBDYWxsVHlwZTo6Tm9uZTsKIAogICAgIGlmICht
ZXRob2QgIT0gQ2FsbGJhY2tUeXBlOjpPYmplY3QpIHsKICAgICAgICAgZnVuY3Rpb24gPSBjYWxs
YmFjazsKLSAgICAgICAgY2FsbFR5cGUgPSBjYWxsYmFjay0+bWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBjYWxsYmFjayk7CiAgICAgfQotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkgeworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAg
ICAgIGlmIChtZXRob2QgPT0gQ2FsbGJhY2tUeXBlOjpGdW5jdGlvbikgewogICAgICAgICAgICAg
cmV0dXJuZWRFeGNlcHRpb24gPSBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVUeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKQEAgLTY4LDI1ICs2NywyNSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdAogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBm
dW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxUeXBlOjpOb25lKSB7
CiAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUo
dm0sIGNyZWF0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUKCFmdW5jdGlv
bi5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Cisg
ICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgLy8gV2Ugd2lsbCBmYWlsIHRvIGdldCB0aGUgY29udGV4dCBpZiB0aGUg
ZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogCi0gICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwo
Y29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVu
dEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICByZXR1cm5lZEV4Y2VwdGlv
biA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRD
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb24s
IGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnRleHQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmNwcAppbmRleCA4MTYyNGUzN2VjOWFkMTk1YjVmOGM0NmFiM2M2M2ZjMmJiNmVjYmQxLi5i
YjM0NzhiZjRmM2U5OTI2Y2NjOTIzMGM2YjMxNjQ1NjY1Yjk3MmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAK
QEAgLTExNywxNyArMTE3LDE2IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6OnRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChEb2N1bWVudCYKIHN0YXRpYyBSZWZQ
dHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQm
IGRvY3VtZW50LCBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ29uc3RydWN0RGF0
YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGNvbnN0
cnVjdG9yLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNv
bnN0cnVjdERhdGEpOwotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5v
bmUpIHsKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25z
dHJ1Y3Rvcik7CisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpO
b25lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3Ry
dWN0KCZkb2N1bWVudCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7CisgICAgSlNFeGVj
U3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdCgmZG9jdW1lbnQsIGNvbnN0cnVjdERh
dGEpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gY29uc3RydWN0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0
YSwgYXJncyk7CisgICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gY29uc3RydWN0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncyk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJmRvY3VtZW50KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIApAQCAtMTg2LDkgKzE4NSw4IEBAIHZv
aWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBnbG9iYWxPYmplY3Q7CiAKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gbV9jb25zdHJ1Y3Rvci0+bWV0aG9k
VGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVj
dERhdGEpOwotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpIHsK
KyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBtX2NvbnN0cnVj
dG9yLmdldCgpKTsKKyAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENvbnN0cnVjdFR5cGU6
Ok5vbmUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xOTksOCArMTk3LDggQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoY29udGV4dCwgY29uc3RydWN0VHlw
ZSwgY29uc3RydWN0RGF0YSk7Ci0gICAgSlNWYWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBjb25zdHJ1
Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9jb25zdHJ1Y3Rvci5nZXQoKSwgY29uc3RydWN0VHlw
ZSwgY29uc3RydWN0RGF0YSwgYXJncyk7CisgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5j
dGlvbkNvbnN0cnVjdChjb250ZXh0LCBjb25zdHJ1Y3REYXRhKTsKKyAgICBKU1ZhbHVlIHJldHVy
bmVkRWxlbWVudCA9IGNvbnN0cnVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2NvbnN0cnVjdG9y
LmdldCgpLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb250ZXh0KTsKIAogICAgIG1fY29uc3RydWN0aW9uU3RhY2su
cmVtb3ZlTGFzdCgpOwpAQCAtMjQwLDE4ICsyMzgsMTcgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxs
YmEKIAogICAgIEpTT2JqZWN0KiBqc0VsZW1lbnQgPSBhc09iamVjdCh0b0pTKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZWxlbWVudCkpOwogCi0gICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjay0+bWV0aG9kVGFibGUodm0pLT5n
ZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBD
YWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjYWxs
YmFjayk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhZGRBcmd1bWVudHMobGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlv
bkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5z
dHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJn
cywgZXhjZXB0aW9uKTsKKyAgICBKU0V4ZWNTdGF0ZTo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjYWxsYmFjaywgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJncywgZXhjZXB0aW9uKTsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnRleHQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggNDkwMzg1MzYyOTNhNTlkZWU4OTc4NzIwMmI2NjI1YTU4NjE1MGU5My4u
MmRhZWM0ODAxYjI5NDg2YzBlYmQ5YTI4ZmI4NzVmMmJiODNhMGYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApA
QCAtNzQsMTEgKzc0LDEwIEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3Vw
TmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIAogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2N1
c3RvbVJlc29sdmVyLT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBjYWxs
VHlwZSA9IG1fY3VzdG9tUmVzb2x2ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEobV9j
dXN0b21SZXNvbHZlci5nZXQoKSwgY2FsbERhdGEpOwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1
bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAg
ICAgICBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBtX2N1c3RvbVJlc29sdmVyLmdldCgpKTsK
KyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAg
ICAgIGlmIChQYWdlQ29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xvYmFsT2JqZWN0LT53cmFw
cGVkKCkuY29uc29sZSgpKQogICAgICAgICAgICAgICAgIGNvbnNvbGUtPmFkZE1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJYUGF0aE5TUmVzb2x2ZXIgZG9l
cyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBtZXRob2QuIl9zKTsKICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTkzLDcgKzkyLDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAg
QVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmV0dmFsID0gSlNFeGVjU3RhdGU6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jdXN0
b21SZXNvbHZlci5nZXQoKSwgYXJncywgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHZhbCA9
IEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0
YSwgbV9jdXN0b21SZXNvbHZlci5nZXQoKSwgYXJncywgZXhjZXB0aW9uKTsKIAogICAgIFN0cmlu
ZyByZXN1bHQ7CiAgICAgaWYgKGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IDk1YWQwNmUyZWQ0YzZi
YzNjMGFkYzFmN2ZhMjNkNmY1MzQ3Y2FhZjUuLjcwN2UzYjI3N2ZjODJjYmM4NTJhOGFmNTFkZTcz
MWJhYjVlMzExZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7
Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0RGF0
YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKik7CiAgICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmLCBKU0M6OkpTT2JqZWN0Jik7
CkBAIC0xMTgsMTAgKzExOCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRpbgogICAgIHJldHVy
biBjYXN0ZWRUaGlzLT5jYWxsQ29uc3RydWN0b3IoKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsIGNyZWF0ZUpTT2JqZWN0KCpjYXN0ZWRUaGlzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNvbnN0cnVjdFR5cGUgSlNET01CdWlsdGluQ29uc3Ry
dWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxp
bmUgSlNDOjpDb25zdHJ1Y3REYXRhIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+Ojpn
ZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKikKIHsKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CisgICAgY29uc3RydWN0RGF0YS50eXBlID0gSlNDOjpDb25zdHJ1Y3RUeXBlOjpI
b3N0OwogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwotICAg
IHJldHVybiBKU0M6OkNvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVjdERh
dGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwCmluZGV4
IDhmM2ZmNGI4MzkwOTJhNjQ5NWUwYTI4ZWExMjMyMTY5ZTQ5MjliNGYuLmU4NTUwYzVhZGQ0OTJi
MzNmZTJkY2NmYjRhOTUyZDBiZGQzYmNkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcApAQCAtMzIs
OSArMzIsOCBAQCB2b2lkIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZTo6Y2FsbEZ1bmN0aW9u
V2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpKU0dsb2JhbAogewogICAgIEpTQzo6Vk0mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5
cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCAmZnVuY3Rpb24sIGNhbGxEYXRhKTsK
LSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCAmZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0
YS50eXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUuYXJn
dW1lbnRDb3VudCgpOyArK2kpCkBAIC00Myw3ICs0Miw3IEBAIHZvaWQgSlNET01CdWlsdGluQ29u
c3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFyZ3VtZW50cyhKU0M6OkpTR2xv
YmFsCiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgJmZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZ0aGlzT2JqZWN0LCBh
cmd1bWVudHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmZ1bmN0aW9u
LCBjYWxsRGF0YSwgJnRoaXNPYmplY3QsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgSlNET01CdWls
dGluQ29uc3RydWN0b3JCYXNlOjp2aXNpdENoaWxkcmVuKEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3Rvci5oCmluZGV4IDM5M2RjZWIxMTFkM2YzYjcyOTZkMjY3ZjBkZTZlMzY1YTk0
NTA3OWQuLjEzNTg1ODY3OTljYmFkZWQ2ZmQzMjc3YzU4ZDk1MmUxMWNjNWU2OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBKU0M6OkNvbnN0cnVjdERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOwog
CiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
JikgeyB9CkBAIC02OSwxMCArNjksMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5s
aW5lIHZvaWQgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24KICAgICBp
bml0aWFsaXplUHJvcGVydGllcyh2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q29uc3RydWN0VHlwZSBKU0RPTUNvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
Qzo6Q29uc3RydWN0RGF0YSBKU0RPTUNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQzo6SlNDZWxsKikKIHsKKyAgICBKU0M6OkNvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKKyAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBKU0M6OkNvbnN0cnVjdFR5cGU6Okhvc3Q7CiAg
ICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7Ci0gICAgcmV0dXJu
IEpTQzo6Q29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9y
QmFzZS5jcHAKaW5kZXggNDAwMDNkZGIwNjM2YmM4ODA0NWMzM2M5MDExN2Q5MzdlMTc2YTEwNC4u
YTQzNGMxODIzZTI5ZTBlNzg5Y2Y4N2YzYzhhNTdjMjE4N2Y1NTVlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcApAQCAtMzgs
MTAgKzM4LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJv
d1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiB9CiAKLUNhbGxUeXBlIEpTRE9NQ29uc3RydWN0b3JCYXNlOjpn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBKU0RPTUNv
bnN0cnVjdG9yQmFzZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKikKIHsKKyAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICBjYWxsRGF0YS50eXBlID0gQ2FsbFR5cGU6Okhvc3Q7CiAgICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbFRocm93VHlwZUVycm9yOwotICAgIHJldHVybiBDYWxsVHlw
ZTo6SG9zdDsKKyAgICByZXR1cm4gY2FsbERhdGE7CiB9CiAKIFN0cmluZyBKU0RPTUNvbnN0cnVj
dG9yQmFzZTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNDOjpWTSYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAppbmRleCBjNTI4
YjA5ODc3YzQ0MjkzMGQ0NzY0YmM2MmZhNmMxMDNiMTJlNWIwLi4yZTBjNWFjMDMzNmU2MWE0MTEy
MzM4YmYwODM4MGNlMDM3NjZhNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0M6OlZNJik7
CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgSlNDOjpDYWxsRGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRhIGdldENhbGxE
YXRhKEpTQzo6SlNDZWxsKik7CiB9OwogCiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NQ29u
c3RydWN0b3JCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZS5oCmluZGV4IDMzMGM1OTJiODVmZmE5NjM1M2UzZTkwZTkzYmY0NjM3YWE3ZDY4
YjUuLjNiZjcyZmUwYzFlYzUxNzBhMDNkMmNlYTY5NzdmNzdiOThkZjdhMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaApAQCAtNTQsMTAgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzTnVsbCgpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERh
dGEmIGNhbGxEYXRhKQorICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRhIGdldENhbGxEYXRhKEpTQzo6
SlNDZWxsKikKICAgICB7CisgICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CisgICAgICAg
IGNhbGxEYXRhLnR5cGUgPSBKU0M6OkNhbGxUeXBlOjpIb3N0OwogICAgICAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBKU0M6
OkNhbGxUeXBlOjpIb3N0OworICAgICAgICByZXR1cm4gY2FsbERhdGE7CiAgICAgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IDA3M2ZjNzZi
NjExYjg3OGZhNmM0NzliOTBlYWE5ZGZjZjc3YjAxNDAuLjU5OTY1MDFhMTIxZWRiNmNiMDZhZTFh
ZWYzYjg3NDNiMzljMmNhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0
ZXJhdG9yLmgKQEAgLTIwNCw5ICsyMDQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0l0ZXJhdG9y
PiBKU0M6OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAgICAg
SlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0gY2FsbEZyYW1lLmFyZ3VtZW50KDApOwogICAgIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUuYXJndW1lbnQoMSk7CiAKLSAgICBKU0M6OkNh
bGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENh
bGxEYXRhKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsYmFjaywgY2FsbERh
dGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBjYWxsYmFjayk7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbm5vdCBjYWxsIGNhbGxiYWNrIl9zKTsKIAogICAgIGF1dG8gaXRlcmF0b3Ig
PSB0aGlzT2JqZWN0LndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOwpAQCAtMjE4LDcgKzIxNyw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTSXRlcmF0b3I+IEpTQzo6SlNWYWx1ZSBpdGVyYXRvckZv
ckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCYKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQotICAgICAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKKyAgICAg
ICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgY2FsbERhdGEsIHRo
aXNWYWx1ZSwgYXJndW1lbnRzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTU1hcExpa2UuY3BwCmluZGV4IDIzNjRhZDliYTE0YTIzYzJjYjM4YmE1OWRjNDAz
NzRlZjA4YjBhYWQuLjg3NTFkYjNmNTdlYTZlY2M4YTg0MDg0Njk1YjI5ZDFjNTgwY2MwMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcApAQCAtNTMsMTMg
KzUzLDEyIEBAIHZvaWQgY2xlYXJCYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGJhCiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIGZ1bmN0aW9uID0gYmFja2luZ01h
cC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyKTsKIAot
ICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0
Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IEpT
Qzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEo
dm0sIGZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpO
b25lKQogICAgICAgICByZXR1cm47CiAKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nTWFwLCBhcmd1bWVudHMpOworICAgIEpTQzo6Y2Fs
bCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAmYmFja2luZ01hcCwg
YXJndW1lbnRzKTsKIH0KIAogdm9pZCBzZXRUb0JhY2tpbmdNYXAoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCYgYmFja2luZ01hcCwgSlNDOjpK
U1ZhbHVlIGtleSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQpAQCAtNjcsMTUgKzY2LDE0IEBAIHZvaWQg
c2V0VG9CYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNPYmplY3QmIGJhCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIGZ1bmN0aW9uID0gYmFja2luZ01hcC5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAKLSAgICBKU0M6OkNhbGxEYXRh
IGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25l
KQorICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7Cisg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJn
dW1lbnRzLmFwcGVuZChrZXkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwotICAgIEpT
Qzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgJmJhY2tpbmdNYXAsIGFyZ3VtZW50cyk7CisgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5nTWFwLCBhcmd1bWVudHMpOwogfQog
CiBKU0M6OkpTVmFsdWUgZm9yd2FyZEF0dHJpYnV0ZUdldHRlclRvQmFja2luZ01hcChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBiYWNraW5n
TWFwLCBjb25zdCBKU0M6OklkZW50aWZpZXImIGF0dHJpYnV0ZU5hbWUpCkBAIC04NywxNiArODUs
MTUgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGdW5jdGlvbkNhbGxUb0JhY2tpbmdNYXAoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE8KIHsKICAgICBhdXRvIGZ1bmN0aW9uID0gYmFj
a2luZ01hcC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uTmFtZSk7CiAKLSAgICBK
U0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxE
YXRhKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBp
ZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0g
SlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAg
ICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1
cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CiAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBjYWxsRnJhbWUuYXJn
dW1lbnRDb3VudCgpOyArK2NwdHIpCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1l
LnVuY2hlY2tlZEFyZ3VtZW50KGNwdHIpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgIHJldHVybiBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nTWFwLCBhcmd1bWVudHMpOworICAg
IHJldHVybiBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0
YSwgJmJhY2tpbmdNYXAsIGFyZ3VtZW50cyk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBmb3J3YXJkRm9y
RWFjaENhbGxUb0JhY2tpbmdNYXAoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgSlNDOjpKU09iamVjdCYgbWFwTGlrZSkKQEAgLTEwNywx
NiArMTA0LDE1IEBAIEpTQzo6SlNWYWx1ZSBmb3J3YXJkRm9yRWFjaENhbGxUb0JhY2tpbmdNYXAo
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgYXV0byogZnVuY3Rpb24g
PSBnbG9iYWxPYmplY3QuYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuanNET01CaW5kaW5nSW50
ZXJuYWxzKCkubV9mb3JFYWNoV3JhcHBlckZ1bmN0aW9uLmdldCgpOwogICAgIEFTU0VSVChmdW5j
dGlvbik7CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUg
PSBKU0M6OmdldENhbGxEYXRhKGdsb2JhbE9iamVjdC52bSgpLCBmdW5jdGlvbiwgY2FsbERhdGEp
OwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRv
IGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShnbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24p
OworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwogCiAg
ICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFw
cGVuZCgmcmVzdWx0LnNlY29uZC5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNw
dHIgPCBjYWxsRnJhbWUuYXJndW1lbnRDb3VudCgpOyArK2NwdHIpCiAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoY2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KGNwdHIpKTsKICAgICBBU1NFUlQo
IWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIHJldHVybiBKU0M6OmNhbGwoJmdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgJm1hcExpa2UsIGFyZ3VtZW50
cyk7CisgICAgcmV0dXJuIEpTQzo6Y2FsbCgmZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERh
dGEsICZtYXBMaWtlLCBhcmd1bWVudHMpOwogfQogCiB2b2lkIERPTU1hcEFkYXB0ZXI6OmNsZWFy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVj
dG9yLmgKaW5kZXggYjAzY2ExZGY2Y2U1ZTQ2MjU4NmVhNzg0YmZmOTczZTg2NGU1NDJhNi4uM2Rm
ZjIzOWM5MjljNGRlZGMxNTAzMTgxODcxOWVkNWVhNDFhNGE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBKU0M6OkNvbnN0cnVjdERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOwog
CiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
JikgeyB9CkBAIC03MCwxMCArNzAsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5s
aW5lIHZvaWQgSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpmaW5pc2hDcmUKICAgICBp
bml0aWFsaXplUHJvcGVydGllcyh2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q29uc3RydWN0VHlwZSBKU0RPTU5hbWVkQ29uc3Ry
dWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxp
bmUgSlNDOjpDb25zdHJ1Y3REYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCiB7CisgICAgSlNDOjpDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7CisgICAgY29uc3RydWN0RGF0YS50eXBlID0gSlNDOjpDb25zdHJ1Y3RUeXBl
OjpIb3N0OwogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0Owot
ICAgIHJldHVybiBKU0M6OkNvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVj
dERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmluZGV4IDcwM2YzN2YzMmVlYjMwY2FjMWQ3ZDY1MmRh
Zjg2MGEyOWM2NWQyNGMuLmVlY2Y0MzUyZWI3YTI3YzdjNTUwMWRhYzlkYmNmZDY2OWE3ZTUzZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcApAQCAtNjcs
MTAgKzY3LDkgQEAgdm9pZCBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2IKICAgICBhcmd1bWVudHMuYXBwZW5k
KGhhbmRsZXIpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoaGFuZGxlcik7CiAKLSAgICBKU0M6OkNh
bGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZt
LCB0aGVuRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpD
YWxsVHlwZTo6Tm9uZSk7Ci0gICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21pc2UsIGFyZ3VtZW50cyk7CisgICAgYXV0byBj
YWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIHRoZW5GdW5jdGlvbik7CisgICAgQVNTRVJU
KGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgY2FsbCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsRGF0YSwgcHJvbWlzZSwgYXJndW1lbnRz
KTsKIAogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4
Y2VwdGlvbigpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggZjQ3MDBmOWNlMTE1ZDNhODRkYWE3YjhmNjdiZTQ3
OGY4ZGRlZjc4MC4uOThhZDI2YWI5OTQ5MGIyNmJiY2Y4NjBhMDg3MTI3YWMzYmUyZGI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVk
LmNwcApAQCAtMjI4LDE1ICsyMjgsMTQgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWpl
Y3RlZFByb21pc2VXaXRoVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBp
ZiAoY2F1c2UgPT0gUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvckNhdXNlOjpOYXRpdmVHZXR0
ZXIpCiAgICAgICAgIHJlamVjdGlvblZhbHVlLT5zZXROYXRpdmVHZXR0ZXJUeXBlRXJyb3IoKTsK
IAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHJlamVjdEZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0g
ICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRh
ID0gZ2V0Q2FsbERhdGEobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCByZWplY3RGdW5jdGlvbik7
CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVqZWN0
aW9uVmFsdWUpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIHJlamVj
dEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1l
bnRzKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCByZWplY3RGdW5jdGlvbiwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1l
bnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIHBhcnNlQXNKU09OKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0TGlrZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVNldExpa2UuY3BwCmluZGV4IDQ2Mzky
ZDYxYTZjYmNhMWIwNTEwODQ2NDljY2I0ZThhZmJjZmUwZDkuLjdkNDdiMzk3NmEwOTg4YmE2NzYw
OTAxZDZiMmI3YzBjYjUzZWE1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU2V0TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01TZXRMaWtlLmNwcApAQCAtNjAsMTEgKzYwLDEwIEBAIHZvaWQgY2xlYXJCYWNraW5nU2V0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGJh
CiAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gYmFja2luZ1NldC5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9u
LmlzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6
OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxE
YXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAg
YXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NF
UlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKICAgICBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nU2V0LCBhcmd1bWVu
dHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxE
YXRhLCAmYmFja2luZ1NldCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBhZGRUb0JhY2tpbmdTZXQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCYg
YmFja2luZ1NldCwgSlNDOjpKU1ZhbHVlIGl0ZW0pCkBAIC03MywxMiArNzIsMTEgQEAgdm9pZCBh
ZGRUb0JhY2tpbmdTZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU09iamVjdCYgYmEKICAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBiYWNraW5nU2V0
LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBB
U1NFUlQoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwg
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlw
ZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsK
ICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMu
YXBwZW5kKGl0ZW0pOwotICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgJmJhY2tpbmdTZXQsIGFyZ3VtZW50cyk7CisgICAgSlND
OjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5n
U2V0LCBhcmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEF0dHJpYnV0ZUdldHRl
clRvQmFja2luZ1NldChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTT2JqZWN0JiBiYWNraW5nU2V0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGF0dHJpYnV0
ZU5hbWUpCkBAIC05MSwxNCArODksMTMgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGdW5jdGlvbkNh
bGxUb0JhY2tpbmdTZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE8KICAgICBK
U0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBiYWNraW5nU2V0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgZnVuY3Rpb25OYW1lKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpOwog
Ci0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uLCBj
YWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwor
ICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbFR5
cGU6Ok5vbmUpOwogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsg
KytjcHRyKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1
bWVudChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICByZXR1cm4gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCAmYmFja2luZ1NldCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gSlNDOjpj
YWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5nU2V0
LCBhcmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNr
aW5nU2V0KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBj
YWxsRnJhbWUsIEpTQzo6SlNPYmplY3QmIHNldExpa2UpCkBAIC0xMDksMTYgKzEwNiwxNSBAQCBK
U0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNraW5nU2V0KEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTQwogICAgIGF1dG8qIGZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0
LmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmpzRE9NQmluZGluZ0ludGVybmFscygpLm1fZm9y
RWFjaFdyYXBwZXJGdW5jdGlvbi5nZXQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogCi0gICAg
SlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YShnbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxs
RGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAg
ICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKIAogICAgIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQo
JnJlc3VsdC5zZWNvbmQuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwg
Y2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsgKytjcHRyKQogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVudChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gSlNDOjpjYWxsKCZnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZzZXRMaWtlLCBhcmd1bWVudHMpOwor
ICAgIHJldHVybiBKU0M6OmNhbGwoJmdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAm
c2V0TGlrZSwgYXJndW1lbnRzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4IDFiYWJjOWI4ZjRhZDFkNzk4OTY0MTVhMWE3NTdm
OGM0N2NlZDYyNGUuLmRhODUyNzc0ZDA5ZTI2YzE3NDMxMmMzZjY2M2M5YjMwOGRkMjE4MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKQEAgLTc1
LDEwICs3NSw4IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShq
c0Z1bmN0aW9uLCBjYWxsRGF0YSk7Ci0KLSAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGpzRnVuY3Rpb24pOwor
ICAgIGlmIChjYWxsRGF0YS50eXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIFJlZjxK
U0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgRXZlbnQqIHNh
dmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOwpAQCAtOTcsMTAgKzk1LDEw
IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVudHJ5U2Nv
cGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CiAKLSAg
ICAgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoJnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgICAgIEpTRXhlY1N0YXRlOjppbnN0
cnVtZW50RnVuY3Rpb25DYWxsKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsRGF0YSk7CiAK
ICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pOworICAgICAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChnbG9iYWxPYmplY3QsIEpTQzo6
UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2FsbERhdGEsIGdsb2JhbE9iamVj
dCwgYXJncywgZXhjZXB0aW9uKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENhbGxGdW5jdGlvbigmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDhjZGI4Zjc5Zjc1
ZDNmZGU0NDlkMzk3NjUzMzFlMjY3YmRjMGVhY2IuLmJlNmFhODgyMzg1MjgwZmRiYWYxMjE0ODEx
ZmRhMjZhY2UyYzUzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcApAQCAtMTM0LDExICsxMzQsMTAgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKIAogICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb247CiAKLSAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KHZtLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBoYW5kbGVFdmVudEZ1bmN0aW9uKTsKIAogICAgIC8vIElmIGpzRnVu
Y3Rpb24gaXMgbm90IGFjdHVhbGx5IGEgZnVuY3Rpb24gYW5kIHRoaXMgaXMgYW4gRXZlbnRMaXN0
ZW5lciwgc2VlIGlmIGl0IGltcGxlbWVudHMgY2FsbGJhY2sgaW50ZXJmYWNlLgotICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtX2lzQXR0cmlidXRlKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNTAsOCArMTQ5LDggQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAg
ICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBleGNlcHRpb24p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIGNhbGxEYXRhID0gZ2V0Q2Fs
bERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24pOworICAgICAgICBpZiAoY2FsbERhdGEudHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgZXZlbnQudGFyZ2V0KCktPnVuY2F1
Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjcmVhdGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgIidoYW5kbGVFdmVudCcgcHJvcGVydHkgb2YgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzMsMTEgKzE3MiwxMSBAQCB2
b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0s
IHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9i
amVjdCk7CiAKLSAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6
aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2FsbERhdGEp
OwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBoYW5kbGVFdmVudEZ1bmN0aW9uID09IGpzRnVu
Y3Rpb24gPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgZXZlbnQuY3Vy
cmVudFRhcmdldCgpKSA6IGpzRnVuY3Rpb247CiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJldHZhbCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBoYW5k
bGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgZXhj
ZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHZhbCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBoYW5kbGVF
dmVudEZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwogCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V4ZWNTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5j
cHAKaW5kZXggOTNhMjYwNWE5NTkxN2NmMTY4OGY1NjBhNDQ3NTllYzQ2OTAzZDJhMi4uYmVjYTU2
M2Y1NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcApAQCAtNDMsOSArNDMsOSBAQCB2b2lkIEpTRXhlY1N0
YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdAogICAgIGNvbnRleHQtPmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKS5w
cm9jZXNzUXVldWVTb29uKCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0
IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNl
cHRpb24pCitKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogewotICAgIHJldHVybiBKU0V4ZWNTdGF0ZTo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gSlNFeGVjU3Rh
dGU6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKIH0KIAogSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAppbmRleCAxNmIzMzkzOWVkMmFl
Y2E3OGQ2YzMyMjQxNzZhOTg5ZjhjY2M4M2QwLi5kZTFmNzI4NzcxMTIzOWNjNzVkOTM1MmMwZTI0
NjBiZWQ4NDExYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgK
QEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0aHJlYWRHbG9iYWxE
YXRhKCkuY3VycmVudFN0YXRlKCk7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6
OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpB
cmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
CiAgICAgewogICAgICAgICBKU0V4ZWNTdGF0ZSBjdXJyZW50U3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIHJldHVybiBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICB9OwogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbikKQEAgLTY3LDEwICs2NywxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1
ZSwgdW51c2VkKTsKICAgICB9OwogCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9maWxlZENh
bGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxp
bmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5
cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9maWxl
ZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9m
aWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpT
Qzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6
OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRp
b24pCiAgICAgewogICAgICAgICBKU0V4ZWNTdGF0ZSBjdXJyZW50U3RhdGUobGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBKU0M6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZWFzb24sIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlNDOjpwcm9m
aWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVhc29uLCBmdW5jdGlvbk9iamVjdCwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvZmlsZWRFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbiByZWFzb24sIGNvbnN0
IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQpAQCAtMTE4LDggKzExOCw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIGluc3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpT
Qzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnN0
cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6Q29u
c3RydWN0VHlwZSwgY29uc3QgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIHZvaWQg
aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSlND
OjpDYWxsRGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgSlNFeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgICAg
ICB0aHJlYWRHbG9iYWxEYXRhKCkuc2V0Q3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIFR5cGUganNUeXBlLCB0eXBl
bmFtZSBEYXRhVHlwZT4gc3RhdGljIHZvaWQgaW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0IERhdGFUeXBlJik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBqc1R5cGUsIHR5cGVuYW1lIERhdGFUeXBlPiBzdGF0aWMg
dm9pZCBpbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgRGF0YVR5cGUmKTsKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIG1fcHJldmlvdXNT
dGF0ZTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBtX2xvY2s7CkBAIC0xODIsNyArMTgyLDcgQEAg
cHJpdmF0ZToKICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBtX2N1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrOwogfTsKIAotSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmLCBKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24pOworSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25P
YmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pOwogSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaAppbmRleCA3Njc0Nzc3NTc4MzVl
YWVmODRlMGY4YmE5OTViZjE5OWIxZDFjNDRlLi4wMjIzYTFlOTFjMzQyZjc5OWZkMjg2ZGE5NzEx
NzRiMWJiNjc2MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBqc1R5cGUsIGNsYXNz
IERhdGFUeXBlPgotaW5saW5lIHZvaWQgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbklu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgY2FsbFR5cGUsIGNv
bnN0IERhdGFUeXBlJiBjYWxsRGF0YSkKK2lubGluZSB2b2lkIEpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEYXRhVHlwZSYgY2FsbERhdGEpCiB7CiAgICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnRpbWVsaW5lQWdlbnRUcmFja2luZyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDEsNyArNDEsNyBAQCBpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9u
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIFN0cmluZyByZXNvdXJj
ZU5hbWU7CiAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgIGludCBjb2x1bW5OdW1iZXIgPSAx
OwotICAgIGlmIChjYWxsVHlwZSA9PSBqc1R5cGUpIHsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9
PSBqc1R5cGUpIHsKICAgICAgICAgcmVzb3VyY2VOYW1lID0gY2FsbERhdGEuanMuZnVuY3Rpb25F
eGVjdXRhYmxlLT5zb3VyY2VVUkwoKTsKICAgICAgICAgbGluZU51bWJlciA9IGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCk7CiAgICAgICAgIGNvbHVtbk51bWJlciA9
IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKTsKQEAgLTUwLDE0
ICs1MCwxNCBAQCBpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihjb250ZXh0LCByZXNvdXJjZU5hbWUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLWlubGluZSB2b2lkIEpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q2Fs
bFR5cGUgdHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgZGF0YSkKK2lubGluZSB2b2lkIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGRhdGEpCiB7Ci0gICAgaW5zdHJ1bWVudEZ1bmN0
aW9uSW50ZXJuYWw8SlNDOjpDYWxsVHlwZSwgSlNDOjpDYWxsVHlwZTo6SlMsIEpTQzo6Q2FsbERh
dGE+KGNvbnRleHQsIHR5cGUsIGRhdGEpOworICAgIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFs
PEpTQzo6Q2FsbFR5cGUsIEpTQzo6Q2FsbFR5cGU6OkpTLCBKU0M6OkNhbGxEYXRhPihjb250ZXh0
LCBkYXRhKTsKIH0KIAotaW5saW5lIHZvaWQgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlv
bkNvbnN0cnVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBKU0M6OkNvbnN0cnVj
dFR5cGUgdHlwZSwgY29uc3QgSlNDOjpDb25zdHJ1Y3REYXRhJiBkYXRhKQoraW5saW5lIHZvaWQg
SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBKU0M6OkNvbnN0cnVjdERhdGEmIGRhdGEpCiB7Ci0gICAg
aW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWw8SlNDOjpDb25zdHJ1Y3RUeXBlLCBKU0M6OkNvbnN0
cnVjdFR5cGU6OkpTLCBKU0M6OkNvbnN0cnVjdERhdGE+KGNvbnRleHQsIHR5cGUsIGRhdGEpOwor
ICAgIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFsPEpTQzo6Q29uc3RydWN0VHlwZSwgSlNDOjpD
b25zdHJ1Y3RUeXBlOjpKUywgSlNDOjpDb25zdHJ1Y3REYXRhPihjb250ZXh0LCBkYXRhKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDM3YzVlMjNmNDBmMDQyZDQ4ZmIyN2YxNjEy
ZDZiNTM5MDBiMzY0NTguLjJjOWE3NmVmOGFjOTk4MWFmNjI5NDBhN2Q1ZDIxNDNiZTdmYmVlNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHAKQEAgLTQzLDE0ICs0MywxMyBAQCBKU0M6OkpTVmFsdWUgSlNOYXZpZ2F0b3I6OmdldFVzZXJN
ZWRpYShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIGF1dG8q
IGZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0KCktPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmpz
RE9NQmluZGluZ0ludGVybmFscygpLm1fZ2V0VXNlck1lZGlhU2hpbUZ1bmN0aW9uLmdldCgpOwog
ICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
SlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERh
dGEobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxE
YXRhLnR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBjYWxs
RnJhbWUuYXJndW1lbnRDb3VudCgpOyArK2NwdHIpCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
Y2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KGNwdHIpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU0M6
OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpcywgYXJn
dW1lbnRzKTsKICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcAppbmRleCBkZGNmMjg1YTZlNThiNzMyNTIxNmIzZDk3MjkwMTY5NGJjYzU5MzJiLi5h
YzQ5YTc3MmQ3YjRiMTI2MmFmN2M4Mjk0YzMwYzZmY2VmNDdhZjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAK
QEAgLTE1MywzNCArMTUzLDM1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxQbHVnaW4oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplCiAgICAgICAgIGFy
Z3VtZW50TGlzdC5hcHBlbmQoY2FsbEZyYW1lLT5hcmd1bWVudChpKSk7CiAgICAgQVNTRVJUKCFh
cmd1bWVudExpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSwgc2NyaXB0T2JqZWN0LCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlID09IENh
bGxUeXBlOjpIb3N0KTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSwgc2NyaXB0T2JqZWN0KTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlw
ZSA9PSBDYWxsVHlwZTo6SG9zdCk7CiAKICAgICAvLyBDYWxsIHRoZSBvYmplY3QuCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHNjcmlwdE9iamVjdCwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY3JpcHRPYmpl
Y3QsIGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUgcGx1Z2luRWxl
bWVudEN1c3RvbUdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENhbGxEYXRhJiBj
YWxsRGF0YSkKK0NhbGxEYXRhIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YShKU0hUTUxF
bGVtZW50KiBlbGVtZW50KQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOworCiAgICAgLy8gRmly
c3QsIGFzayB0aGUgcGx1Zy1pbiB2aWV3IGJhc2UgZm9yIGl0cyBydW50aW1lIG9iamVjdC4KICAg
ICBpZiAoSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVn
aW5WaWV3QmFzZShlbGVtZW50KSkgewotICAgICAgICBDYWxsRGF0YSBzY3JpcHRPYmplY3RDYWxs
RGF0YTsKLSAgICAgICAgCiAgICAgICAgIFZNJiB2bSA9IHNjcmlwdE9iamVjdC0+dm0oKTsKLSAg
ICAgICAgaWYgKHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzY3Jp
cHRPYmplY3QsIHNjcmlwdE9iamVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAg
ICAgICAgIHJldHVybiBDYWxsVHlwZTo6Tm9uZTsKLQotICAgICAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cisg
ICAgICAgIGF1dG8gc2NyaXB0T2JqZWN0Q2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgc2NyaXB0
T2JqZWN0KTsKKyAgICAgICAgaWYgKHNjcmlwdE9iamVjdENhbGxEYXRhLnR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsVHlwZTo6SG9zdDsK
KyAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5J
bnN0YW5jZShlbGVtZW50LT53cmFwcGVkKCkpOworICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5z
dGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpKSB7CisgICAgICAgICAgICBjYWxs
RGF0YS50eXBlID0gQ2FsbFR5cGU6Okhvc3Q7CisgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsUGx1Z2luOworICAgICAgICB9CiAgICAgfQotICAgIAotICAgIEluc3Rh
bmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQtPndyYXBwZWQoKSk7Ci0gICAg
aWYgKCFpbnN0YW5jZSB8fCAhaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgp
KQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbFBsdWdpbjsKLSAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CisKKyAgICBy
ZXR1cm4gY2FsbERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKaW5k
ZXggOGQ1YjI4ZGMzMTVjNGRhOTBiOTY0ZDQzMmE0MTVjYmFiNDJiNjFjNC4uOGQ4NTA1ZTJiMjY0
NDdlMGJmNDA0NDdiNDQ5NzRlMjg2YTc1ODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKQEAgLTM5LDYgKzM5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0
T3duUHJvcGVydHlTbG90KEpTSFRNTEVsZW1lbnQqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBwbHVnaW5FbGVt
ZW50Q3VzdG9tUHV0KEpTSFRNTEVsZW1lbnQqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBw
dXRSZXN1bHQpOwotICAgIEpTQzo6Q2FsbFR5cGUgcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxE
YXRhKEpTSFRNTEVsZW1lbnQqLCBKU0M6OkNhbGxEYXRhJik7CisgICAgSlNDOjpDYWxsRGF0YSBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCopOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbS5jcHAKaW5kZXggZTRjMjUwNGRjZTdlYmU3YjgyNmM1ZDZmM2EwMWU2MzhkMDM1YzNiNy4u
NWUwZWQwMzhmYWU4ZDE5MGUwNzI4MjliZDEzOGFlNWU3ZjVjN2UwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtNDUsMTUgKzQ1LDE0IEBA
IFJlZjxSZWFkYWJsZVN0cmVhbT4gUmVhZGFibGVTdHJlYW06OmNyZWF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqCiAKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IEpTQzo6
YXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY2xpZW50RGF0
YS5idWlsdGluTmFtZXMoKS5SZWFkYWJsZVN0cmVhbVByaXZhdGVOYW1lKCkpKTsKIAotICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0
cnVjdG9yLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25z
dHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3RE
YXRhKHZtLCBjb25zdHJ1Y3Rvcik7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBD
b25zdHJ1Y3RUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgYXJncy5hcHBlbmQoc291cmNlID8gdG9KU05ld2x5Q3JlYXRlZCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgJmdsb2JhbE9iamVjdCwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc1Vu
ZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIGF1
dG8gbmV3UmVhZGFibGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVTdHJlYW0qPih2
bSwgSlNDOjpjb25zdHJ1Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CisgICAgYXV0byBuZXdSZWFkYWJsZVN0
cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHZtLCBKU0M6OmNvbnN0cnVj
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3Mp
KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgcmV0dXJuIGNyZWF0ZShn
bG9iYWxPYmplY3QsICpuZXdSZWFkYWJsZVN0cmVhbSk7CkBAIC02NCwxMCArNjMsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlND
OjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0
YSh2bSwganNGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6
OkNhbGxUeXBlOjpOb25lKTsKLSAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxP
YmplY3QsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVu
dHMpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9u
KTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTIwLDE1ICsxMTgsMTQgQEAgdm9pZCBS
ZWFkYWJsZVN0cmVhbTo6bG9jaygpCiAKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IEpTQzo6YXNP
YmplY3QobV9nbG9iYWxPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY2xpZW50RGF0
YS5idWlsdGluTmFtZXMoKS5SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlTmFtZSgp
KSk7CiAKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlID0gY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3Ry
dWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVj
dFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0g
Z2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3IpOworICAgIEFTU0VSVChjb25zdHJ1Y3RE
YXRhLnR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHJlYWRhYmxlU3RyZWFtKCkpOwogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNDOjpjb25zdHJ1Y3QoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzKTsKKyAgICBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0
b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKaW5kZXggMDFkNTE1MTRiNGYzZjg2Y2Uy
NmQ4M2I1NDJjMWZkZjc5ZTMzODM3MC4uZDk5YmU4OWZlNTU4YzdhNGFjNWY3ZjQyMzIxYWJlZDU0
ZjFjZjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTQzLDkgKzQzLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSByZWFkYWJs
ZVN0cmVhbUNhbGxGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmd1bWVudHMpCiB7Ci0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCksIGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICByZXR1cm4gY2FsbCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3VtZW50cyk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEobGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpLCBqc0Z1bmN0aW9uKTsKKyAgICByZXR1cm4gY2FsbCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRz
KTsKIH0KIAogSlNDOjpKU1ZhbHVlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omlu
dm9rZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2Jq
ZWN0JiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFt
ZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IDhlNGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIyOGYuLjAwMzk4YWU3
YzhkNGU1ZjIwZjU2NTg1ZTY3MGRlY2EyYmNjYjRkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtOTUsOSArOTUsOCBAQCB2b2lkIFNj
aGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVgogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBtX2Z1bmN0aW9uLmdldCgp
LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1
dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgbV9mdW5jdGlvbi5nZXQoKSk7CisgICAgaWYg
KGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwpAQCAt
MTEyLDEwICsxMTEsMTAgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbklu
Q29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKCZjb250
ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVu
Y3Rpb25DYWxsKCZjb250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwotICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBtX2Z1bmN0aW9uLmdldCgp
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzLCBleGNlcHRpb24pOwor
ICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQ
cm9maWxpbmdSZWFzb246Ok90aGVyLCBtX2Z1bmN0aW9uLmdldCgpLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlLCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbigmY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggM2E0ODAyMjhkMjRiYWU5ZDllODA5
YTY1Y2YyZjhhOTQxYjliZWIyNi4uYWVmMDVhMzFhOWRlZGFkZGYyOTBkZjE5MjA0NWVlZjk4MjNm
MWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTY2NiwxNCArNjY2LDEzIEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJv
bGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0CiAKICAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU1NjIKICAgICAgICAgLy8gR2V0dGluZyBDYWxsRGF0YS9DYWxsVHlwZSBzaG91bGRuJ3QgYmUg
cmVxdWlyZWQgdG8gY2FsbCBpbnRvIEpTLgotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh3b3JsZC52bSgpLCBmdW5jdGlv
bk9iamVjdCwgY2FsbERhdGEpOwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHdvcmxkLnZtKCksIGZ1
bmN0aW9uT2JqZWN0KTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKICAgICAgICAgICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIHByZXBh
cmUgSmF2YVNjcmlwdCBhc3luYyBmdW5jdGlvbiB0byBiZSBjYWxsZWQiX3MgfSB9OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0
YXRlOjpwcm9maWxlZENhbGwoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90
aGVyLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmcHJveHksIG1hcmtlZEFy
Z3VtZW50cywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHJldHVyblZhbHVlID0gSlNF
eGVjU3RhdGU6OnByb2ZpbGVkQ2FsbCgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVu
dHMsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIH0gd2hpbGUgKGZhbHNlKTsKIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CkBAIC03
MzIsOSArNzMxLDggQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3Vz
VXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
YXNPYmplY3QodGhlbkZ1bmN0aW9uKS0+bWV0aG9kVGFibGUod29ybGQudm0oKSktPmdldENhbGxE
YXRhKGFzT2JqZWN0KHRoZW5GdW5jdGlvbiksIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEod29y
bGQudm0oKSwgdGhlbkZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkgewogICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc3Miw3ICs3NzAsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZAogICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbEhhbmRsZXIpOwogICAgIGFyZ3Vt
ZW50cy5hcHBlbmQocmVqZWN0SGFuZGxlcik7CiAKLSAgICBjYWxsKCZnbG9iYWxPYmplY3QsIHRo
ZW5GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRz
KTsKKyAgICBjYWxsKCZnbG9iYWxPYmplY3QsIHRoZW5GdW5jdGlvbiwgY2FsbERhdGEsIHJlc3Vs
dC52YWx1ZSgpLCBhcmd1bWVudHMpOwogfQogCiBFeHBlY3RlZDx2b2lkLCBFeGNlcHRpb25EZXRh
aWxzPiBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1l
bnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzNzFkNzhlZjhiNzZhY2VhMTk2OGY2MjQyNWI2
NjYxOTM2NDQ3ZDhjLi4wOWY1NmY4MTc5ZGUwOTE2YzU1NDgyNTlmOWJjMWI2NDIwOGYxYzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQpAQCAtMjcwNCw3ICsyNzA0LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAg
ICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzR2V0Q2FsbERhdGEoJGludGVyZmFjZSkpIHsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q2FsbERhdGEoSlND
OjpKU0NlbGwqKTtcblxuIik7CiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPEphdmFTY3JpcHRD
b3JlL0NhbGxEYXRhLmg+In0gPSAxOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3Zl
cnJpZGVzR2V0Q2FsbERhdGEifSA9IDE7CiAgICAgfQpAQCAtNTYxOSwxMiArNTYxOSwxMiBAQCBz
dWIgR2VuZXJhdGVQbHVnaW5DYWxsCiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmgiKTsKIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxUeXBl
ICR7Y2xhc3NOYW1lfTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERh
dGEpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsRGF0YSAke2NsYXNzTmFtZX06
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IntcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcblxu
Iik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRD
dXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0LCBjYWxsRGF0YSk7XG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0
aGlzT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CkBAIC01NjU0LDEwICs1NjU0LDEyIEBAIHN1YiBH
ZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zCiAgICAgICAgIEdlbmVyYXRlTGVnYWN5Q2Fs
bGVyRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdh
Y3lDYWxsZXJzWzBdKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsVHlw
ZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSlc
biIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxEYXRhICR7Y2xhc3NOYW1lfTo6Z2V0
Q2FsbERhdGEoSlNDZWxsKilcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBDYWxsRGF0YSBjYWxsRGF0YTtcbiIpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjYWxsRGF0YS50eXBlID0gQ2FsbFR5cGU6Okhvc3Q7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY2FsbCR7Y2xhc3NOYW1lfTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIGNhbGxEYXRhO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNDUwYjgz
NWQzZmY0MDBmZWZlZGY2YmRkOWRiYTUzMTBmNmEwMTQ4MC4uY2JiYjIyZjU0M2I3MDZjNjIxYWUz
NWY0ZmYwMzY3NWIzMWQxOWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTI2MDksMTAgKzI2MDksMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNUZXN0T2JqKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogfQogCi1DYWxsVHlwZSBKU1Rlc3RPYmo6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTVGVzdE9i
ajo6Z2V0Q2FsbERhdGEoSlNDZWxsKikKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBj
YWxsRGF0YS50eXBlID0gQ2FsbFR5cGU6Okhvc3Q7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY2FsbEpTVGVzdE9iajsKLSAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CisgICAgcmV0
dXJuIGNhbGxEYXRhOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RPYmoqIElETEF0dHJp
YnV0ZTxKU1Rlc3RPYmo+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggYTY0ZDRmYjdhNDVhNTdlMzdj
MWYzMjZmZTc4NjJhM2Q3ZjE2NDNlZS4uYmU2OWY2Y2I1NGJkZDM2NTZjMDE0ZGY2NjE5MDU5MDNm
ZjAzNGYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CisgICAgc3RhdGljIEpT
Qzo6Q2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqKTsKIAogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNw
cAppbmRleCA3NDMyNDYwOTlhYTFiODcyZWJmNDYzMWEwZmRlM2I4YTM0ZGRiNDIzLi4wOTgwMDAx
ZDgzNmJhNmQ0Yjk5YjUxZjNlOTQ3YWJjYTdmNDNmYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlLmNwcApAQCAtMTk2LDEyICsxOTYsMTIgQEAgYm9vbCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2IKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLUNhbGxUeXBlIEpTVGVzdFBs
dWdpbkludGVyZmFjZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERh
dGEpCitDYWxsRGF0YSBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENhbGxEYXRhKEpTQ2VsbCog
Y2VsbCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdpbkludGVy
ZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEodGhp
c09iamVjdCwgY2FsbERhdGEpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2Fs
bERhdGEodGhpc09iamVjdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFBsdWdpbkludGVy
ZmFjZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuaAppbmRleCBmOTQ3YmE4OWFiZDk4MTEzNDNiNGQ3M2I1NjllNzU1YjYyNjEyZTZjLi5l
Y2VlNGE5YmViM2Q2ZjY2ODg1YTc0NGMwY2YzYmEzN2E2NjMxZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBs
dWdpbkludGVyZmFjZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlND
OjpDYWxsRGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRhIGdldENhbGxEYXRhKEpTQzo6
SlNDZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IGE0MTdmNWMzOGJkYTc5NGYxNmVm
ZGE0MjYyNWYyMzBhNDAwMTlhNjguLjRjMjYxM2JiMjE3NDYzYTc3MzMwNGUwY2UyZjg1OGM5MGRi
MTUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMTg4LDE1ICsx
ODgsMTQgQEAgYm9vbCBfTlBOX0ludm9rZURlZmF1bHQoTlBQLCBOUE9iamVjdCogbywgY29uc3Qg
TlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3UKICAgICAgICAgCiAgICAgICAgIC8vIENh
bGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG9iai0+
aW1wOwotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2Fs
bERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRB
cmdzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0LCBhcmdM
aXN0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGZ1bmN0aW9uLCBhcmdMaXN0KTsKKyAgICAg
ICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsRGF0YSwgZnVuY3Rpb24sIGFyZ0xpc3QpOwogCiAgICAgICAgIC8vIENvbnZlcnQg
YW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252
ZXJ0VmFsdWVUb05QVmFyaWFudChsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXN1bHRWLCByZXN1bHQp
OwpAQCAtMjQwLDE2ICsyMzksMTUgQEAgYm9vbCBfTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVj
dCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCoKIAogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKICAg
ICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG9iai0+aW1wLT5nZXQobGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3Ry
aW5nKCkpKTsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIENh
bGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
TGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0
ViA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBvYmotPmltcCwgYXJnTGlzdCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpT
Qzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIG9iai0+aW1w
LCBhcmdMaXN0KTsKIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBv
ZiB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0ViwgcmVzdWx0KTsKQEAgLTUzMSwxNSArNTI5LDE0IEBA
IGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBh
cmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhlIGNv
bnN0cnVjdG9yIG9iamVjdC4KICAgICAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IG9iai0+aW1w
OwotICAgICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3REYXRhKTsKLSAgICAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlw
ZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2
bSwgY29uc3RydWN0b3IpOworICAgICAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENvbnN0
cnVjdFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAg
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZh
cmlhbnRBcmdzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0
LCBhcmdMaXN0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFy
Z0xpc3QpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNvbnN0cnVjdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCk7CiAgICAg
ICAgIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICAgICAgICAg
Y29udmVydFZhbHVlVG9OUFZhcmlhbnQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0ViwgcmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpp
bmRleCBlOTA2MjIxY2E5OGMzZGFmYzczMzMwZTU4MmE0ZDFmNjZkYmY4OGI4Li44MzExMTE3NDgw
MTFmZTY2MTFhNWU3YmFlYjBmZDY5OGQwZTg3OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zNDcsOSArMzQ3LDggQEAgLSAoaWQpY2Fs
bFdlYlNjcmlwdE1ldGhvZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkg
KilhcmdzCiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmdW5j
dGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgU3RyaW5nKG5hbWUpKSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRh
KTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdMaXN0OwpAQCAtMzYwLDcgKzM1OSw3IEBAIC0gKGlkKWNhbGxXZWJTY3JpcHRN
ZXRob2Q6KE5TU3RyaW5nICopbmFtZSB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJncwogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlv
bjsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIFtzZWxmIF9pbXBdLCBhcmdMaXN0LCBleGNlcHRpb24pOwor
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb24sIGNh
bGxEYXRhLCBbc2VsZiBfaW1wXSwgYXJnTGlzdCwgZXhjZXB0aW9uKTsKIAogICAgIGlmIChleGNl
cHRpb24pIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
CmluZGV4IDA2OWFiZTJlNTU4OGFjNTc0MDdlYmQwN2EyYzZmNWQ2ZDQ1NGY3YjguLmUzYWUyMjZj
N2ZmNzNmYjdlYzFjNTY1MjBlZjc4ZjE2Y2NkMGYyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBDYWxsRGF0
YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDZlODc3ZDJlYjdmNDRkMDNhMjhlMTcx
MDgzYmQzZDBmMGJiOTg4OWYuLjA1MDBkYjk2ODFlODlmY2I0NDFiMjQ1YmJkOWVkZmJjYTMxNTYy
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI4
MCwxNCArMjgwLDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxP
YmpDRmFsbGJhY2tPYmplY3QoSlNHbG9iYWxPYmplY3QqIGxleGljCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1DYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisKICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCk7CiAgICAgaWQgdGFyZ2V0
T2JqZWN0ID0gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRPYmplY3QoKTsKLSAgICBpZiAoIVt0
YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRN
ZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pCi0gICAgICAgIHJldHVybiBDYWxs
VHlwZTo6Tm9uZTsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsT2JqQ0ZhbGxi
YWNrT2JqZWN0OwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKyAgICBpZiAoW3RhcmdldE9i
amVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZy
b21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSkgeworICAgICAgICBjYWxsRGF0YS50eXBlID0g
Q2FsbFR5cGU6Okhvc3Q7CisgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxP
YmpDRmFsbGJhY2tPYmplY3Q7CisgICAgfQorCisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiBi
b29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCA5ZDVkNjBkZWYzNTc1NGJlMWUwZTA2
MjBlNDFlZGI5OGVmZTM5ZWU1Li4wMzY0ZDVhMmUzOWI0OWE0MWUyYjMzN2U0MmUzMTc0MmM5ODA4
OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIzMywx
OCArMjMzLDE3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50
aW1lT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCi1DYWxsVHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDYWxsRGF0
YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIFJ1bnRpbWVPYmpl
Y3Q6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
KwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+
KGNlbGwpOwotICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJu
IENhbGxUeXBlOjpOb25lOwotICAgIAotICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0
aGlzT2JqZWN0LT5tX2luc3RhbmNlOwotICAgIGlmICghaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tl
RGVmYXVsdE1ldGhvZCgpKQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgCi0g
ICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJ1bnRpbWVPYmplY3Q7Ci0gICAgcmV0
dXJuIENhbGxUeXBlOjpIb3N0OworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luc3RhbmNlICYmIHRo
aXNPYmplY3QtPm1faW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpKSB7Cisg
ICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsVHlwZTo6SG9zdDsKKyAgICAgICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJ1bnRpbWVPYmplY3Q7CisgICAgfQorCisgICAgcmV0dXJu
IGNhbGxEYXRhOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UnVudGltZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQpAQCAtMjYxLDE4ICsyNjAsMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdC5pc09iamVjdCgpID8ganNDYXN0
PEpTT2JqZWN0Kj4ocmVzdWx0LmFzQ2VsbCgpKSA6IGNvbnN0cnVjdG9yKTsKIH0KIAotQ29uc3Ry
dWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NvbnN0cnVjdERhdGEgUnVudGltZU9iamVjdDo6
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50
aW1lT2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKQotICAg
ICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKLSAgICAKLSAgICBSZWZQdHI8SW5zdGFu
Y2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKLSAgICBpZiAoIWluc3RhbmNl
LT5zdXBwb3J0c0NvbnN0cnVjdCgpKQotICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9u
ZTsKLSAgICAKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSdW50aW1l
Q29uc3RydWN0b3I7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgaWYgKHRo
aXNPYmplY3QtPm1faW5zdGFuY2UgJiYgdGhpc09iamVjdC0+bV9pbnN0YW5jZS0+c3VwcG9ydHND
b25zdHJ1Y3QoKSkgeworICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDb25zdHJ1Y3RUeXBl
OjpIb3N0OworICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSdW50
aW1lQ29uc3RydWN0b3I7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAK
IHZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgKaW5kZXggM2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJm
MC4uMDQ0YzBlYzhlZDFmZWM1MmEzZDUxYjFlNjNjOWQ0YzhlOGMxNmQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Ci0gICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAg
c3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3REYXRhIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGI3ZTJmM2FiZmMzNzVhN2U2MDQ2NzhmZmY1NmM2OGVmOGY5MWI0MGYu
LjVmZjk0ZjUyNzU2ZjFkZTc5Yzc4OGNhNzgwMmFmNGJmMDk2NjFkMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM2MiwxNCArNDM2MiwxMyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgICAgICBpZiAo
IW1ldGhvZE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBKU0M6
OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBhdXRvIGNhbGxUeXBlID0gbWV0aG9kT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKG1ldGhvZE9iamVjdCwgY2FsbERhdGEpOwot
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0
byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIG1ldGhvZE9iamVjdCk7CisgICAgICAg
IGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBub0FyZ3Vt
ZW50czsKICAgICAgICAgQVNTRVJUKCFub0FyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAg
ICAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIG1ldGhvZE9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBjb250cm9sbGVyT2JqZWN0LCBub0FyZ3VtZW50cyk7CisgICAgICAgIEpT
Qzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgbWV0aG9kT2JqZWN0LCBjYWxsRGF0YSwgY29u
dHJvbGxlck9iamVjdCwgbm9Bcmd1bWVudHMpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogCiAgICAgICAgIG1faGF2ZVNldFVwQ2FwdGlvbkNvbnRhaW5lciA9IHRydWU7CkBAIC03
MjQzLDEyICs3MjQyLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290JiByb290KQogCiAgICAgICAgIGF1dG8qIGZ1bmN0aW9uID0g
ZnVuY3Rpb25WYWx1ZS50b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgICAgIGF1dG8gY2FsbFR5cGUgPSBmdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gSlND
OjpDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxs
VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGNv
bnRyb2xsZXJWYWx1ZSA9IEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgJmdsb2JhbE9iamVjdCwgYXJnTGlzdCk7CisgICAgICAgIGF1
dG8gY29udHJvbGxlclZhbHVlID0gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5j
dGlvbiwgY2FsbERhdGEsICZnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBzY29wZS5j
bGVhckV4Y2VwdGlvbigpOwogICAgICAgICBhdXRvKiBjb250cm9sbGVyT2JqZWN0ID0gSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPih2bSwgY29udHJvbGxlclZhbHVlKTsKICAgICAg
ICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQpAQCAtNzMyMSwxNCArNzMxOSwxMyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVD
aGFuZ2UoKQogCiAgICAgICAgIGF1dG8qIGZ1bmN0aW9uID0gZnVuY3Rpb25WYWx1ZS50b09iamVj
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIGF1dG8gY2FsbFR5
cGUgPSBmdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAg
ICAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAg
ICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z0xpc3Q7CiAgICAgICAgIEFTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAg
ICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGNvbnRyb2xsZXJPYmplY3QsIGFyZ0xpc3QpOworICAgICAgICBKU0M6OmNhbGwoJmxl
eGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgY29udHJvbGxlck9iamVjdCwg
YXJnTGlzdCk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CkBAIC03MzY1LDE0ICs3
MzYyLDEzIEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpnZXRDdXJyZW50TWVkaWFDb250cm9s
c1N0YXR1cygpCiAKICAgICAgICAgYXV0byogZnVuY3Rpb24gPSBmdW5jdGlvblZhbHVlLnRvT2Jq
ZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKLSAgICAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgYXV0byBjYWxs
VHlwZSA9IGZ1bmN0aW9uLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBm
dW5jdGlvbik7CiAgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAg
ICAgICAgQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIGlmIChjYWxs
VHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9
PSBKU0M6OkNhbGxUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIGF1dG8gb3V0cHV0VmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNvbnRyb2xsZXJPYmplY3QsIGFyZ0xpc3QpOwor
ICAgICAgICBhdXRvIG91dHB1dFZhbHVlID0gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBmdW5jdGlvbiwgY2FsbERhdGEsIGNvbnRyb2xsZXJPYmplY3QsIGFyZ0xpc3QpOwogCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNjBjYjRmZWYzNDI5NDE2
YmU5ZDgzYjEwYzQxNjE5NjIwYWRjMTliZS4uOTI1ODdiZWVkNDI4MTE0N2ZhOTMzODIwNzViZmVj
OTA1YzUzYzJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCkBAIC00MTIsMTIgKzQxMiwxMSBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKICAgICAgICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBKU0M6
OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RU
YWJsZSh2bSktPmdldENhbGxEYXRhKG92ZXJsYXksIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5
cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgb3ZlcmxheSk7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxs
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgb3ZlcmxheSwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0
KTsKKyAgICBjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBvdmVybGF5LCBjYWxsRGF0YSwgJmds
b2JhbE9iamVjdCwgYXJnTGlzdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVkMTkxNzMxMmM4NDllZjVhNWZl
ZmUxOTFkMzA1ZTA0NDI4NzRiNTcuLjM1Y2JhNDEzOWJiNjI1MjE2OGI5NWRhOGFlOWNhYjk1OTA0
M2Y5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2NTAsMTYgKzQ2
NTAsMTUgQEAgSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlMKICAgICBBU1NFUlQodmFsdWUuaXNGdW5j
dGlvbih2bSkpOwogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gdmFsdWUuZ2V0T2JqZWN0KCk7
Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxs
RGF0YSh2bSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2Fs
bFR5cGU6Ok5vbmUpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBh
cmd1bWVudHMuYXBwZW5kKGJ1ZmZlcik7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzcmNCeXRlT2Zm
c2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNyY0xlbmd0aCk7CiAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIHJldHVybiBKU0M6OmNhbGwoJmxleGljYWxH
bG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIEpTQzo6anNVbmRlZmlu
ZWQoKSwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDA1ZDEyOTI5Mzk1ODJmMDRjNDMyZDMw
YzE0MmRiYTVkYWEwYmYxMTUuLmIwNTNhMGVmODA3ZGRiYWNiODdmYWMyMzViODJhYzAxOGNjMzU3
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0yNDcsMTUgKzI0NywxNiBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTlBKU09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNDYXN0PEpTTlBPYmplY3Qq
PihvYmplY3QpLT5jYWxsT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKLUpT
Qzo6Q2FsbFR5cGUgSlNOUE9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqIGNlbGwsIEpT
Qzo6Q2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgSlNOUE9iamVjdDo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTTlBPYmplY3Qq
IHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmICghdGhpc09i
amVjdC0+bV9ucE9iamVjdCB8fCAhdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5pbnZv
a2VEZWZhdWx0KQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0KLSAgICBjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsTlBKU09iamVjdDsKLSAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbnBPYmplY3QgJiYgdGhpc09iamVjdC0+bV9u
cE9iamVjdC0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CisgICAgICAgIGNhbGxEYXRhLnR5cGUg
PSBDYWxsVHlwZTo6SG9zdDsKKyAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bE5QSlNPYmplY3Q7CisgICAgfQorICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMjY2LDE1
ICsyNjcsMTggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4oY29uc3RydWN0b3IpLT5jYWxsQ29uc3RydWN0b3Io
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAotQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKK0NvbnN0cnVjdERhdGEgSlNOUE9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
IGNlbGwpCiB7CisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworCiAgICAgSlNOUE9i
amVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKCF0
aGlzT2JqZWN0LT5tX25wT2JqZWN0IHx8ICF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3Mt
PmNvbnN0cnVjdCkKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgaWYg
KHRoaXNPYmplY3QtPm1fbnBPYmplY3QgJiYgdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNz
LT5jb25zdHJ1Y3QpIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ29uc3RydWN0VHlw
ZTo6SG9zdDsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RXaXRoQ29uc3RydWN0b3I7CisgICAgfQogCi0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3RXaXRoQ29uc3RydWN0b3I7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5
cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIGJvb2wgSlNOUE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggZmE5ODQzMjVjMmMxMjIwNTdkODJmMzA5YTlhNjQz
MWY5NWMzYTQyNC4uYjBhNGU3NGZhNjk0ZDY0YTA3YmQ2NTc1MjljMTU4NDAzNzBkMjllZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaApAQCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6
OkNhbGxEYXRhJik7Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIEpTQzo6
Q2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqKTsKKyAgICBzdGF0aWMgSlNDOjpDb25z
dHJ1Y3REYXRhIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNw
cAppbmRleCBhN2ZiNmI1ZTkyZDY2MTVmYWRhMTg2NDI3MTZmMTEyZWVkYjNiOTk5Li45MDAzNTMx
ZTA4YjdkNmVmNzExYzVjMTRmMWFhMzliNGVkZjA1Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAt
MTA5LDggKzEwOSw3IEBAIGJvb2wgTlBKU09iamVjdDo6aGFzTWV0aG9kKE5QSWRlbnRpZmllciBt
ZXRob2ROYW1lKQogICAgIEpTVmFsdWUgdmFsdWUgPSBtX2pzT2JqZWN0LT5nZXQobGV4aWNhbEds
b2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGlkZW50aWZpZXJSZXApKTsgICAgCiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJldHVybiBnZXRDYWxsRGF0YSh2bSwgdmFsdWUs
IGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKKyAgICByZXR1cm4gdmFsdWUuaXNGdW5jdGlv
bih2bSk7CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aW52b2tlKE5QSWRlbnRpZmllciBtZXRob2RO
YW1lLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
TlBWYXJpYW50KiByZXN1bHQpCkBAIC0yNzcsOSArMjc2LDggQEAgYm9vbCBOUEpTT2JqZWN0Ojpj
b25zdHJ1Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIE4KICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwot
ICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIG1f
anNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdERhdGEpOwotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgbV9qc09iamVjdC5nZXQoKSk7CisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBDb252ZXJ0IHRoZSBwYXNzZWQgaW4gYXJndW1lbnRzLgpAQCAtMjg4LDcgKzI4Niw3IEBAIGJv
b2wgTlBKU09iamVjdDo6Y29uc3RydWN0KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50
MzJfdCBhcmd1bWVudENvdW50LCBOCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQobV9vYmpl
Y3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUobV9vYmplY3RNYXAtPmdsb2JhbE9iamVj
dCgpLCBhcmd1bWVudHNbaV0pKTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJndW1lbnRMaXN0Lmhh
c092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgbV9qc09iamVjdC5nZXQoKSwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1
Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9qc09iamVjdC5nZXQoKSwgY29uc3RydWN0RGF0YSwg
YXJndW1lbnRMaXN0KTsKICAgICAKICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIG5ldyBv
YmplY3QuCiAgICAgbV9vYmplY3RNYXAtPmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsICpyZXN1bHQpOwpAQCAtMzAyLDkgKzMwMCw4IEBAIGJvb2wg
TlBKU09iamVjdDo6aW52b2tlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGZ1bmN0aW9uLCBjCiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBm
dW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
KyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBpZiAo
Y2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gQ29udmVydCB0aGUgcGFzc2VkIGluIGFyZ3VtZW50cy4KQEAgLTMxMyw3ICszMTAs
NyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbiwgYwogICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5k
KG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50c1tpXSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmd1bWVudExpc3QuaGFz
T3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9qc09iamVjdC5nZXQo
KSwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgbV9qc09iamVjdC5nZXQoKSwgYXJndW1l
bnRMaXN0KTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQppbmRleCBhNjE0NWUwMmQzZDYzNWYzYWQ0MTQyOWQ1NzM5ZDAzMzlkYzQyNDY0
Li5iOWFiNGViZDg1MmExNmVlYTZiNTcyMzRkMDRlNjBiZDY3M2NkN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC05MjAsMTYgKzkyMCwxNSBAQCBib29s
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlKHVpbnQzMl90IG9iamVjdElELCBj
b25zdCBJZGVudGlmaWVyJiBtZQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwogICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBvYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXRo
b2ROYW1lKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1
bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAg
ICBkZW1hcnNoYWxWYWx1ZXMobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnRzRGF0YSwgYXJn
dW1lbnRzTGVuZ3RoLCBhcmdMaXN0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJnTGlzdC5oYXNP
dmVyZmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2Fs
bERhdGEsIG9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIAogICAgIG1hcnNoYWxWYWx1ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwpAQCAtOTU2LDE2ICs5NTUsMTUgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQodWludDMyX3Qgb2JqZWN0SUQsIGRh
dGFfdCBhcmd1bWUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAK
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQo
KS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERh
dGEob2JqZWN0LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgb2JqZWN0KTsKKyAgICBpZiAo
Y2FsbERhdGEudHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1hcnNoYWxWYWx1ZXMo
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdM
aXN0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCi0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBjYWxs
VHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0
KTsKICAgICAKICAgICBtYXJzaGFsVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHJl
c3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKQEAg
LTk5MywxNiArOTkxLDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpjb25z
dHJ1Y3QodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCBhcmd1bWVudHNECiAKICAgICBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3QocGx1Z2luV29ybGQoKSk7CiAKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0g
ICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKLSAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQorICAgIGF1dG8gY29uc3RydWN0RGF0YSA9
IGdldENvbnN0cnVjdERhdGEodm0sIG9iamVjdCk7CisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGRlbWFyc2hhbFZhbHVlcyhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudHNEYXRhLCBhcmd1bWVudHNMZW5ndGgsIGFyZ0xpc3QpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBjb25zdHJ1Y3RE
YXRhLCBhcmdMaXN0KTsKICAgICAKICAgICBtYXJzaGFsVmFsdWUobGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwCmluZGV4IDAyMDU4ODkyZDIxMThiMjQ1ODZhOGM4MWZkYmM1YmU2MjJkMThhZDku
LjA5N2MxY2FjMmMzNTk4ZWU3NjUxOGIxN2RmYzliMzkwODMwYTAyNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMjU0LDE1
ICsyNTQsMTQgQEAgc3RhdGljIGJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywg
TlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmEKIAogICAgICAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwogICAgICAgICBK
U0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBvYmotPmltcC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxP
YmplY3QsIGktPnN0cmluZygpKSk7Ci0gICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24s
IGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUp
CisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAg
ICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4K
ICAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRM
aXN0RnJvbVZhcmlhbnRBcmdzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3MsIGFyZ0NvdW50LCBy
b290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
b2JqLT5pbXAsIGFyZ0xpc3QpOworICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIG9iai0+aW1wLCBh
cmdMaXN0KTsKIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0
aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9O
UFZhcmlhbnQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0ViwgcmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397654</attachid>
            <date>2020-04-27 00:59:10 -0700</date>
            <delta_ts>2020-04-27 01:28:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211059-20200427005909.patch</filename>
            <type>text/plain</type>
            <size>232455</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MWE1NDEzYmM1MmQzNjc4ZGZjNzY4ZmUwNjVlMzYwNWEyNjJmMjNjLi5lMzBjNzJmMmYwZTYxNjg2
MTg2ZDIwMDExNTFhOWQyZjI2NTMyZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDQtMjcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtKU0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc3RydWN0cyBz
aG91bGQgaW5jbHVkZSBDYWxsVHlwZS9Db25zdHJ1Y3RUeXBlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwNTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBnZXRDYWxsRGF0YS9nZXRDb25zdHJ1Y3REYXRhIHJl
dHVybiBhIENhbGxUeXBlL0NvbnN0cnVjdFR5cGUgYW5kIGhhdmUgYSBDYWxsRGF0YS9Db25zdHJ1
Y3REYXRhIG91dCBwYXJhbSwKKyAgICAgICAgYW5kIHRoZW4gKmJvdGgqIG9mIHRoZXNlIGFyZSBw
YXNzZWQgc2lkZS1ieS1zaWRlIHRvIGBjYWxsYC9gY29uc3RydWN0YCwgd2hpY2ggYWxsIHNlZW1z
IGEgYml0IHNpbGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWVyZ2VzIENhbGxUeXBlL0NvbnN0
cnVjdFR5cGUgaW50byBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN1Y2ggdGhhdCBnZXRDYWxsRGF0
YS9nZXRDb25zdHJ1Y3REYXRhCisgICAgICAgIG5vIGxvbmdlciBuZWVkIGFuIG91dCBwYXJhbSBh
bmQgYGNhbGxgL2Bjb25zdHJ1Y3RgIHJlcXVpcmUgb25lIGxlc3Mgb3ZlcnQgcGFyYW1ldGVyLgor
CisgICAgICAgIEluIHNvIGRvaW5nLCBpdCBhbHNvOgorICAgICAgICAtIHJlbW92ZXMgQ29uc3Ry
dWN0RGF0YSBlbnRpcmVseSBhcyBpdCdzIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiBDYWxsRGF0YQor
ICAgICAgICAtIHJlbmFtZXMgZW51bSB2YWx1ZSBIb3N0IHRvIE5hdGl2ZSBpbiBhbGlnbm1lbnQg
d2l0aCBDYWxsRGF0YSdzIHVuaW9uCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAo
SlNPYmplY3RDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAg
ICAoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3Jp
cHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
YWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkRvbGxhckFn
ZW50UmVjZWl2ZUJyb2FkY2FzdCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAg
ICAgICogcnVudGltZS9DYWxsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpwcm9maWxlZENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERhdGEuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29uc3RydWN0RGF0YS5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnByb2ZpbGVkQ29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVj
dERhdGEuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6cHJvZmls
ZWRDb25zdHJ1Y3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9KU09OKToKKyAg
ICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3JDbG9zZSk6CisgICAgICAgIChKU0M6Omhhc0l0ZXJhdG9y
TWV0aG9kKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JNZXRob2QpOgorICAgICAgICAoSlNDOjpp
dGVyYXRvckZvckl0ZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ29uc3RydWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6aXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21p
c2U6OnRoZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNaWNyb3Rhc2suY3BwOgorICAgICAgICAo
SlNDOjpKU01pY3JvdGFzazo6cnVuKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmRlcGVuZGVuY3lLZXlzSWZFdmFs
dWF0ZWQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cHJvdmlkZUZldGNoKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0pTT05P
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6aXNDYWxsYWJsZVJlcGxhY2Vy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OlN0cmluZ2lmaWVyKToKKyAgICAg
ICAgKEpTQzo6U3RyaW5naWZpZXI6OnRvSlNPTik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjpXYWxrZXIp
OgorICAgICAgICAoSlNDOjpXYWxrZXI6OmNhbGxSZXZpdmVyKToKKyAgICAgICAgKEpTQzo6SlNP
TlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6b3JkaW5hcnlTZXRTbG93KToKKyAgICAgICAgKEpTQzo6Y2FsbFRvUHJpbWl0aXZl
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0TWV0aG9kKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6Y3JlYXRl
RGVmZXJyZWREYXRhKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlZFByb21pc2Up
OgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVBy
b3h5Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OmdldENvbnN0cnVjdERh
dGEpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVm
bGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRT
dGFja1RyYWNlcyk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2gpOgorICAgICAg
ICAoSlNDOjpvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIpOgor
ICAgICAgICAoSlNDOjpvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmNhbGxQcm9taXNlUmVqZWN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrU2V0KToKKyAgICAgICAg
KiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdpdGhTdGFja1NpemVQ
cm9iZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKToKKwogMjAyMC0wNC0yNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10g
Q2xlYXJseSBkaXN0aW5ndWlzaCBpc0NvbnN0cnVjdG9yIGZyb20gZ2V0Q29uc3RydWN0RGF0YQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDAxOTUyNDAxYjQ0ZTQxYTQ0ODM0NzU2OTMwYmVkYzQ0NDA3YmY2MDcuLmVj
YTYyMWYzYzBjMThjNWFkZjUxYTQ5M2U1Yjc4NGY4YjMwMDBmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMjAtMDQtMjcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtKU0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc3RydWN0cyBz
aG91bGQgaW5jbHVkZSBDYWxsVHlwZS9Db25zdHJ1Y3RUeXBlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwNTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjppbnZva2VD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dXBncmFk
ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpp
bnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxv
b2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpT
Q2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJ1
aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01CdWlsdGlu
Q29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFyZ3VtZW50cyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01Db25zdHJ1Y3RvckJhc2U6OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01J
dGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJC
YWNraW5nTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFRvQmFja2luZ01hcCk6CisgICAgICAg
IChXZWJDb3JlOjpmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5nTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OmZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ01hcCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTU5h
bWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
Ojp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVqZWN0ZWRQcm9taXNl
V2l0aFR5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TZXRMaWtlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNsZWFyQmFja2luZ1NldCk6CisgICAgICAgIChXZWJDb3JlOjph
ZGRUb0JhY2tpbmdTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZEZ1bmN0aW9uQ2FsbFRv
QmFja2luZ1NldCk6CisgICAgICAgIChXZWJDb3JlOjpmb3J3YXJkRm9yRWFjaENhbGxUb0JhY2tp
bmdTZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6OnBy
b2ZpbGVkQ2FsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbklu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRl
OjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdh
dG9yOjpnZXRVc2VyTWVkaWEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUGx1Z2luKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUludGVybmFsOjpjYWxs
RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmxvY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZGFibGVTdHJlYW1DYWxsRnVuY3Rpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgIChHZW5lcmF0ZVBsdWdpbkNhbGwpOgorICAgICAgICAoR2VuZXJhdGVM
ZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENhbGxEYXRh
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmg6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBj
YWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlTWVkaWFDb250cm9sc0FmdGVyUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpnZXRDdXJyZW50TWVkaWFDb250cm9sc1N0YXR1cyk6
CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZlcik6CisKIDIwMjAtMDQtMjYgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5kZXJpbmcgdXBkYXRl
IHN0ZXBzIHNob3VsZCB1c2UgU2Vjb25kcyBmb3IgdGhlIHRpbWVzdGFtcHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTNiMDIzYzJjYmViOWJlMzVlY2JlYTkxYTU4MDMyMDAyOWNhM2NlZi4uZmJhOGRjYjc1ZDI2MTQy
YjdmMjIyYmNmNTEyNjA0ZGFiM2U4MGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wNC0yNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgW0pTQ10gQ2FsbERhdGEvQ29uc3RydWN0RGF0YSBzdHJ1Y3RzIHNob3VsZCBpbmNsdWRlIENh
bGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OkpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0
OjpoYXNNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjppbnZva2UpOgorCiAyMDIwLTA0LTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVy
aW5nIHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTg3YzY3MTIzMTc2MWNhNDEwOWJjMGU3NTFh
NDZhOGUwODU2OTQ4ZC4uZmIxNTExYzIyYzBkMjQ5MDlkYjY4OTI5NGYxNTVkMzVmMDc3MjI4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTI3
ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlND
XSBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN0cnVjdHMgc2hvdWxkIGluY2x1ZGUgQ2FsbFR5cGUv
Q29uc3RydWN0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2VEZWZhdWx0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpjb25zdHJ1Y3Qp
OgorCiAyMDIwLTA0LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIGZ1bmN0aW9ucyB0aGF0IHJldHVybiByYW5nZSBv
ZiB0aGUgc2VsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGE3NGJmMDM0
MmJiYzgzYWIyMjEyOWNmMGFlNTA3M2JkMWFmNDlmYi4uMGQ4M2U3MGM0NWMwMmNkMzIyMTFjMjdi
ZjkyZDc4N2U4MzZjMGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTA0LTI3ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KKworICAgICAgICBbSlNDXSBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHN0cnVjdHMgc2hvdWxk
IGluY2x1ZGUgQ2FsbFR5cGUvQ29uc3RydWN0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TlBOX0ludm9rZSk6CisKIDIwMjAtMDQtMjEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgbGl2ZSByYW5nZXMgaW4gZnVuY3Rp
b25zIHRoYXQgcmV0dXJuIHJhbmdlIG9mIHRoZSBzZWxlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAppbmRleCA0OWY0Y2U3
NmVkZTFlYWU4ZWQwMmQ1ZjNmMWJmN2QwOTRmNzE5ZmY2Li5mYzEwODUxZjUzZDU0NjVmN2E1MmVl
NGE5M2NkODcyMDkzMjc0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCkBAIC02NCwxMCArNjQsMTIgQEAgdm9pZCBKU0Nh
bGxiYWNrQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0
PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcio+KGNlbGwpLT5KU0NhbGxiYWNrQ29uc3RydWN0b3I6On5K
U0NhbGxiYWNrQ29uc3RydWN0b3IoKTsKIH0KIAotQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKK0NhbGxEYXRhIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqKQogeworICAgIENhbGxEYXRhIGNvbnN0cnVjdERhdGE7CisgICAgY29uc3RydWN0
RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IEFQSUNhbGxiYWNrRnVuY3Rpb246OmNvbnN0cnVjdDxKU0NhbGxiYWNr
Q29uc3RydWN0b3I+OwotICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworICAgIHJldHVy
biBjb25zdHJ1Y3REYXRhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCmluZGV4IGZiZDI0MzEx
OTQ4MTI4NjU2NjJiMmVmY2EzNDBjNmFlYzFlOGU3N2IuLmQzOTg1MGQyYzQ2NTI3NDMyODQ1MTBm
NmRhMTNjOWZlODg1YmU2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAg
ZnJpZW5kIHN0cnVjdCBBUElDYWxsYmFja0Z1bmN0aW9uOwogCi0gICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3Rh
dGljIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKik7CiAKICAgICBKU09iamVjdENh
bGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY29uc3RydWN0Q2FsbGJhY2soKSB7IHJldHVybiBtX2Nh
bGxiYWNrOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKaW5kZXggZTY0MzUxMzEzZDdmODdhYzFjYmRmYmJjMDYyM2ZhY2E5Yjg5ZjA3Yy4uYTY0MmEw
NTZiOGMzMWY5OWY1NDkwZjJjY2E4Njg1MjA1MjllZjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwOCw4ICsyMDgsOCBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKLSAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
KTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDZWxsKik7CiAKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCA2MDc1YjBiYWNkYTUxNTVhNWYxYTIxYzI2MDY4YWQ4ZjJm
MjlhZDJlLi5kOTkzNGM5MzgzN2YyMGZkYjA0ODA4ZDY2ZGQ4NGVkZTExM2QxMmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNDMwLDE2ICs0MzAsMTggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUNvbnN0cnVjdFR5cGUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKK0NhbGxEYXRhIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY29uc3RydWN0RGF0YTsKICAg
ICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Qq
PihjZWxsKTsKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoanNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dERhdGEudHlwZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CiAgICAgICAgICAgICBjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAgICAgICAgICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlOjpIb3N0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIGNvbnN0cnVjdERh
dGE7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC01MDUsMTYgKzUwNywxOCBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotQ2Fs
bFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+
KGNlbGwpOwogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
IGlmIChqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgeworICAgICAgICAgICAgY2FsbERhdGEudHlw
ZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CiAgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsOwotICAgICAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpO
b25lOworICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZmJkNTFlZTAz
NGZiZDRmNmEzMDE4YjBhMGNmM2I0ZmNkMWQ2ZmE2NC4uZWU5NDQ5ZmUwNWI3YjI5MDNkYjlmMzA2
M2ExMWI3NDlmNDlmNTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKQEAgLTczNSwxMiArNzM1LDExIEBAIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5j
dGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoanNP
YmplY3QsIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisg
ICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBqc09iamVjdCk7CisgICAgaWYgKGNh
bGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSB0b1JlZihnbG9iYWxPYmplY3QsIHByb2ZpbGVkQ2Fs
bChnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6QVBJLCBqc09iamVjdCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBqc1RoaXNPYmplY3QsIGFyZ0xpc3QpKTsKKyAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IHRvUmVmKGdsb2JhbE9iamVjdCwgcHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgUHJvZmls
aW5nUmVhc29uOjpBUEksIGpzT2JqZWN0LCBjYWxsRGF0YSwganNUaGlzT2JqZWN0LCBhcmdMaXN0
KSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlv
bikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmVzdWx0ID0gMDsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNzY4LDkgKzc2Nyw4IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
Q2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBz
aXplCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShqc09iamVjdCwg
Y29uc3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6
Tm9uZSkKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBqc09i
amVjdCk7CisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0
OwpAQCAtNzgzLDcgKzc4MSw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXplCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IHRvUmVmKHByb2ZpbGVk
Q29uc3RydWN0KGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpBUEksIGpzT2JqZWN0LCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KSk7CisgICAgSlNPYmplY3RSZWYg
cmVzdWx0ID0gdG9SZWYocHJvZmlsZWRDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdS
ZWFzb246OkFQSSwganNPYmplY3QsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpKTsKICAgICBpZiAo
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRp
b25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXN1bHQgPSAwOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwCmluZGV4IDg2NmFlYmM5ZDllYjYzOTNmYTllN2MwYTgxNjE3N2Q4ZmQ0YWE2
MDcuLmFiMGZlZDZkMTJiNTdiZjk4MjAxZTYyZDY4YzgyZTFjZWY1YzQ5NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
CkBAIC0xMTQsMTcgKzExNCwxNiBAQCBFeHBlY3RlZDxKU1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRp
b24+PiBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogICAgIGlmIChVTkxJS0VMWShzY29wZS5l
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRp
b24oKSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1
bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGlmIChtX2NhbGxIYW5kbGVyKQotICAgICAgICBy
ZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywgZXhjZXB0aW9uKTsKKyAgICAgICAg
cmVzdWx0ID0gbV9jYWxsSGFuZGxlcihtX2dsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRh
LCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywgZXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAg
IHJlc3VsdCA9IEpTQzo6Y2FsbChtX2dsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJl
c3VsdCA9IEpTQzo6Y2FsbChtX2dsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlz
T2JqZWN0LCBtX2FyZ3VtZW50cywgZXhjZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsK
ICAgICAgICAgLy8gRG8gbm90IHRyZWF0IGEgdGVybWluYXRlZCBleGVjdXRpb24gZXhjZXB0aW9u
IGFzIGhhdmluZyBhbiBleGNlcHRpb24uIEp1c3QgdHJlYXQgaXQgYXMgYW4gZW1wdHkgcmVzdWx0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0
aW9uQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oCmluZGV4IDQ1NTY3N2QyNzU5YmFiNTNkYjNjYThlNGRhMmU4YTMzZjlkZmQzMDUuLmEy
MzdkNjNkNjI0NzY3YTk0YzJkMDE2Y2RhY2Y1N2Y1ZDY1ODI0NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0RnVuY3Rp
b25DYWxsIDogcHVibGljIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgewogcHVibGljOgotICAg
IHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiYpOworICAgIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVu
Y3Rpb25DYWxsSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiYpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRP
YmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxs
SGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7CiAgICAgRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNhbGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNDQzODc2YTIzMzg5NjU3MGYxZDI2MjdhMjk2
MmM3YjM4MDYwYTQyYS4uMDJjZjVmYzViNjcyZGRiZWIyYmE2NWQxNjJlYmRlYzUxNmFkNDE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zMDQz
LDE0ICszMDQzLDEzIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TcHJlYWRHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiAgICAgSlNBcnJheSogYXJy
YXk7CiAgICAgewogICAgICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRpb25GdW5jdGlvbiA9IGdsb2Jh
bE9iamVjdC0+aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCk7Ci0gICAgICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0s
IGl0ZXJhdGlvbkZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2
bSwgaXRlcmF0aW9uRnVuY3Rpb24pOworICAgICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBD
YWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGl0ZXJhYmxlKTsKICAgICAgICAgQVNT
RVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgSlNWYWx1ZSBhcnJheVJl
c3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBqc051bGwoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgSlNWYWx1ZSBhcnJheVJlc3Vs
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEsIGpzTnVs
bCgpLCBhcmd1bWVudHMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IG51bGxwdHIpOwogICAgICAgICBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oYXJyYXlSZXN1bHQp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA1MWUzYzFhMDMwNTFmMGI0MmFjNTE2MjE1
YTk1YTQ2MmNlNDZiZGIwLi5lZDI4ZGYwMTQ5ZDAxN2Q0NDNhMjY2Y2QzNWQ0ZGVjYzE2ZWI1ZTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xNTgsOSArMTU4LDggQEAgRXhwZWN0ZWQ8SlNPYmpl
Y3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUlu
amVjdGVkU2MKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOwogCi0gICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb25WYWx1
ZSwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBh
dXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uVmFsdWUpOworICAgIGlmIChj
YWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC0xNjksNyArMTY4LDcg
QEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihpZCkp
OwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSByZXN1
bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6
OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1Zh
bHVlLCBhcmdzKTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1
bHQuZ2V0T2JqZWN0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKaW5kZXggNzdjNmNlZWU3MTJhZmIyZDUyNzE1
ZDAxN2E5ZTY5MjA3MGVjY2VlMy4uZWFkMjhjZmUzM2IzYmFlYzU5NGViMTZkNWM4ZDhkZTc0YTUz
MGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBWTTsKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKLXR5cGVkZWYgSlNDOjpK
U1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5
cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwordHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0
b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERh
dGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiB0eXBlZGVmIEpTQzo6
SlNWYWx1ZSAoKkluc3BlY3RvckV2YWx1YXRlSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiBjbGFzcyBJbnNwZWN0b3JF
bnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCBhZDRiMjE1YzU1YTVjZDU4ZmJiMmY0MmExMjE0N2NiNDcwNTg5
Mjc4Li5hZjQ4YWUzZTRkNjQ1MmZkODc4MmVjZGYzNzMxNTVjNjhiNmY3Y2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTc4
MCwxNSArNzgwLDE0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqLCBKCiAgICAgICAgICAgICBjYXNl
IEpTT05QUGF0aEVudHJ5VHlwZUNhbGw6IHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZ1bmN0
aW9uID0gYmFzZU9iamVjdC5nZXQoZ2xvYmFsT2JqZWN0LCBKU09OUFBhdGgubGFzdCgpLm1fcGF0
aEVudHJ5TmFtZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
ICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9u
LCBjYWxsRGF0YSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQorICAgICAgICAgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24pOworICAgICAgICAgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOb25lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIganNv
bkFyZzsKICAgICAgICAgICAgICAgICBqc29uQXJnLmFwcGVuZChKU09OUFZhbHVlKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWpzb25BcmcuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTT05QUGF0aC5zaXplKCkgPT0gMSA/IGpzVW5kZWZp
bmVkKCkgOiBiYXNlT2JqZWN0OwotICAgICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNh
bGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGpzb25BcmcpOworICAgICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNhbGwoZ2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwganNvbkFyZyk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtODU3LDcgKzg1Niw3IEBAIGZh
aWxlZEpTT05QOgogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKLUpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRh
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBWTSYgdm0g
PSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODY3LDcgKzg2Niw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU09i
amVjdCoKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAg
ICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGJvb2wgaXNKU0NhbGwgPSAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6OkpTKTsKKyAgICBib29sIGlzSlNDYWxsID0gKGNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CiAgICAgc2l6
ZV90IGFyZ3NDb3VudCA9IDEgKyBhcmdzLnNpemUoKTsgLy8gaW1wbGljaXQgInRoaXMiIHBhcmFt
ZXRlcgogCkBAIC04NzcsNyArODc2LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAg
ICBzY29wZSA9IGNhbGxEYXRhLmpzLnNjb3BlOwogICAgICAgICBnbG9iYWxPYmplY3QgPSBzY29w
ZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Okhvc3QpOworICAgICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSA9PSBD
YWxsRGF0YTo6VHlwZTo6TmF0aXZlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfQogCkBAIC05MjksNyArOTI4LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KgogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKLUpT
T2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNv
bnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorSlNPYmplY3QqIEludGVycHJldGVyOjpl
eGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU09i
amVjdCogY29uc3RydWN0b3IsIGNvbnN0IENhbGxEYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBB
cmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtOTQzLDcgKzk0Miw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9
IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKKyAgICBib29sIGlzSlNDb25z
dHJ1Y3QgPSAoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpKUyk7CiAgICAg
SlNTY29wZSogc2NvcGUgPSBudWxscHRyOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSAxICsgYXJn
cy5zaXplKCk7IC8vIGltcGxpY2l0ICJ0aGlzIiBwYXJhbWV0ZXIKIApAQCAtOTUzLDcgKzk1Miw3
IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPCiAgICAgICAgIHNjb3BlID0gY29uc3RydWN0RGF0
YS5qcy5zY29wZTsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2
bSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZTo6SG9zdCk7CisgICAgICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3Qodm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA2NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYx
ODBlNjk2OTcxYTY0YmM4Li40ZjhiYzc4NWM1M2IzZGNlYmFmMjUyMzNiYTg1MGRiNTJhZDQxZmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aApAQCAtMTA2LDggKzEwNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTVmFsdWUg
ZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50
Kik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBBcmdMaXN0Jik7Ci0gICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBD
b25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKKyAgICAg
ICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlv
biwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwor
ICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBu
ZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7CiAKICAgICAgICAgdm9p
ZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBm
aXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkZDY1ZjdiZWVmMDVj
NzI3OTNmYmVmZDdiNDhiZjFiYjQ3NDFjNmQzLi4wMDBkNDM3MjJjODFlNjIyMzgwZmJhNjRkY2Iz
ZjhmMDllYzAwOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTEwNTgsMTIgKzEwNTgsMTAgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKDApOwogCiAgICAgaWYgKGNhbGxMaW5rSW5mby0+
c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNh
bGxlZSwgY2FsbERhdGEpOwotICAgIAotICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6OkpTKTsKLSAgICAKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7
CisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGVlKTsKKyAgICAg
ICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6OkpTKTsKKworICAgICAg
ICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlKSB7CiAgICAgICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAg
ICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAg
ICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVl
RnJhbWUpKTsKQEAgLTEwNzgsNyArMTA3Niw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lCiAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxs
TW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkp
OwogICAgICAgICB9CiAgICAgCi0gICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSk7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpO
b25lKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
Tm90QUZ1bmN0aW9uRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsZWUpKTsKICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5l
eGVjdXRhYmxlQWRkcmVzcygpLApAQCAtMTA4NiwxMyArMTA4NCwxMSBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIAotICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25z
dHJ1Y3REYXRhKHZtLCBjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwotICAgIAotICAgIEFTU0VSVChj
b25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6OkpTKTsKLSAgICAKLSAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7CisKKyAgICBhdXRvIGNvbnN0cnVjdERh
dGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjYWxsZWUpOworICAgIEFTU0VSVChjb25zdHJ1Y3RE
YXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6OkpTKTsKKworICAgIGlmIChjb25zdHJ1Y3REYXRh
LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSkgewogICAgICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgIGNhbGxlZUZyYW1lLT5z
ZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmpl
Y3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsKQEAgLTExMDQsOCAr
MTEwMCw4IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lCiAKICAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdCh0YWdDRnVuY3Rpb248dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9
Ci0gICAgCi0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7
CisKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25l
KTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGNhbGxlZSkpOwogICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoCiAgICAgICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQ
YXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRk
cmVzcygpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkMDg5MzM1MzM4YThkMjI0MmM0YThiNjVm
YTk5M2VmOWJhNjVjNjZjLi4xZTE1YjM0ODllNmQ0MzUwZjQwM2FjMTcyYjEyOGMyYzhmNGJlOTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTk0MSw5ICsxOTQxLDggQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChKU0ds
b2JhbE9iamVjdCoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBj
YWxsYmFjaywgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
KyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxiYWNrKTsKKyAgICBpZiAo
Y2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBjYWxsYmFjayJfcykpKTsKICAgICAKICAgICBS
ZWZQdHI8TWVzc2FnZT4gbWVzc2FnZTsKQEAgLTE5NjEsNyArMTk2MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoSlNH
bG9iYWxPYmplY3QqCiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobWVzc2FnZS0+aW5kZXgoKSkp
OwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxs
KGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFy
Z3MpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2Fs
bChnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9y
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGFi
MjI3MWYyYzA5ZjAyZDc1Y2U5YjM2NDg1ZjJlOGJmZDRjMWM4ZmUuLjc1OWMxMzI3MGU1OGM2NDQx
YWNmMjFiMmYyZDhjNTU4ZGU5YTg1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTUyMCwxMiArMTUyMCwxMCBAQCBzdGF0aWMgU2xv
d1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
VmFsdWUgY2FsbGVlLAogICAgIGNhbGxlZUZyYW1lLT5jbGVhclJldHVyblBDKCk7CiAKICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGVlLCBjYWxsRGF0
YSk7Ci0gICAgCi0gICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwotICAg
IAotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKKyAgICAgICAgYXV0
byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsZWUpOworICAgICAgICBBU1NFUlQoY2Fs
bERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6SlMpOworCisgICAgICAgIGlmIChjYWxsRGF0
YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOYXRpdmUpIHsKICAgICAgICAgICAgIFNsb3dQYXRo
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgICAgICBjYWxsZWVG
cmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
YXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsKQEAgLTE1
MzQsMTggKzE1MzIsMTYgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVlIGNhbGxlZSwKICAgICAgICAgCiAgICAg
ICAgIHNsb3dQYXRoTG9nKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogIiwgY2FsbGVl
LCAiXG4iKTsKIAotICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpOwor
ICAgICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAg
ICAgICAgIExMSU5UX0NBTExfVEhST1coZ2xvYmFsT2JqZWN0LCBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihnbG9iYWxPYmplY3QsIGNhbGxlZSkpOwogICAgIH0KIAogICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZt
LCBjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwotICAgIAotICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBl
ICE9IENvbnN0cnVjdFR5cGU6OkpTKTsKLSAgICAKLSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlOjpIb3N0KSB7CisKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25z
dHJ1Y3REYXRhKHZtLCBjYWxsZWUpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgIT0g
Q2FsbERhdGE6OlR5cGU6OkpTKTsKKworICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZSkgewogICAgICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbGVlRnJhbWUpOwogICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2Jq
ZWN0KGNhbGxlZSkpOwogICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmds
b2JhbE9iamVjdCh2bSksIGNhbGxlZUZyYW1lKSk7CkBAIC0xNTU0LDcgKzE1NTAsNyBAQCBzdGF0
aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEpTVmFsdWUgY2FsbGVlLAogICAgIAogICAgIHNsb3dQYXRoTG9nKCJDb25zdHJ1Y3RvciBj
YWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICIsIGNhbGxlZSwgIlxuIik7CiAKLSAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBBU1NFUlQoY29uc3Ry
dWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBMTElOVF9DQUxMX1RI
Uk9XKGdsb2JhbE9iamVjdCwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0
LCBjYWxsZWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDJiYmI2YzM0ZGZhMzYzYTE4Nzg1MDgzMDkxYzE2NzA3MDVj
N2Q5ZTEuLmQwZDdjNGNmYjY0ZTljMDY3Nzg2MjNjOTI5ZjMzZGE2MmZhYzQ4NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTYx
NSwxNyArNjE1LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGJvb2wgY3Vz
dG9tSm9pbkNhc2UgPSBmYWxzZTsKICAgICAgICAgaWYgKCFmdW5jdGlvbi5pc0NlbGwoKSkKICAg
ICAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0gdHJ1ZTsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9u
LCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAg
ICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAg
IGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICAgICAg
Y3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2lu
Q2FzZSkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgIltvYmplY3QgIiwgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIp
KSk7CiAKICAgICAgICAgLy8gNC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tD
YWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlz
IHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlzdC4KLSAgICAgICAgaWYgKCFpc0pTQXJy
YXkodGhpc09iamVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uICE9IGFycmF5UHJvdG9GdW5jSm9pbikKLSAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSkp
OworICAgICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsRGF0YS50eXBlICE9
IENhbGxEYXRhOjpUeXBlOjpOYXRpdmUgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uICE9IGFy
cmF5UHJvdG9GdW5jSm9pbikKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRo
aXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGlzSlNBcnJh
eSh0aGlzVmFsdWUpKTsKQEAgLTcwNiwxMCArNzA1LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIGNvbnZlcnNpb25GdW5jdGlv
biA9IGVsZW1lbnQuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dG9Mb2NhbGVT
dHJpbmcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNvbnZlcnNpb25GdW5jdGlvbiwgY2Fs
bERhdGEpOwotICAgICAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBjb252ZXJzaW9uRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgYXJndW1lbnRzKTsKKyAgICAgICAg
ICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgY29udmVyc2lvbkZ1bmN0aW9uKTsK
KyAgICAgICAgICAgIGlmIChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBjb252ZXJzaW9u
RnVuY3Rpb24sIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5j
cHAKaW5kZXggYWY4YjZjMjVlMjVjMTg0ODU2YTU2NmUxMmQ4YzVlOTY0YWZiODM0ZS4uYTEyYjNh
MWUyZTZjY2M0NmQyNjViZTZjNDhhYTg4MzIzY2VhZmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcApAQCAtNDQsMjYgKzQ0LDI1IEBAIEpTVmFsdWUgY2Fs
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBK
U1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uT2JqZWN0
LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1
dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb25PYmplY3QpOworICAgIGlmIChj
YWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncykpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0
YSwgdGhpc1ZhbHVlLCBhcmdzKSk7CiB9CiAKLUpTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwg
Y29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYgYXJncykKK0pTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6OkpTIHx8IGNhbGxUeXBl
ID09IENhbGxUeXBlOjpIb3N0KTsKLSAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVD
YWxsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoZnVuY3Rpb25PYmplY3QpLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6OkpTIHx8IGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2
ZSk7CisgICAgcmV0dXJuIHZtLmludGVycHJldGVyLT5leGVjdXRlQ2FsbChnbG9iYWxPYmplY3Qs
IGFzT2JqZWN0KGZ1bmN0aW9uT2JqZWN0KSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9
CiAKLUpTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRh
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncywgTmFrZWRQdHI8RXhjZXB0
aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCitKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxE
YXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncywgTmFrZWRQdHI8RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
KTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIHJldHVy
bmVkRXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7CkBAIC03MywxOCArNzIsMTggQEAgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGwKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIHByb2ZpbGVkQ2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb24gcmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTVmFsdWUgcHJvZmlsZWRDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHByb2ZpbGluZ1Njb3BlKHZtLmRl
cHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCksIHJlYXNvbik7Ci0gICAg
cmV0dXJuIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIHJldHVybiBjYWxsKGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogfQogCi1KU1ZhbHVlIHBy
b2ZpbGVkQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb24g
cmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJn
cywgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCitKU1ZhbHVlIHByb2Zp
bGVkQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb24gcmVh
c29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUodm0uZGVwcmVjYXRlZFZN
RW50cnlHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KSwgcmVhc29uKTsKLSAgICByZXR1cm4gY2Fs
bChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIHJldHVybiBjYWxsKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVk
RXhjZXB0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuaAppbmRleCBmNWFiZjRkZjRmZTM1ZDE2ZWY0MGU0NTU0M2E1ZTEy
MGEzOTI4ODRlLi43M2E5YzE1NWVkNDNmYTIwYjU4OWMxOGIxZmZlZmY0YzQ0OTQ1MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKQEAgLTMzLDIwICszMywxNSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQXJnTGlzdDsK
IGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKLWNsYXNzIEpTT2Jq
ZWN0OwogY2xhc3MgSlNTY29wZTsKIAotZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkIHsK
LSAgICBOb25lLAotICAgIEhvc3QsCi0gICAgSlMKLX07Ci0KIHN0cnVjdCBDYWxsRGF0YSB7Cisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IE5vbmUsIE5hdGl2ZSwgSlMgfTsKKyAgICBU
eXBlIHR5cGUgeyBUeXBlOjpOb25lIH07CisKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKQEAgLTU4LDIwICs1
MywyMCBAQCBzdHJ1Y3QgQ2FsbERhdGEgewogICAgIH07CiB9OwogCi1lbnVtIGNsYXNzIFByb2Zp
bGluZ1JlYXNvbiB7CitlbnVtIGNsYXNzIFByb2ZpbGluZ1JlYXNvbiA6IHVpbnQ4X3QgewogICAg
IEFQSSwKICAgICBNaWNyb3Rhc2ssCiAgICAgT3RoZXIKIH07CiAKLS8vIENvbnZlbmllbmNlIHdy
YXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIENhbGxEYXRhIGFuZCBDYWxsVHlw
ZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4KKy8vIENvbnZlbmllbmNlIHdyYXBw
ZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIENhbGxEYXRhIHVubGVzcyB5b3UgYXJl
IGdvaW5nIHRvIHVzZSBpdC4KIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBj
aGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJn
TGlzdCYpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5l
ZEV4Y2VwdGlvbik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24pOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHByb2ZpbGVk
Q2FsbChKU0dsb2JhbE9iamVjdCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xv
YmFsT2JqZWN0KiwgUHJvZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYs
IE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKK0pTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiwgUHJvZmlsaW5nUmVhc29u
LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHByb2ZpbGVk
Q2FsbChKU0dsb2JhbE9iamVjdCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYs
IE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDdh
NTliOGZkYjBjMjJjY2JiZDI4ZDgwMzFkYThhMTdlZTA1MzcyMTkuLmIzMmM4ZmRiNWQ3NjZkNzBi
ZmUxZjAwMjFhZjI2OTY2MmVlMzI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCkBAIC00NywxMCArNDcsMTAgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB1c2luZyBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogICAgIFZpc2l0Q2hpbGRyZW5GdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5U
UlkodmlzaXRDaGlsZHJlbik7CiAKLSAgICB1c2luZyBHZXRDYWxsRGF0YUZ1bmN0aW9uUHRyID0g
Q2FsbFR5cGUgKCopKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgdXNpbmcgR2V0Q2FsbERhdGFG
dW5jdGlvblB0ciA9IENhbGxEYXRhICgqKShKU0NlbGwqKTsKICAgICBHZXRDYWxsRGF0YUZ1bmN0
aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRDYWxsRGF0YSk7CiAKLSAgICB1c2luZyBHZXRD
b25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIgPSBDb25zdHJ1Y3RUeXBlICgqKShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CisgICAgdXNpbmcgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyID0gQ2Fs
bERhdGEgKCopKEpTQ2VsbCopOwogICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0ciBNRVRI
T0RfVEFCTEVfRU5UUlkoZ2V0Q29uc3RydWN0RGF0YSk7CiAKICAgICB1c2luZyBQdXRGdW5jdGlv
blB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBjZWYwOWYwNjk3
ZDI5NGU2MmEyNDRhMTU0ZmI1OGZkOTQxZTBkYmY1Li4xY2E5NmY0MmMzNmNlMGEwNmUxZTUwYmYw
N2NjYjljYTQ0NmQxYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTE1MDIsMTQgKzE1MDIsMTMgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3NwcmVhZCkKICAgICBKU0FycmF5KiBhcnJheTsKICAgICB7CiAgICAgICAg
IEpTRnVuY3Rpb24qIGl0ZXJhdGlvbkZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24oKTsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgaXRlcmF0aW9uRnVuY3Rpb24s
IGNhbGxEYXRhKTsKLSAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsK
KyAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBpdGVyYXRpb25GdW5jdGlv
bik7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25l
KTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgICAgIGFy
Z3VtZW50cy5hcHBlbmQoaXRlcmFibGUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNP
dmVyZmxvd2VkKCkpOwotICAgICAgICBKU1ZhbHVlIGFycmF5UmVzdWx0ID0gY2FsbChnbG9iYWxP
YmplY3QsIGl0ZXJhdGlvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzTnVsbCgpLCBh
cmd1bWVudHMpOworICAgICAgICBKU1ZhbHVlIGFycmF5UmVzdWx0ID0gY2FsbChnbG9iYWxPYmpl
Y3QsIGl0ZXJhdGlvbkZ1bmN0aW9uLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3VtZW50cyk7CiAg
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhcnJheSA9IGpzQ2FzdDxKU0FycmF5
Kj4oYXJyYXlSZXN1bHQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKaW5kZXggNDdiMjQ3NDE4Y2E4OGVmZDFiNzhlNjMxMWI2NzVk
MWVmYTVhNWZmMC4uZjg5MDUxY2ZlZThmZmZhMzczYzQ3ODJlNzllM2QxMzQ3ZmE4ZmMwOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKQEAg
LTQ0LDI4ICs0NCwyNyBAQCBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIEpTVgogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3JPYmplY3Qs
IGNvbnN0cnVjdERhdGEpOwotICAgIGlmIChVTkxJS0VMWShjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGU6Ok5vbmUpKSB7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0
RGF0YSh2bSwgY29uc3RydWN0b3JPYmplY3QpOworICAgIGlmIChVTkxJS0VMWShjb25zdHJ1Y3RE
YXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpKSB7CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0
KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOyAgCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0
YSwgYXJncywgbmV3VGFyZ2V0KSk7ICAKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorSlNPYmplY3QqIGNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2Jq
ZWN0LCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncywg
SlNWYWx1ZSBuZXdUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTIHx8IGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCk7Ci0gICAgcmV0dXJuIHZtLmludGVycHJldGVy
LT5leGVjdXRlQ29uc3RydWN0KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoY29uc3RydWN0b3JPYmpl
Y3QpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOworICAg
IEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6OkpTIHx8IGNvbnN0
cnVjdERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlKTsKKyAgICByZXR1cm4gdm0u
aW50ZXJwcmV0ZXItPmV4ZWN1dGVDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChjb25z
dHJ1Y3Rvck9iamVjdCksIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCk7CiB9CiAKLUpT
T2JqZWN0KiBwcm9maWxlZENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9maWxpbmdSZWFzb24gcmVhc29uLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorSlNPYmplY3QqIHByb2Zp
bGVkQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNv
biByZWFzb24sIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjb25z
dHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUg
cHJvZmlsaW5nU2NvcGUodm0uZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KSwgcmVhc29uKTsKLSAgICByZXR1cm4gY29uc3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3Ry
dWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1Rhcmdl
dCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yT2JqZWN0
LCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRl
eCBmYjYxOTc0YTdkYjM5YzQ5MWY5ZjkzYmFlYjZjYWMxMjYyMWYzYmEyLi41NDUyYWUyYWI4ZThk
NGEyNDU2YWYxYzVlZjUyMWQ4NmU4YTZlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCkBAIC0yOSw1MSArMjksMjcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5j
bHVkZSAiTmF0aXZlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEFyZ0xp
c3Q7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBK
U09iamVjdDsKLWNsYXNzIEpTU2NvcGU7CiAKLWVudW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVu
c2lnbmVkIHsKLSAgICBOb25lLAotICAgIEhvc3QsCi0gICAgSlMKLX07Ci0KLXN0cnVjdCBDb25z
dHJ1Y3REYXRhIHsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBU
YWdnZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKLSAgICAgICAgfSBuYXRpdmU7Ci0gICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZTsKLSAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlOwotICAgICAgICB9IGpzOwotICAgIH07
Ci19OwotCi0vLyBDb252ZW5pZW5jZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwg
d2l0aCBDYWxsRGF0YSBhbmQgQ2FsbFR5cGUgdW5sZXNzIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRo
ZW0uCisvLyBDb252ZW5pZW5jZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0
aCBDYWxsRGF0YSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgaXQuCiBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rhcmdl
dCk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgY29uc3QgQ2FsbERhdGEmLCBjb25zdCBBcmdMaXN0Jiwg
SlNWYWx1ZSBuZXdUYXJnZXQpOwogCi1BTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorQUxXQVlTX0lOTElORSBKU09iamVjdCogY29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29uc3RydWN0b3JP
YmplY3QsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsK
LSAgICByZXR1cm4gY29uc3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNv
bnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAg
ICByZXR1cm4gY29uc3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNhbGxE
YXRhLCBhcmdzLCBjb25zdHJ1Y3Rvck9iamVjdCk7CiB9CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBwcm9maWxlZENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIFByb2ZpbGluZ1JlYXNv
biwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBQcm9maWxpbmdS
ZWFzb24sIEpTVmFsdWUgY29uc3RydWN0b3IsIGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlz
dCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogcHJvZmls
ZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29u
IHJlYXNvbiwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQorQUxXQVlTX0lOTElORSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBj
b25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQogewotICAgIHJldHVybiBwcm9maWxlZENvbnN0cnVjdChnbG9iYWxPYmplY3QsIHJl
YXNvbiwgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFy
Z3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICByZXR1cm4gcHJvZmlsZWRDb25zdHJ1Y3QoZ2xv
YmFsT2JqZWN0LCByZWFzb24sIGNvbnN0cnVjdG9yT2JqZWN0LCBjYWxsRGF0YSwgYXJncywgY29u
c3RydWN0b3JPYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggOGU2ODBmNjg0MzBi
OWQzMTEyNzE5ZDc5OWE1MjM2MDNkMjNhNzAyMS4uNzA5MDNjNTRiMmIwYjAwZmViZjczNmE1YjU4
MDIxMDhhYWEzNjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKQEAgLTExNjcsMTIgKzExNjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICBKU1ZhbHVlIHRvSVNPVmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPnRvSVNPU3RyaW5nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRvSVNPVmFsdWUsIGNhbGxEYXRh
KTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCB0b0lTT1ZhbHVlKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9
PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsK
IAotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QodG9JU09WYWx1ZSks
IGNhbGxEYXRhLCBvYmplY3QsICp2bS5lbXB0eUxpc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuY3BwCmluZGV4IDY2Y2M3NTA3MzkwYmE0MWUwODg5Y2Q2YjZjNTAwZTc2YjAyMTYwYjUuLmMx
OGM5ZTBmNGI1MDdlM2U5ZWIwMjQ0ZTNlNzA2MzFjMjI0NjhmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNTUsOSArNTUsOCBAQCBK
U1ZhbHVlIGNhbGxHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGdldHRlclNldAogCiAgICAgSlNPYmplY3QqIGdldHRlciA9IGpzQ2FzdDxH
ZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKTsKIAotICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSh2bSkt
PmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbChnbG9iYWxPYmplY3QsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNl
LCBBcmdMaXN0KCkpKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGdldHRl
cik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0
dGVyLCBjYWxsRGF0YSwgYmFzZSwgQXJnTGlzdCgpKSk7CiB9CiAKIGJvb2wgY2FsbFNldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVy
U2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTc2LDEwICs3NSw5
IEBAIGJvb2wgY2FsbFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyCiAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogICAg
IEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2Fs
bERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRh
KHZtLCBzZXR0ZXIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBjYWxsKGdsb2JhbE9iamVj
dCwgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2UsIGFyZ3MpOworICAgIGNhbGwoZ2xv
YmFsT2JqZWN0LCBzZXR0ZXIsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAppbmRleCA1NDJmNzMwYjE5YTVkZTIwMjJmNjAwMTA5N2NhNjVkZWNjODQxMzU4
Li5mODRjNTczMjU0YTU4OTEwMWVkY2JlOGUyOWNjMzA2NTYxZjlkY2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtODcs
MjEgKzg3LDI2IEBAIGNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShW
TSYgdm0pCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1DYWxsVHlwZSBJbnRlcm5hbEZ1bmN0
aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxE
YXRhIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKICAgICBh
dXRvKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oY2VsbCk7CiAgICAgQVNT
RVJUKGZ1bmN0aW9uLT5tX2Z1bmN0aW9uRm9yQ2FsbCk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKKyAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNhbGw7Ci0gICAg
cmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAotQ29uc3Ry
dWN0VHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwg
Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NhbGxEYXRhIEludGVybmFsRnVuY3Rpb246
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNvbnN0cnVj
dERhdGE7CiAgICAgYXV0byogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNl
bGwpOwotICAgIGlmIChmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdCA9PSBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcikKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5v
bmU7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5j
dGlvbkZvckNvbnN0cnVjdDsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICBp
ZiAoZnVuY3Rpb24tPm1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgIT0gY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IpIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5
cGU6Ok5hdGl2ZTsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5j
dGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN0cnVj
dERhdGE7CiB9CiAKIGNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlz
cGxheU5hbWUoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDAwZGIxMWU3MWI4MjRkMWJiODIzZjM4ZTBlZDk4YTA2MTZi
N2RiMGQuLmE5MGI3YWE3ZjA2OTE0MTE1ZDVjZWEzYTM4ODI1NmY2MzkwMzg3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTg4
LDggKzg4LDggQEAgcHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3MgTmFtZUFkZGl0aW9uTW9kZSB7
IFdpdGhTdHJ1Y3R1cmVUcmFuc2l0aW9uLCBXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbiB9Owog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJp
bmcmIG5hbWUsIE5hbWVBZGRpdGlvbk1vZGUgPSBOYW1lQWRkaXRpb25Nb2RlOjpXaXRoU3RydWN0
dXJlVHJhbnNpdGlvbik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0
Q2FsbERhdGEoSlNDZWxsKik7CiAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9u
Rm9yQ2FsbDsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5jcHAKaW5kZXggNzc3M2MxN2E5MDAwMzJlYWZmNTQzYmI2MmZmNTAxOWQwNDc0OGFmOC4u
NzUwMDdlNDEwYTI0ODU0OGVmNGZiYWU2MjUxYWZhZGY5YWQxZTI5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC00
MiwxNiArNDIsMTUgQEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY28KICAgICBKU1ZhbHVlIGl0ZXJh
dG9yID0gaXRlcmF0aW9uUmVjb3JkLml0ZXJhdG9yOwogICAgIEpTVmFsdWUgbmV4dEZ1bmN0aW9u
ID0gaXRlcmF0aW9uUmVjb3JkLm5leHRNZXRob2Q7CiAKLSAgICBDYWxsRGF0YSBuZXh0RnVuY3Rp
b25DYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBuZXh0RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxE
YXRhKHZtLCBuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAobmV4
dEZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBuZXh0RnVuY3Rp
b25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBuZXh0RnVuY3Rpb24pOworICAgIGlmIChuZXh0
RnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBuZXh0RnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgaWYgKCFhcmd1bWVudC5p
c0VtcHR5KCkpCiAgICAgICAgIG5leHRGdW5jdGlvbkFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQp
OwogICAgIEFTU0VSVCghbmV4dEZ1bmN0aW9uQXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgbmV4dEZ1bmN0aW9uLCBuZXh0
RnVuY3Rpb25DYWxsVHlwZSwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCBuZXh0RnVu
Y3Rpb25Bcmd1bWVudHMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3Qs
IG5leHRGdW5jdGlvbiwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCBuZXh0RnVuY3Rp
b25Bcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CiAKICAgICBpZiAoIXJlc3VsdC5pc09iamVjdCgpKQpAQCAtMTA1LDkgKzEwNCw4IEBAIHZvaWQg
aXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNv
cmQgaXRlcmF0aW9uUmVjb3JkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDYWxsRGF0
YSByZXR1cm5GdW5jdGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIHJldHVybkZ1bmN0aW9uQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2Fs
bERhdGEpOwotICAgIGlmIChyZXR1cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KSB7CisgICAgYXV0byByZXR1cm5GdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJl
dHVybkZ1bmN0aW9uKTsKKyAgICBpZiAocmV0dXJuRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CiAg
ICAgICAgIGVsc2UKQEAgLTExNyw3ICsxMTUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHM7CiAgICAg
QVNTRVJUKCFyZXR1cm5GdW5jdGlvbkFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpT
VmFsdWUgaW5uZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJl
dHVybkZ1bmN0aW9uQ2FsbFR5cGUsIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdGlvblJl
Y29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOworICAgIEpTVmFsdWUgaW5u
ZXJSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0
aW9uQ2FsbERhdGEsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1
bWVudHMpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0xNjUsOCArMTYzLDcgQEAg
Ym9vbCBoYXNJdGVyYXRvck1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVl
IGFwcGx5TWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
Y2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJh
dG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBhcHBseU1l
dGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3Vs
ZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogCiAgICAgcmV0dXJuICFhcHBseU1ldGhvZC5pc1VuZGVmaW5lZCgpOwpAQCAtMTc4LDggKzE3
NSw3IEBAIEpTVmFsdWUgaXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9iamVjdCkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsK
LSAgICBKU1ZhbHVlIG1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgIlN5bWJv
bC5pdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
bWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgc2hv
dWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1Vu
ZGVmaW5lZCgpKTsKIAogICAgIHJldHVybiBtZXRob2Q7CkBAIC0xOTAsMTUgKzE4NiwxNCBAQCBJ
dGVyYXRpb25SZWNvcmQgaXRlcmF0b3JGb3JJdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogb2JqZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDYWxsRGF0
YSBpdGVyYXRvck1ldGhvZENhbGxEYXRhOwotICAgIENhbGxUeXBlIGl0ZXJhdG9yTWV0aG9kQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgaXRlcmF0b3JNZXRob2QsIGl0ZXJhdG9yTWV0aG9kQ2Fs
bERhdGEpOwotICAgIGlmIChpdGVyYXRvck1ldGhvZENhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KSB7CisgICAgYXV0byBpdGVyYXRvck1ldGhvZENhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0
ZXJhdG9yTWV0aG9kKTsKKyAgICBpZiAoaXRlcmF0b3JNZXRob2RDYWxsRGF0YS50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIEFyZ0xpc3QgaXRl
cmF0b3JNZXRob2RBcmd1bWVudHM7Ci0gICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZ2xvYmFs
T2JqZWN0LCBpdGVyYXRvck1ldGhvZCwgaXRlcmF0b3JNZXRob2RDYWxsVHlwZSwgaXRlcmF0b3JN
ZXRob2RDYWxsRGF0YSwgb2JqZWN0LCBpdGVyYXRvck1ldGhvZEFyZ3VtZW50cyk7CisgICAgSlNW
YWx1ZSBpdGVyYXRvciA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVyYXRvck1ldGhvZCwgaXRlcmF0
b3JNZXRob2RDYWxsRGF0YSwgb2JqZWN0LCBpdGVyYXRvck1ldGhvZEFyZ3VtZW50cyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNP
YmplY3QoKSkgewpAQCAtMjIwLDE1ICsyMTUsMTQgQEAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9y
Rm9ySXRlcmFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWIK
ICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAKLSAgICBDYWxsRGF0YSBpdGVyYXRvckZ1bmN0aW9uQ2Fs
bERhdGE7Ci0gICAgQ2FsbFR5cGUgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSk7Ci0gICAg
aWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGF1
dG8gaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yRnVu
Y3Rpb24pOworICAgIGlmIChpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0
YTo6VHlwZTo6Tm9uZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBBcmdMaXN0IGl0ZXJhdG9y
RnVuY3Rpb25Bcmd1bWVudHM7Ci0gICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBpdGVyYXRvckZ1bmN0aW9uLCBpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUsIGl0ZXJhdG9y
RnVuY3Rpb25DYWxsRGF0YSwgaXRlcmFibGUsIGl0ZXJhdG9yRnVuY3Rpb25Bcmd1bWVudHMpOwor
ICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0b3JGdW5jdGlv
biwgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhLCBpdGVyYWJsZSwgaXRlcmF0b3JGdW5jdGlvbkFy
Z3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlm
ICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggNWI0MThmMWY5N2E1NTA1ZDZmOGRmZDdl
YTBiZDVjM2YyNDY1OTk4ZS4uODE2ODU5Mzk0OGQwN2MwNjI5YTExM2VhOGM5MzMxMzk5OWZlOTE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCkBAIC01NywxMCArNTcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgICAg
ICAvLyBGb3JjZSB0aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMgYXJpdHkgZW50cnlwb2ludC4K
ICAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNr
QXJpdHkpOwogICAgIH0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNh
bGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7Cisg
ICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0
RnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpO
b25lKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRGdW5jdGlvbiwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC04NSwx
MCArODQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIH0KIAogICAgIEpTT2JqZWN0
KiB0YXJnZXRGdW5jdGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7Ci0gICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpKTsKKyAgICBhdXRvIGNhbGxEYXRh
ID0gZ2V0Q2FsbERhdGEodm0sIHRhcmdldEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEu
dHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBj
YWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0x
MDgsMTQgKzEwNiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24o
KSk7Ci0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUg
Y29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCB0YXJn
ZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0g
Q29uc3RydWN0VHlwZTo6Tm9uZSk7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YShnbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQo
Y29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIEpTVmFs
dWUgbmV3VGFyZ2V0ID0gY2FsbEZyYW1lLT5uZXdUYXJnZXQoKTsKICAgICBpZiAobmV3VGFyZ2V0
ID09IGJvdW5kRnVuY3Rpb24pCiAgICAgICAgIG5ld1RhcmdldCA9IHRhcmdldEZ1bmN0aW9uOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0
RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFy
Z2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xNDAsMTQgKzEz
NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIH0KIAogICAgIEpTT2JqZWN0KiB0
YXJnZXRGdW5jdGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7Ci0gICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IGdldENvbnN0cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsK
LSAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBh
dXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbik7
CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7
CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCk7CiAgICAg
aWYgKG5ld1RhcmdldCA9PSBib3VuZEZ1bmN0aW9uKQogICAgICAgICBuZXdUYXJnZXQgPSB0YXJn
ZXRGdW5jdGlvbjsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgYXJncywgbmV3VGFyZ2V0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRhcmdldEZ1
bmN0aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDJkODI2ZDQxZTliY2ZmYWI5NTYyMGJhMDc4NzQ1OWU2
NzAxYjE3NjYuLjkyMzg2M2QxN2IyZDY1MTBjYzU0NDAzYTUxN2RkMzRkMDkzZmFhYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTgzLDEwICs4Myw3
IEBAIHVzaW5nIFdyaXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0
aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25vCiAKIGVudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07
CiAKLWVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKLWVu
dW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVuc2lnbmVkOwotc3RydWN0IENvbnN0cnVjdERhdGE7
CiAKIHR5cGVkZWYgaW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDA2NTk3OWU4MzUyMjRhNmMyN2E4NGRkZmY2
YjI2ZjRiYmU3Y2ZiYWEuLjdkM2EyZDVkNzM5NmExMDY5NTMxOTRiN2ZmNzYyYjQ2ZTdkNWU4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtOTUsMjAgKzk1
LDE0IEBAIGNvbnN0IEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVjdCgpIGNvbnN0CiAgICAgcmV0
dXJuIGlzT2JqZWN0KCkgPyBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpIDogMDsK
IH0KIAotQ2FsbFR5cGUgSlNDZWxsOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCitDYWxsRGF0YSBKU0NlbGw6OmdldENhbGxEYXRhKEpTQ2VsbCopCiB7Ci0gICAgY2Fs
bERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKLSAgICBjYWxsRGF0YS5qcy5z
Y29wZSA9IG51bGxwdHI7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gbnVsbHB0cjsK
LSAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotQ29uc3Ry
dWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKK0NhbGxEYXRhIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
KQogewotICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsK
LSAgICBjb25zdHJ1Y3REYXRhLmpzLnNjb3BlID0gbnVsbHB0cjsKLSAgICBjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5v
bmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCmluZGV4IGFhMmUxZDI0MzM4ZTIyZjE3YWQ5NGRmYjdiM2Y5YWE3ZGNk
ZjhlODAuLmI4ZDZmNjUyMjU0ZGQwN2M1MjE1MTMyZmRmYWM0MTc1YjNiZDljYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xNDksOCArMTQ5LDggQEAgcHVibGlj
OgogICAgIC8vIHRoaXMgaXMgYW4gb2JqZWN0LCB0aGVuIHR5cGVvZiB3aWxsIHJldHVybiAiZnVu
Y3Rpb24iIGluc3RlYWQgb2YgIm9iamVjdCIuIFRoZXNlIG1ldGhvZHMKICAgICAvLyBjYW5ub3Qg
Y2hhbmdlIHRoZWlyIG1pbmRzIGFuZCBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGV5IGFyZSBzb21l
dGltZXMgY2FsbGVkIGZyb20gY29tcGlsZXIKICAgICAvLyB0aHJlYWRzLgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKIAogICAgIC8vIEJh
c2ljIGNvbnZlcnNpb25zLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9QcmltaXRp
dmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmMzJmMjlk
MWUxOGQwYmRlNzExZjY0ODA4YTRiYjE1ODNhMTA0NGM5Li5mMjYwNzMwOTgzYzNlOWNiZWM3NjM0
MjAwNDc5NmRiYmQ5ZjBmNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCkBAIC0yMzMsMTcgKzIzMywxNCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNDZWxsOjppc0Z1bmN0aW9uKFZNJiB2bSkKIHsKICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rp
b25UeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkg
JiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgewotICAgICAgICBDYWxsRGF0YSBpZ25vcmVkQ2FsbERh
dGE7Ci0gICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRoaXMsIGln
bm9yZWRDYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgfQorICAgIGlmIChpbmxpbmVU
eXBlRmxhZ3MoKSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKQorICAgICAgICByZXR1cm4gbWV0aG9k
VGFibGUodm0pLT5nZXRDYWxsRGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25l
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0NvbnN0cnVj
dG9yKFZNJiB2bSkKIHsKLSAgICBDb25zdHJ1Y3REYXRhIGlnbm9yZWRDb25zdHJ1Y3REYXRhOwot
ICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcywgaWdub3Jl
ZENvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIG1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBl
OjpOb25lOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXgg
YWYwOGI4YTMyYjY5N2FmYmMwZTljOWMzZWNmNzQ2ZDEwZDBhZWJlNi4uOWUzNDkxZjlkN2ExMzkz
NTZkOTdmNDBiYTRjNWY4ZDNhMWFhNTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTI3NCwxNiArMjc0LDIxIEBAIHZvaWQgSlNGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZU9yUmFyZURhdGEpICYgfnJh
cmVEYXRhVGFnKSk7CiB9CiAKLUNhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2Vs
bCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgSlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOworCiAgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgY2FsbERhdGEudHlwZSA9
IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IHRoaXNPYmplY3QtPm5hdGl2ZUZ1bmN0aW9uKCk7Ci0gICAgICAgIHJldHVybiBDYWxsVHlw
ZTo6SG9zdDsKKyAgICB9IGVsc2UgeworICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6
OlR5cGU6OkpTOworICAgICAgICBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSB0aGlz
T2JqZWN0LT5qc0V4ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbERhdGEuanMuc2NvcGUgPSB0aGlz
T2JqZWN0LT5zY29wZSgpOwogICAgIH0KLSAgICBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFi
bGUgPSB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKTsKLSAgICBjYWxsRGF0YS5qcy5zY29wZSA9
IHRoaXNPYmplY3QtPnNjb3BlKCk7Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpKUzsKKworICAgIHJl
dHVybiBjYWxsRGF0YTsKIH0KIAogY2xhc3MgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIHsKQEAg
LTY5MSwyNCArNjk2LDI2IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIC8vIEVDTUEg
MTMuMi4yIFtbQ29uc3RydWN0XV0KLUNvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDYWxs
RGF0YSBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAgICBD
YWxsRGF0YSBjb25zdHJ1Y3REYXRhOwogCisgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0
aW9uKCkpIHsKLSAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkgPT0g
Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZTo6Tm9uZTsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSB0
aGlzT2JqZWN0LT5uYXRpdmVDb25zdHJ1Y3RvcigpOwotICAgICAgICByZXR1cm4gQ29uc3RydWN0
VHlwZTo6SG9zdDsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkg
IT0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dERhdGEudHlwZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CisgICAgICAgICAgICBjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpOworICAgICAgICBp
ZiAoZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgIT0gQ29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUg
PSBDYWxsRGF0YTo6VHlwZTo6SlM7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZTsKKyAgICAgICAgICAgIGNvbnN0cnVj
dERhdGEuanMuc2NvcGUgPSB0aGlzT2JqZWN0LT5zY29wZSgpOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSB0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKTsKLSAgICBpZiAoZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KQotICAgICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKLQotICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rp
b25FeGVjdXRhYmxlID0gZnVuY3Rpb25FeGVjdXRhYmxlOwotICAgIGNvbnN0cnVjdERhdGEuanMu
c2NvcGUgPSB0aGlzT2JqZWN0LT5zY29wZSgpOwotICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpK
UzsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAogU3RyaW5nIGdldENhbGN1bGF0ZWRE
aXNwbGF5TmFtZShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2IwMmE5NWRmMDA2Mzg5NDVjZjlhNjg3YmJm
N2M0MjU1ZmU5YjQ1OS4uMjQzMDY4ZGU4ZGRjOTYwMmRkZDQyYjY0YmNmMTJmMDYxOTc5Y2FhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTE4LDgg
KzExOCw4IEBAIHB1YmxpYzoKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
bigpOwogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKCk7CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDZWxsKik7CiAK
ICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRh
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lu
dGVybmFsUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsUHJvbWlzZS5jcHAKaW5kZXggZTFmMGFiNTQ2NDJmNWEwNWI5MDY3Yjg5MzE3YmU1NjQ4NGRj
ZTM5MS4uZWVjYTgzNmY4NDMwMGI1YTAwNDI0NzYxNzcxYzBmMDI5YjQxZWFmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcApA
QCAtNjIsMTYgKzYyLDE1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6
dGhlbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0CiAKICAgICBKU09iamVj
dCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50aGVuUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2Fs
bERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0
byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQo
Y2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChvbkZ1bGZpbGxlZCA/
IG9uRnVsZmlsbGVkIDoganNVbmRlZmluZWQoKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChvblJl
amVjdGVkID8gb25SZWplY3RlZCA6IGpzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpz
Q2FzdDxKU0ludGVybmFsUHJvbWlzZSo+KGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNy
b3Rhc2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3Bw
CmluZGV4IGIwM2NjMGNlNzNmMDZiYzU3ODNjZGUxZWI3OTU3ZThjOTZlNTc2YjkuLjNhNTNmY2I3
ZTBlODgyZGVkOTI1ZDg1NWExMjMwN2VkYWRjMGM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKQEAgLTc2LDkgKzc2LDggQEAgdm9pZCBKU01p
Y3JvdGFzazo6cnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKIAotICAgIENhbGxEYXRhIGhhbmRsZXJDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBoYW5k
bGVyQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0
YSk7Ci0gICAgQVNTRVJUKGhhbmRsZXJDYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAg
YXV0byBoYW5kbGVyQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgbV9qb2IuZ2V0KCkpOworICAg
IEFTU0VSVChoYW5kbGVyQ2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBoYW5kbGVyQXJndW1lbnRzOwogICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1heEFyZ3VtZW50czsgKytpbmRleCkgewpAQCAtOTMs
NyArOTIsNyBAQCB2b2lkIEpTTWljcm90YXNrOjpydW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKSkKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT53aWxsUnVuTWljcm90YXNrKCk7CiAKLSAg
ICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246Ok1pY3JvdGFzaywg
bV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsVHlwZSwgaGFuZGxlckNhbGxEYXRhLCBqc1VuZGVmaW5l
ZCgpLCBoYW5kbGVyQXJndW1lbnRzKTsKKyAgICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQ
cm9maWxpbmdSZWFzb246Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSwg
anNVbmRlZmluZWQoKSwgaGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVM
b2FkZXIuY3BwCmluZGV4IDI3NGQyY2NmOTUzMTI4OWY2MGVkNTlkOGNhYzU1ZjcxYTlhNzkzYzQu
Ljg5YjM0Njc2MWY2YzNjZDA1MmQ1MzllNTAzMWFhZTM1NDY1OGQ4YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTEzMSwxNCAr
MTMxLDEzIEBAIEpTQXJyYXkqIEpTTW9kdWxlTG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVh
dGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBKU09iamVjdCogZnVuY3Rp
b24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5kZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkUHVibGljTmFtZSgpKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBm
dW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9u
ZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsK
KyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChr
ZXkpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50
cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIHJlc3VsdCk7CkBAIC0xNTEsOSArMTUwLDgg
QEAgSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6cHJvdmlkZUZldGNoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LAogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganND
YXN0PEpTT2JqZWN0Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucHJvdmlkZUZldGNoUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAg
QVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0g
SlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBl
ICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIFNvdXJjZUNvZGUgc291cmNlIHsgc291
cmNlQ29kZSB9OwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTE2MSw3
ICsxNTksNyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBrZXksCiAgICAgYXJndW1lbnRzLmFwcGVuZChK
U1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgQVNTRVJUKCFh
cmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMs
IGFyZ3VtZW50cykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7CiB9CiAKIEpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJh
bWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0xNzEsOSArMTY5LDggQEAgSlNJbnRl
cm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09i
amVjdCo+KGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmxvYWRBbmRFdmFsdWF0ZU1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsK
LSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRh
LnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlTmFtZSk7CkBAIC0xODEs
NyArMTc4LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZh
bHVhdGVNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBhcmd1bWVudHMuYXBwZW5k
KHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7
CiAKLSAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHByb21pc2Ug
PSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBq
c0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihwcm9taXNlKTsKIH0KQEAgLTE5Myw5ICsxOTAsOCBA
QCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganND
YXN0PEpTT2JqZWN0Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEg
PSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5
cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlTmFtZSk7CkBAIC0yMDMsNyAr
MTk5LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBhcmd1bWVudHMuYXBwZW5kKHNj
cmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAK
LSAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHByb21pc2UgPSBj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBqc0Nh
c3Q8SlNJbnRlcm5hbFByb21pc2UqPihwcm9taXNlKTsKIH0KQEAgLTIxNSwxNiArMjExLDE1IEBA
IEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5saW5rQW5kRXZhbHVhdGVNb2R1bGVQdWJsaWNOYW1lKCkpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRh
KTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2Fs
bERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxE
YXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlS2V5KTsKICAgICBh
cmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbiwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwogfQogCiBKU0ludGVybmFsUHJvbWlz
ZSogSlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHBhcmFtZXRl
cnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAgLTIzNCw5ICsyMjksOCBAQCBKU0ludGVybmFs
UHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiAgICAgYXV0byogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihn
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXF1ZXN0
SW1wb3J0TW9kdWxlUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxE
YXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
ICAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBtb2R1bGVLZXkuaW1wbCgpKSk7CkBA
IC0yNDQsNyArMjM4LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1
ZXN0SW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhcmd1bWVudHMu
YXBwZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93
ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHBy
b21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1
bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJl
dHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihwcm9taXNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYjM3NDU4Yjc3NmM5YzRk
MWFhNGE4ZTU0MjBhOWI5MDFjOTFhM2I2Zi4uZGJkN2IyZTFhOTA2MjZmYjkwN2IwOWI0ZDc1NmUz
OTAyN2Q4NDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKQEAgLTEyMSwxMyArMTIxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmRlbnQoKTsK
ICAgICB2b2lkIHVuaW5kZW50KCk7CiAgICAgdm9pZCBzdGFydE5ld0xpbmUoU3RyaW5nQnVpbGRl
ciYpIGNvbnN0OwotICAgIGJvb2wgaXNDYWxsYWJsZVJlcGxhY2VyKCkgY29uc3QgeyByZXR1cm4g
bV9yZXBsYWNlckNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lOyB9CisgICAgYm9vbCBpc0NhbGxh
YmxlUmVwbGFjZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxhY2VyQ2FsbERhdGEudHlwZSAhPSBD
YWxsRGF0YTo6VHlwZTo6Tm9uZTsgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGNvbnN0IG1fZ2xv
YmFsT2JqZWN0OwogICAgIEpTVmFsdWUgbV9yZXBsYWNlcjsKICAgICBib29sIG1fdXNpbmdBcnJh
eVJlcGxhY2VyIHsgZmFsc2UgfTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBtX2FycmF5UmVwbGFj
ZXJQcm9wZXJ0eU5hbWVzOwotICAgIENhbGxUeXBlIG1fcmVwbGFjZXJDYWxsVHlwZSB7IENhbGxU
eXBlOjpOb25lIH07CiAgICAgQ2FsbERhdGEgbV9yZXBsYWNlckNhbGxEYXRhOwogICAgIFN0cmlu
ZyBtX2dhcDsKIApAQCAtMjMxLDggKzIzMCw4IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHJlcGxhY2VyLCBKU1ZhbHVlCiAg
ICAgaWYgKG1fcmVwbGFjZXIuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogcmVwbGFj
ZXJPYmplY3QgPSBhc09iamVjdChtX3JlcGxhY2VyKTsKIAotICAgICAgICBtX3JlcGxhY2VyQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZXJPYmplY3QsIG1fcmVwbGFjZXJDYWxsRGF0
YSk7Ci0gICAgICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgbV9yZXBsYWNlckNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VyT2Jq
ZWN0KTsKKyAgICAgICAgaWYgKG1fcmVwbGFjZXJDYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOb25lKSB7CiAgICAgICAgICAgICBib29sIGlzQXJyYXlSZXBsYWNlciA9IEpTQzo6aXNB
cnJheShnbG9iYWxPYmplY3QsIHJlcGxhY2VyT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsICk7CiAgICAgICAgICAgICBpZiAoaXNBcnJheVJlcGxhY2VyKSB7
CkBAIC0zMDQsMTUgKzMwMywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgU3RyaW5naWZpZXI6
OnRvSlNPTihKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgUHJvcGVydHlOYW1lRgogICAgIEpTVmFs
dWUgdG9KU09ORnVuY3Rpb24gPSBiYXNlVmFsdWUuZ2V0KG1fZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b0pTT04pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCB0b0pTT05GdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHRv
SlNPTkZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQocHJvcGVydHlOYW1lLnZhbHVlKG1fZ2xvYmFsT2Jq
ZWN0KSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0b0pTT05GdW5j
dGlvbiksIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZVZhbHVlLCBhcmdzKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0b0pTT05G
dW5jdGlvbiksIGNhbGxEYXRhLCBiYXNlVmFsdWUsIGFyZ3MpKTsKIH0KIAogU3RyaW5naWZpZXI6
OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIb2xkZXImIGhvbGRlciwg
Y29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCkBAIC0zMzMs
NyArMzMxLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBw
ZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICBhcmdzLmFwcGVuZCh2
YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBB
U1NFUlQoaG9sZGVyLm9iamVjdCgpKTsKLSAgICAgICAgdmFsdWUgPSBjYWxsKG1fZ2xvYmFsT2Jq
ZWN0LCBtX3JlcGxhY2VyLCBtX3JlcGxhY2VyQ2FsbFR5cGUsIG1fcmVwbGFjZXJDYWxsRGF0YSwg
aG9sZGVyLm9iamVjdCgpLCBhcmdzKTsKKyAgICAgICAgdmFsdWUgPSBjYWxsKG1fZ2xvYmFsT2Jq
ZWN0LCBtX3JlcGxhY2VyLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlci5vYmplY3QoKSwgYXJn
cyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZ2lmeUZhaWxlZCk7
CiAgICAgfQogCkBAIC01OTEsMTAgKzU4OSw5IEBAIGNsYXNzIFdhbGtlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2Fsa2VyKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsK
IHB1YmxpYzoKLSAgICBXYWxrZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgQ2FsbERhdGEgY2FsbERhdGEpCisgICAg
V2Fsa2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbERhdGEgY2FsbERhdGEpCiAgICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgICAgICwgbV9jYWxsVHlwZShj
YWxsVHlwZSkKICAgICAgICAgLCBtX2NhbGxEYXRhKGNhbGxEYXRhKQogICAgIHsKICAgICB9CkBA
IC02MDYsMTQgKzYwMywxMyBAQCBwcml2YXRlOgogICAgICAgICBhcmdzLmFwcGVuZChwcm9wZXJ0
eSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKHVuZmlsdGVyZWQpOwogICAgICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwobV9nbG9iYWxPYmplY3Qs
IG1fZnVuY3Rpb24sIG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIHRoaXNPYmosIGFyZ3MpOworICAg
ICAgICByZXR1cm4gY2FsbChtX2dsb2JhbE9iamVjdCwgbV9mdW5jdGlvbiwgbV9jYWxsRGF0YSwg
dGhpc09iaiwgYXJncyk7CiAgICAgfQogCiAgICAgZnJpZW5kIGNsYXNzIEhvbGRlcjsKIAogICAg
IEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKICAgICBKU09iamVjdCogbV9mdW5jdGlv
bjsKLSAgICBDYWxsVHlwZSBtX2NhbGxUeXBlOwogICAgIENhbGxEYXRhIG1fY2FsbERhdGE7CiB9
OwogCkBAIC04MDAsMTIgKzc5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
T05Qcm90b0Z1bmNQYXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIAogICAgIEpTVmFsdWUg
ZnVuY3Rpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAg
IGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBXYWxrZXIg
d2Fsa2VyKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsVHlwZSwgY2FsbERh
dGEpOworICAgIFdhbGtlciB3YWxrZXIoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChmdW5jdGlvbiks
IGNhbGxEYXRhKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdhbGtlci53YWxrKHVuZmls
dGVyZWQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDljNWQ1NWE5Mzg4ZGM2MTgxNWM2ZWY0Njc1NmU3N2EwZGFiMGIyN2YuLmUzY2UyOGRj
ZGYzMjRlNjc4MWFmNzg5MGU2MjNmNDBkZDY1YmRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTc2NywxMCArNzY3LDkgQEAgYm9vbCBvcmRpbmFy
eVNldFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwg
UHJvcGVydHlOYW0KICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IHNldHRlck9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzZXR0
ZXJPYmplY3QsIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0s
IHNldHRlck9iamVjdCk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBzZXR0ZXJPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgcmVjZWl2ZXIsIGFyZ3MpOwor
ICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBzZXR0ZXJPYmplY3QsIGNhbGxEYXRhLCByZWNlaXZlciwg
YXJncyk7CiAKICAgICAvLyA5LjEuOS4xLTkgUmV0dXJuIHRydWUuCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMTE3LDkgKzIxMTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxU
b1ByaW1pdGl2ZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICBpZiAoZnVuY3Rp
b24uaXNVbmRlZmluZWRPck51bGwoKSAmJiBtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7
Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0byBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0g
Q2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKG1vZGUgPT0gVHlwZUhpbnRNb2Rl
OjpUYWtlc0hpbnQpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiU3ltYm9sLnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9y
IG51bGwiX3MpOwogICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCk7CkBAIC0yMTQzLDcg
KzIxNDEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIH0KICAgICBBU1NFUlQoIWNh
bGxBcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjb25zdF9jYXN0PEpTT2Jq
ZWN0Kj4ob2JqZWN0KSwgY2FsbEFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgY29uc3RfY2FzdDxKU09iamVjdCo+KG9iamVj
dCksIGNhbGxBcmdzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzY29wZS5leGNl
cHRpb24oKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYg
KHJlc3VsdC5pc09iamVjdCgpKQpAQCAtMjI0MCw5ICsyMjM4LDggQEAgYm9vbCBKU09iamVjdDo6
aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGhhc0luc3RhbmNl
VmFsdWUgIT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5j
dGlvbigpKSB7Ci0gICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGhhc0luc3RhbmNlVmFsdWUsIGNhbGxEYXRh
KTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIGF1
dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBoYXNJbnN0YW5jZVZhbHVlKTsKKyAg
ICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
bnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCB0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTIyNTAsNyArMjI0Nyw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUKICAgICAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogICAgICAg
ICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBjYWxsKGdsb2JhbE9iamVjdCwgaGFzSW5zdGFuY2VWYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmdzKTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVj
dCwgaGFzSW5zdGFuY2VWYWx1ZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3MpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQudG9C
b29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgfQpAQCAtMzg2OSw3ICszODY2LDcgQEAgdm9pZCBK
U09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KIAogLy8gSW1wbGVtZW50cyBHZXRNZXRob2QoTywgUCkgaW4gc2Vj
dGlvbiA3LjMuOSBvZiB0aGUgc3BlYy4KIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2V0bWV0aG9kCi1KU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbERhdGEmIGNh
bGxEYXRhLCBDYWxsVHlwZSYgY2FsbFR5cGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK0pTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhvZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRGF0YSYgY2FsbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMzg4NSw4ICszODgyLDggQEAgSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2EKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgY2FsbFR5cGUgPSBtZXRo
b2QuYXNDZWxsKCktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEobWV0aG9kLmFzQ2VsbCgp
LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAg
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBtZXRob2QpOworICAgIGlmIChjYWxsRGF0
YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggYTY4NzhhNmE0YjQzYjM4ZDU4ZTNmMzkyODY5M2FkMzcwMjc5MmUxMS4uNTYzM2Y0
MjVhMmQzNjYyMjEzOTQ2ZDRlYTMxOWMyYTcxNzE4NWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC05MDAsNyArOTAwLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gJm1fYnV0dGVyZmx5OwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
VmFsdWUgZ2V0TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbERhdGEmLCBDYWxsVHlwZSYsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBnZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICBi
b29sIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lKFZNJiwgUHJvcGVydHlOYW1lKTsKICAgICBib29s
IGNhblBlcmZvcm1GYXN0UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNTFlMGJmMzc4
NmUxNzY4NjVhODZmYzkxNjU2NjJlOGU1M2Q1YzIzNC4uYWI0NDg1MDlhNTFlNWFjNDg5ZjkzMWVi
ODJiNmQ1ZGNiNTBlODIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTUxMSwyNyArNTExLDI3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIENhbGxUeXBlIGdldENhbGxE
YXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgQ2FsbERhdGEmIGNhbGxEYXRhKQoraW5saW5lIENh
bGxEYXRhIGdldENhbGxEYXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZh
bHVlLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CiAgICAgaWYgKGNl
bGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKLSAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246
OmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKLSAgICBDYWxsVHlwZSByZXN1bHQgPSBjZWxs
LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKLSAgICBBU1NF
UlQocmVzdWx0ID09IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7Cisg
ICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShjZWxsKTsKKyAgICBDYWxsRGF0
YSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwpOworICAg
IEFTU0VSVChyZXN1bHQudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1Zh
bGlkQ2FsbGVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRh
JiBjb25zdHJ1Y3REYXRhKQoraW5saW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCi0gICAgICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlOjpOb25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2Vs
bCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwogICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCi0gICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKGNl
bGwsIGNvbnN0cnVjdERhdGEpOwotICAgIENvbnN0cnVjdFR5cGUgcmVzdWx0ID0gY2VsbC0+bWV0
aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVjdERhdGEpOwotICAg
IEFTU0VSVChyZXN1bHQgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2Fs
bGVlKCkpOworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShjZWxs
KTsKKyAgICBDYWxsRGF0YSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0
cnVjdERhdGEoY2VsbCk7CisgICAgQVNTRVJUKHJlc3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggMDlj
MzZlNWRlMjk3MGJhMDc3MTA4MmE2MTFkNGM3MTdlYThlMzY1NS4uZTY4YjFjODRkNmJjNTRhNDVl
NDEwNmQ0MTIyMTkwMDQwMzEwY2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2UuY3BwCkBAIC0xMDcsMTQgKzEwNywxMyBAQCBKU1Byb21pc2U6OkRlZmVycmVk
RGF0YSBKU1Byb21pc2U6OmNyZWF0ZURlZmVycmVkRGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
RnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPm5l
d1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgp
LCBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRD
YWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24p
OworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICBKU1ZhbHVlIGRlZmVycmVkID0gY2FsbChnbG9iYWxPYmplY3QsIG5ld1Byb21p
c2VDYXBhYmlsaXR5RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
YXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIGRlZmVycmVkID0gY2FsbChnbG9iYWxPYmplY3QsIG5l
d1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24sIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1
bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBEZWZl
cnJlZERhdGEgcmVzdWx0OwpAQCAtMTM0LDEzICsxMzMsMTIgQEAgSlNQcm9taXNlKiBKU1Byb21p
c2U6OnJlc29sdmVkUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVGdW5jdGlv
bigpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5
cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwotICAgIGF1dG8gcmVzdWx0ID0gY2FsbChnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdC0+cHJvbWlz
ZUNvbnN0cnVjdG9yKCksIGFyZ3VtZW50cyk7CisgICAgYXV0byByZXN1bHQgPSBjYWxsKGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1
Y3RvcigpLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgIEFTU0VSVChyZXN1bHQuaW5oZXJpdHM8SlNQcm9taXNlPih2bSkpOwogICAgIHJl
dHVybiBqc0Nhc3Q8SlNQcm9taXNlKj4ocmVzdWx0KTsKQEAgLTE0OCwxNiArMTQ2LDE1IEBAIEpT
UHJvbWlzZSogSlNQcm9taXNlOjpyZXNvbHZlZFByb21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxsRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbiwgSlNQcm9taXNl
KiBwcm9taXNlLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7
CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgZnVu
Y3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25l
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMu
YXBwZW5kKHByb21pc2UpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgIEFTU0VS
VCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBjYWxsKGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsK
KyAgICBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgp
LCBhcmd1bWVudHMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBlYmFkMDI5NmU4MTdk
OTU0MDYxOGE3Y2Y4M2JmNjU3MWFiMDRhODA0Li4yMDk3ODkyODEzYmZmOWE3OTAyNzVkYzYxYmZj
N2EzYTg2NDgyYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
Q29uc3RydWN0b3IuY3BwCkBAIC04OCw5ICs4OCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
CiAgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAoYWRkZXJG
dW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gYWRkZXJGdW5jdGlv
bkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOworICAgIGlmIChhZGRl
ckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0xMTIsNyArMTExLDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEMKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAg
IEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVu
Y3Rpb25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBtYXAsIGFyZ3VtZW50cyk7Cisg
ICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2Fs
bERhdGEsIG1hcCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUobWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCmluZGV4IDVlZTQxZmExMjk0MDAwY2ZhMDYyZTRmMzFlZjBiY2E2MzY5Yzg0
OGEuLjZmZDY3ZGY5OGE1MjFlYWJjMmFhMDczNzljMGMzZjVmZDRhY2ZlZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMjk5
LDEzICsyOTksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIElmIElzQ2FsbGFibGUo
dG9TdHJpbmcpIGlzIGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCi0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
dG9TdHJpbmcsIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b1N0cmluZyk7CisgICAgaWYg
KGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCiAgICAgLy8gUmV0dXJuIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIHRvU3Ry
aW5nIHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYW5kIG5vIGFyZ3VtZW50cy4KLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgdG9T
dHJpbmcsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFs
T2JqZWN0LCB0b1N0cmluZywgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCA2ZTRi
MTVjMmQwNzNlZmZlODk3MTRlNjA5ZDE1NGI5MzFmZmMxM2I1Li5kYTcwYmQzODJkZTMwNDI0NWU3
ZWRlMzYxNWNhN2QyNzhkNTI0MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCkBAIC0xMzgsOCArMTM4LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybVByb3h5R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5T2JqZWN0KiBw
cm94eU8KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxl
clZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsK
LSAgICBKU1ZhbHVlIGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0
LCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmdldCwgIidnZXQnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIG9iamVjdCBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwor
ICAgIEpTVmFsdWUgZ2V0SGFuZGxlciA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3Qs
IGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICInZ2V0JyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGdldEhhbmRsZXIuaXNVbmRlZmlu
ZWQoKSkKQEAgLTE1MCw3ICsxNDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJveHlPYmplY3QqIHByb3h5TwogICAgIGFy
Z3VtZW50cy5hcHBlbmQoaWRlbnRpZmllclRvU2FmZVB1YmxpY0pTVmFsdWUodm0sIElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHJlY2VpdmVyKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwot
ICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBnZXRIYW5kbGVyLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFw
UmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGdldEhhbmRsZXIsIGNhbGxEYXRhLCBoYW5kbGVy
LCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKQEAgLTIxMyw4ICsyMTIsNyBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNP
YmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBt
YWtlSWRlbnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhv
ZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRp
Zmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5RGVz
Y3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxl
Il9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGdl
dE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKSk7CkBA
IC0yMjMsNyArMjIxLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9k
R2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBhcmd1bWVudHMu
YXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChpZGVudGlmaWVyVG9TYWZlUHVi
bGljSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgp
KSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1
ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ck1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVm
aW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKQEAgLTMxNyw4ICszMTUsNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRo
b2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmhh
cywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJs
ZSJfcyk7CisgICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFs
T2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCAiJ2hhcycgcHJvcGVydHkg
b2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFz
UHJvcGVydHkoKSk7CkBAIC0zMjcsNyArMzI0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUhhc1Byb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQog
ICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGlkZW50
aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgp
KTsKLSAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaGFzTWV0aG9k
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0
cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGhhc01ldGhvZCwgY2FsbERhdGEsIGhhbmRs
ZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
CiAgICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KTsKQEAgLTQyMCw4ICs0MTcsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVgogCiAg
ICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFs
dWUgc2V0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEs
IGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgc2V0TWV0
aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3Bl
cnR5TmFtZXMtPnNldCwgIidzZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3Vs
ZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoc2V0TWV0
aG9kLmlzVW5kZWZpbmVkKCkpCkBAIC00MzMsNyArNDI5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybVB1dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1YKICAgICBhcmd1bWVudHMuYXBwZW5kKHB1dFZhbHVlKTsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHRoaXNWYWx1ZSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgc2V0TWV0aG9kLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFw
UmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldE1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIs
IGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
IGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpAQCAtNTEzLDE1ICs1
MDksMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVy
ID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFu
ZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRl
bnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5k
bGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2
bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3Vs
ZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAg
ICBpZiAoYXBwbHlNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0Q2FsbERhdGEodGFyZ2V0LCBjYWxsRGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGNhbGxGcmFtZSkp
KSk7CisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0KTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CiAgICAgfQogCiAgICAgSlNBcnJheSogYXJnQXJyYXkg
PSBjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKQEAgLTUzMSwyMCArNTI1
LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxE
YXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CiB9CiAKLUNhbGxUeXBlIFByb3h5T2JqZWN0Ojpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIFBy
b3h5T2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2Vs
bCk7Ci0gICAgaWYgKCFwcm94eS0+bV9pc0NhbGxhYmxlKSB7Ci0gICAgICAgIGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZSA9IG51bGxwdHI7Ci0gICAgICAgIGNhbGxEYXRhLmpzLnNjb3Bl
ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpOb25lOworICAgIGlmIChwcm94
eS0+bV9pc0NhbGxhYmxlKSB7CisgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlw
ZTo6TmF0aXZlOworICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBwZXJmb3JtUHJv
eHlDYWxsOwogICAgIH0KLQotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Q
cm94eUNhbGw7Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAgIHJldHVybiBjYWxsRGF0
YTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQpAQCAtNTY0LDE1ICs1NTYsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVl
IGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxE
YXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwgIidjb25zdHJ1
Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7
CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFs
T2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwgIidjb25z
dHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJf
cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoY29uc3RydWN0
TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOwotICAgICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUp
OwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEs
IEFyZ0xpc3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpKTsKKyAgICAgICAg
YXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgdGFyZ2V0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpO
b25lKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGNh
bGxGcmFtZSksIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgSlNBcnJh
eSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKQEAg
LTU4MiwyNCArNTcyLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBl
cmZvcm1Qcm94eUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXJndW1lbnRz
LmFwcGVuZChhcmdBcnJheSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
Y2FsbChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFy
Z3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIn
cyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1Db25zdHJ1Y3RUeXBlIFByb3h5T2JqZWN0
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKK0NhbGxEYXRhIFByb3h5T2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2Vs
bCkKIHsKKyAgICBDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIFByb3h5T2JqZWN0KiBwcm94
eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIGlmICghcHJveHktPm1faXNDb25z
dHJ1Y3RpYmxlKSB7Ci0gICAgICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxl
ID0gbnVsbHB0cjsKLSAgICAgICAgY29uc3RydWN0RGF0YS5qcy5zY29wZSA9IG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpOb25lOworICAgIGlmIChwcm94eS0+bV9pc0Nv
bnN0cnVjdGlibGUpIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5
cGU6Ok5hdGl2ZTsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBwZXJm
b3JtUHJveHlDb25zdHJ1Y3Q7CiAgICAgfQotCi0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBwZXJmb3JtUHJveHlDb25zdHJ1Y3Q7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6
Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBEZWZhdWx0RGVsZXRlRnVuY3Rpb24+CkBAIC02MjUsOCArNjEzLDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGUKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4o
aGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxs
VHlwZTsKLSAgICBKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwg
ImRlbGV0ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWxldGVQcm9w
ZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBt
YWtlSWRlbnRpZmllcih2bSwgImRlbGV0ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHBy
b3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoZGVsZXRlUHJvcGVydHlNZXRob2QuaXNVbmRlZmlu
ZWQoKSkKQEAgLTYzNiw3ICs2MjMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIGFy
Z3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGlkZW50aWZpZXJU
b1NhZmVQdWJsaWNKU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5h
bWUudWlkKCkpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZGVsZXRlUHJvcGVydHlN
ZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1Zh
bHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZGVsZXRlUHJvcGVydHlNZXRob2Qs
IGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKIAogICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQu
dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC03MDcsOCArNjk0LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJW
YWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0g
ICAgSlNWYWx1ZSBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChn
bG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2
ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5
J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgcHJldmVudEV4
dGVuc2lvbnNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0
YSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRl
bnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUi
X3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVj
dCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKHByZXZlbnRFeHRlbnNpb25zTWV0
aG9kLmlzVW5kZWZpbmVkKCkpCkBAIC03MTcsNyArNzAzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQo
dGFyZ2V0KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBwcmV2ZW50RXh0ZW5zaW9uc01l
dGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFs
dWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBwcmV2ZW50RXh0ZW5zaW9uc01ldGhv
ZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogCiAgICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3Vs
dC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKQEAgLTc1OSw4ICs3NDUsNyBAQCBib29sIFByb3h5
T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1
ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAg
SlNWYWx1ZSBpc0V4dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiaXNFeHRlbnNpYmxl
IiksICInaXNFeHRlbnNpYmxlJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgaXNFeHRlbnNpYmxlTWV0aG9kID0gaGFuZGxl
ci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAi
aXNFeHRlbnNpYmxlIiksICInaXNFeHRlbnNpYmxlJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFu
ZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAg
LTc3MCw3ICs3NTUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xv
YmFsT2JqZWN0LCBpc0V4dGVuc2libGVNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxl
ciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVj
dCwgaXNFeHRlbnNpYmxlTWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBib29sIHRyYXBSZXN1
bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwpAQCAtODI1LDgg
KzgxMCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAKICAgICBKU09iamVjdCogaGFuZGxl
ciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eU1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlw
ZSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICInZGVmaW5lUHJvcGVydHknIHBy
b3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAg
SlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxP
YmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eSwgIidkZWZp
bmVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBp
ZiAoZGVmaW5lUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTg0MSw3ICs4MjUsNyBA
QCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGFyZ3VtZW50cy5hcHBlbmQoaWRlbnRpZmll
clRvU2FmZVB1YmxpY0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5
TmFtZS51aWQoKSkpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGRlc2NyaXB0b3JPYmplY3QpOwog
ICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0cmFw
UmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGRlZmluZVByb3BlcnR5TWV0aG9kLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0
ID0gY2FsbChnbG9iYWxPYmplY3QsIGRlZmluZVByb3BlcnR5TWV0aG9kLCBjYWxsRGF0YSwgaGFu
ZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9i
YWxPYmplY3QpOwpAQCAtOTIyLDggKzkwNiw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1H
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAK
ICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNW
YWx1ZSBvd25LZXlzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgIidvd25LZXlz
JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwor
ICAgIEpTVmFsdWUgb3duS2V5c01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmpl
Y3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgIidvd25LZXlzJyBw
cm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdl
dCA9IHRoaXMtPnRhcmdldCgpOwogICAgIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSk7CkBAIC05MzYsNyArOTE5LDcgQEAgdm9p
ZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmpl
Y3QsIG93bktleXNNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgb3duS2V5c01l
dGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiB1
bmNoZWNrZWRSZXN1bHRLZXlzOwpAQCAtMTEwMSw4ICsxMDg0LDcgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybVNldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3QKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFu
ZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlw
ZTsKLSAgICBKU1ZhbHVlIHNldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9k
KGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgInNl
dFByb3RvdHlwZU9mIiksICInc2V0UHJvdG90eXBlT2YnIHByb3BlcnR5IG9mIGEgUHJveHkncyBo
YW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBzZXRQcm90b3R5cGVP
Zk1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtl
SWRlbnRpZmllcih2bSwgInNldFByb3RvdHlwZU9mIiksICInc2V0UHJvdG90eXBlT2YnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9
IHRoaXMtPnRhcmdldCgpOwpAQCAtMTExMyw3ICsxMDk1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybVNldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3QKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZChwcm90b3R5cGUpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0g
ICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldFByb3RvdHlwZU9m
TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNW
YWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldFByb3RvdHlwZU9mTWV0aG9k
LCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0
LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwpAQCAtMTE2Niw4ICsxMTQ4LDcgQEAgSlNWYWx1ZSBQ
cm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVy
VmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwot
ICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xv
YmFsT2JqZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0UHJv
dG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0
aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVu
dGlmaWVyKHZtLCAiZ2V0UHJvdG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkg
b2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwpAQCAtMTE3Nyw3ICsxMTU4LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7
CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHRy
YXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1
bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxEYXRhLCBo
YW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSAmJiAhdHJhcFJlc3VsdC5pc051bGwo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXgg
ZWU1YmQ5MDU4Y2ZhODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYi4uY2MzNzcyZTMzZGQ1ODc3
ZDBkY2E2YTk0YmNjYTczOTIzNjNmOWQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5oCkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxs
RGF0YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0
ZW5zaW9ucyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDRiYzhkNGMxZWFlODhlZTMx
MDQ3YzVlYzczODRlZDM3ODRmNTM4YTMuLjMzODdjZmVmOWVhM2UyMGZjZmM4OWVjNWFiY2ZjNjc3
ODEzZTkxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxl
Y3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RP
YmplY3QuY3BwCkBAIC05Niw5ICs5Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKIAotICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwotICAgIGlm
IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgYXV0byBjb25zdHJ1
Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgdGFyZ2V0KTsKKyAgICBpZiAoY29uc3RydWN0
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNv
bnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykp
OwogCiAgICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CkBAIC0xMjMsNyArMTIyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3RE
YXRhLCBhcmd1bWVudHMsIG5ld1RhcmdldCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNvbnN0
cnVjdERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzku
Z2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IGJl
YzE3NjA3ZGMxZjI3ZDMzZDNiNDRkZWFmYmYzYWViMmRlN2QzOTcuLjIxNDcwMjI3ZjMzNmJlYWIw
OWY0NWQ2ZTFiNjg2ZDczYjU4MDJjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC01MjMsMTAgKzUyMyw4IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhjb25zdCBBYnN0
cmFjdExvY2tlciYpCiAgICAgICAgICAgICBhdXRvIHNldEZhbGxiYWNrRnJhbWVUeXBlID0gWyZd
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWFscmVhZHlIYXNFeGVjdXRhYmxlKTsKICAgICAg
ICAgICAgICAgICBGcmFtZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBlOjpVbmtub3duOwotICAgICAg
ICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlOwotICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobV92bSwgY2Fs
bGVlQ2VsbCwgY2FsbERhdGEpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6SG9zdCkKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEo
bV92bSwgY2FsbGVlQ2VsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0g
Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRnJh
bWVUeXBlOjpIb3N0OwogCiAgICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5mcmFtZVR5cGUgPSBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNjkwOTk4ZmVhN2M2OWVmMGY3ODJhMzM0MmNmOTk5NzNkYWQ0ZDRjZi4uNDI3
NjU0YTBhZTU4YzgxNmUxMDRiYTQ1N2Q1YTkyZWQwYjA2MmExNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtODgsOSArODgsOCBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHNl
dC0+SlNPYmplY3Q6OmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBD
YWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25D
YWxsRGF0YSk7Ci0gICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkpCisgICAgYXV0byBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0
YSh2bSwgYWRkZXJGdW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBz
Y29wZS5yZWxlYXNlKCk7CkBAIC05OCw3ICs5Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChuZXh0VmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRk
ZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHNldCwgYXJndW1lbnRz
KTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rp
b25DYWxsRGF0YSwgc2V0LCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNGFjNTQxNmI4MTRhNzA2MmMxYjk4MDBkMTdmOGIzYmIy
MmZlMjNjZS4uZjFiYWY5MTVlMWE3MDA5Nzk5NTNhYzM0ODBjNWQxMTk4ZWI0YmQzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBA
IC01MTQsOCArNTE0LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlbW92ZVVz
aW5nUmVnRXhwU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKIH0KIAogc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICBWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1N0cmluZyogc3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEs
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUsIFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIEpTVmFs
dWUgcmVwbGFjZVZhbHVlKQorICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RyaW5nKiBzdHJpbmcsIEpTVmFsdWUgc2VhcmNo
VmFsdWUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwKKyAgICBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAgICAgICByZWdFeHBP
YmplY3QtPnNldExhc3RJbmRleChnbG9iYWxPYmplY3QsIDApOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgpKSAKKyAgICAgICAgaWYg
KGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3Ry
aW5nLmxlbmd0aCgpKSAKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVt
b3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGdsb2JhbE9iamVjdCwgc3RyaW5nLCBzb3VyY2UsIHJl
Z0V4cCkpOwogICAgIH0KIApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCiAgICAgVmVjdG9yPFN0cmluZywg
MTY+IHJlcGxhY2VtZW50czsKIAogICAgIC8vIFRoaXMgaXMgZWl0aGVyIGEgbG9vcCAoaWYgZ2xv
YmFsIGlzIHNldCkgb3IgYSBvbmUtd2F5IChpZiBub3QpLgotICAgIGlmIChnbG9iYWwgJiYgY2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6OkpTKSB7CisgICAgaWYgKGdsb2JhbCAmJiBjYWxsRGF0YS50eXBl
ID09IENhbGxEYXRhOjpUeXBlOjpKUykgewogICAgICAgICAvLyByZWdFeHAtPm51bVN1YnBhdHRl
cm5zKCkgKyAxIGZvciBwYXR0ZXJuIGFyZ3MsICsgMiBmb3IgbWF0Y2ggc3RhcnQgYW5kIHN0cmlu
ZwogICAgICAgICBpbnQgYXJnQ291bnQgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxICsg
MjsKICAgICAgICAgaWYgKGhhc05hbWVkQ2FwdHVyZXMpCkBAIC02MTksNyArNjE5LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAg
ICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGlmIChj
YWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFzb3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRl
eCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KSkpCiAgICAgICAgICAgICAgICAgICAgIE9VVF9P
Rl9NRU1PUlkoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIHJl
cGxhY2VWYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmdzKTsKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIHJl
cGxhY2VWYWx1ZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3MpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgICAg
IFN0cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CkBAIC03MjQsNyArNzI0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cihKU0dsb2JhbE9iamUKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcgPSBlbXB0eVN0
cmluZygpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZVVzaW5nUmVnRXhw
U2VhcmNoKAotICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwg
c2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBDYWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRTdHJpbmcs
IEpTVmFsdWUoKSkpOworICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHRoaXNW
YWx1ZSwgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCByZXBsYWNlbWVudFN0cmluZywgSlNWYWx1ZSgp
KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlUmVnRXhwU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5n
KiB0aGlzVmFsdWUsIFJlZ0V4cE9iamVjdCogc2VhcmNoVmFsdWUsIEpTU3RyaW5nKiByZXBsYWNl
U3RyaW5nKQpAQCAtNzM4LDcgKzczOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKEpTR2xvYmFsT2JqZWN0CiAgICAg
U3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZVN0cmluZy0+dmFsdWUoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICAgICAg
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIHNlYXJjaFZhbHVlLCBjYWxs
RGF0YSwgQ2FsbFR5cGU6Ok5vbmUsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBsYWNlU3RyaW5nKSk7
CisgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBzZWFyY2hW
YWx1ZSwgY2FsbERhdGEsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBsYWNlU3RyaW5nKSk7CiB9CiAK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2go
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNTdHJpbmcqIHN0cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNl
VmFsdWUpCkBAIC03NDYsMTUgKzc0NiwxNCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmlu
ZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgU3RyaW5nIHJlcGxh
Y2VtZW50U3RyaW5nOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwotICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxs
RGF0YSh2bSwgcmVwbGFjZVZhbHVlKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0
YTo6VHlwZTo6Tm9uZSkgewogICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1
ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHJlcGxhY2Vt
ZW50U3RyaW5nLCByZXBsYWNlVmFsdWUpKTsKKyAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgcmVwbGFjZW1lbnRTdHJpbmcs
IHJlcGxhY2VWYWx1ZSkpOwogfQogCiBlbnVtIGNsYXNzIFJlcGxhY2VNb2RlIDogYm9vbCB7IFNp
bmdsZSwgR2xvYmFsIH07CkBAIC03NjgsMTQgKzc2NywxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1N0cmluZyogcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvV1RGU3RyaW5nKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAK
LSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKHZtLCByZXBsYWNlVmFsdWUsIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0
Q2FsbERhdGEodm0sIHJlcGxhY2VWYWx1ZSk7CiAgICAgT3B0aW9uYWw8Q2FjaGVkQ2FsbD4gY2Fj
aGVkQ2FsbDsKICAgICBTdHJpbmcgcmVwbGFjZVN0cmluZzsKLSAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkgewogICAgICAgICByZXBsYWNlU3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6OkpTKSB7CisgICAg
fSBlbHNlIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpKUykgewogICAgICAg
ICBjYWNoZWRDYWxsLmVtcGxhY2UoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1
bmN0aW9uKj4ocmVwbGFjZVZhbHVlKSwgMyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOwogICAgICAgICBjYWNoZWRDYWxsLT5zZXRUaGlzKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNzkwLDcgKzc4OCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBy
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBWZWN0
b3I8U3RyaW5nUmFuZ2UsIDE2PiBzb3VyY2VSYW5nZXM7CiAgICAgVmVjdG9yPFN0cmluZywgMTY+
IHJlcGxhY2VtZW50czsKICAgICBkbyB7Ci0gICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6Tm9uZSkgeworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXBsYWNlbWVudDsKICAgICAgICAgICAgIGlm
IChjYWNoZWRDYWxsKSB7CiAgICAgICAgICAgICAgICAgYXV0byogc3Vic3RyaW5nID0ganNTdWJz
dHJpbmcodm0sIHN0cmluZywgbWF0Y2hTdGFydCwgc2VhcmNoU3RyaW5nTGVuZ3RoKTsKQEAgLTgw
OSw3ICs4MDcsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5n
U3RyaW5nU2VhcmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAgICAgYXJn
cy5hcHBlbmQoanNOdW1iZXIobWF0Y2hTdGFydCkpOwogICAgICAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBy
ZXBsYWNlVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJncyk7Cisg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmVwbGFjZVZh
bHVlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJncyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgICAg
IHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlbWVudC50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwpA
QCAtODIwLDcgKzgxOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNl
VXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIE9V
VF9PRl9NRU1PUlkoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKICAgICAgICAgc2l6ZV90IG1hdGNo
RW5kID0gbWF0Y2hTdGFydCArIHNlYXJjaFN0cmluZ0xlbmd0aDsKLSAgICAgICAgaWYgKGNhbGxU
eXBlICE9IENhbGxUeXBlOjpOb25lKQorICAgICAgICBpZiAoY2FsbERhdGEudHlwZSAhPSBDYWxs
RGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQocmVwbGFj
ZVN0cmluZyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXBs
YWNlbWVudChTdHJpbmdCdWlsZGVyOjpPdmVyZmxvd0hhbmRsZXI6OlJlY29yZE92ZXJmbG93KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxNjJlOTlkZWQzZWIwMWIyMjcw
MjVhODIyZTA2MzJiMjFjODYxZGVjLi40Yjk2ZGQ1YmM4MDNjZWVlZGNjY2E1ZjdmYzM1MzRiMmY3
Y2MxYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMjU4LDE0ICsx
MjU4LDEzIEBAIHZvaWQgVk06OmNhbGxQcm9taXNlUmVqZWN0aW9uQ2FsbGJhY2soU3Ryb25nPEpT
UHJvbWlzZT4mIHByb21pc2UpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSgqdGhpcyk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKCp0aGlzLCBjYWxsYmFjaywgY2FsbERhdGEpOwotICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKCp0aGlzLCBjYWxsYmFjayk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBh
cmdzLmFwcGVuZChwcm9taXNlLmdldCgpKTsKICAgICBhcmdzLmFwcGVuZChwcm9taXNlLT5yZXN1
bHQoKnRoaXMpKTsKLSAgICBjYWxsKHByb21pc2UtPmdsb2JhbE9iamVjdCgpLCBjYWxsYmFjaywg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncyk7CisgICAgY2FsbChwcm9taXNlLT5n
bG9iYWxPYmplY3QoKSwgY2FsbGJhY2ssIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncyk7CiAgICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjdkZmE2YmQ0MTk1Y2Q4
M2NlMTE0MTBhNzA2ZWJlN2ExMmQ5YjA4ZC4uZjcwMWM3YWQ1ODMwMTQxNzM0NGY1ZDcyZGQ4ODE4
MWI0ZTdhZmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwQ29uc3RydWN0b3IuY3BwCkBAIC03OSw5ICs3OSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiAgICAgSlNWYWx1ZSBhZGRlckZ1bmN0aW9uID0gd2Vha01hcC0+SlNPYmplY3Q6Omdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBDYWxsRGF0YSBhZGRlckZ1
bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7Ci0gICAg
aWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGFk
ZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKKyAg
ICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTAzLDcgKzEwMiw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUp
OwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBhZGRlckZ1bmN0aW9u
LCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha01hcCwg
YXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFk
ZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha01hcCwgYXJndW1lbnRzKTsKICAgICB9KTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha01hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBhNzE5MGY5NGFm
ZmYyNzU5ZDIyNzI1MDkxNWE2NjcxYjU0NTI2Yjg3Li5kODNhNDBmYzI0YmVmMWRjZGY5ZWVlYjA4
MjNmMTFiOTgxN2U0MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDkgKzc5LDggQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWMKICAgICBKU1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3ZWFrU2V0LT5KU09iamVj
dDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGFk
ZGVyRnVuY3Rpb25DYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsK
LSAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1
dG8gYWRkZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24p
OworICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC04OSw3ICs4OCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChuZXh0VmFsdWUpOwogICAgICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBjYWxsKGdsb2Jh
bE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxUeXBlLCBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHdlYWtTZXQsIGFyZ3Vt
ZW50cyk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdlYWtTZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRkMWQ0OWNh
YmIxMGY5ZDVlOTk3YmY4YmVjYjA3NTM4NmQ3ZTZhZjkuLmE3MGQ2MTEwMjRkZjUzNjY1NjE0MmMw
NTFlNTY3OTRhNTRmNWE0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKQEAgLTIxNDcsMTAgKzIxNDcsOSBAQCBzdGF0aWMgdm9pZCBjYWxsV2l0aFN0YWNr
U2l6ZVByb2JlRnVuY3Rpb24oUHJvYmU6OlN0YXRlKiBzdGF0ZSkKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmlu
ZWQoKSwgYXJncyk7CisgICAgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwg
anNVbmRlZmluZWQoKSwgYXJncyk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAppbmRleCA3OTZjODY4OGIyNzY0ZWI5M2Y2MzZkNTE5M2EzZTk3NTNm
YjgxOWIyLi5kYmM4ZGZiZmQyMWM5OTBmZTUzZjQwNWEzYjA1NzE0ZGIzNzc4Y2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwCkBAIC02NTcsOSArNjU3LDggQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NF
UlQoIWV4Y2VwdGlvbik7CiAKICAgICBpZiAoSlNPYmplY3QqIHN0YXJ0RnVuY3Rpb24gPSBtX3N0
YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgc3RhcnRGdW5jdGlvbiwg
Y2FsbERhdGEpOwotICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgc3RhcnRGdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCAqdm0uZW1wdHlMaXN0KTsKKyAgICAgICAg
YXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIHN0YXJ0RnVuY3Rpb24pOworICAg
ICAgICBjYWxsKGdsb2JhbE9iamVjdCwgc3RhcnRGdW5jdGlvbiwgY2FsbERhdGEsIGpzVW5kZWZp
bmVkKCksICp2bS5lbXB0eUxpc3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4IDJmZmI0ZGI0Nzgx
ZjFiMDFmNmQ3MmZhNjM1ZTY5YWJkYWUzOTRkNzkuLjk1NjhlNjZkZTM0ZGRkYjAyZGZjYTRhZGIz
YzIxYjYzMjk1NmFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAgLTQzLDExICs0Mywx
MCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gd2FzbUZ1bmN0aW9uLT5mdW5jdGlv
bigpOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKKyAgICBhdXRvIGNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
YWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CiB9CiAKIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihWTSYg
dm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uIGltcG9ydGFibGVGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA1
MzdlZWU3ZGFjYzdkYzQ0NmQ5ODk5NmQ4NGRiNWQxZGEzNGYxZWE0Li44OTc0ZTZhYTdhZTJkMDc1
NTE2Nzg5YThlNDYxYmEwNzQ2MTdiOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0x
ODgsOSArMTg4LDggQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJl
cGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBK
U0M6OkpTT2JqZWN0KiByZXBsYWNlbWVudE9iamVjdCA9IHJlcGxhY2VtZW50RnVuY3Rpb24udG9P
YmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5
cGUgPSByZXBsYWNlbWVudE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShyZXBs
YWNlbWVudE9iamVjdCwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxU
eXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZW1l
bnRPYmplY3QpOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2FsbERhdGE6OlR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnTGlzdDsKQEAgLTIwMCw3ICsxOTksNyBAQCBib29sIFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKICAgICBhcmdM
aXN0LmFwcGVuZCh0b0pTPElETFNlcXVlbmNlPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmdsb2JhbE9iamVjdCwgbV9uYW1lcykpOwogICAgIGFyZ0xp
c3QuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBtX3ZhbHVlcykpOwogICAgIEFTU0VS
VCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVu
dCA9IGNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxUeXBl
LCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICBKU0M6OkpTVmFsdWUgcmVw
bGFjZW1lbnQgPSBjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlcGxhY2VtZW50T2JqZWN0LCBj
YWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUu
ZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcAppbmRleCA2Yjc3OTQ5OTY2MGY1MzllYzU1ODM0OTdkY2FhODUzZjdjYTRjMWViLi5j
ZTMwYWY0NTk1MjM0YTQ2MTRlNjcwNDlhM2YzYjA3ODI0N2U1ZDhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC00OCwxMyArNDgsMTIgQEAg
SlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QKIAogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBDYWxsVHlwZTo6Tm9uZTsK
IAogICAgIGlmIChtZXRob2QgIT0gQ2FsbGJhY2tUeXBlOjpPYmplY3QpIHsKICAgICAgICAgZnVu
Y3Rpb24gPSBjYWxsYmFjazsKLSAgICAgICAgY2FsbFR5cGUgPSBjYWxsYmFjay0+bWV0aG9kVGFi
bGUodm0pLT5nZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsYmFjayk7CiAgICAgfQotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtZXRob2QgPT0gQ2FsbGJhY2tUeXBlOjpGdW5jdGlv
bikgewogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBKU0M6OkV4Y2VwdGlvbjo6Y3Jl
YXRlKHZtLCBjcmVhdGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY4LDI1ICs2NywyNSBAQCBKU1ZhbHVlIEpTQ2FsbGJh
Y2tEYXRhOjppbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U09iamVjdAogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICBjYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09
IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9
IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgQVNTRVJUKCFmdW5jdGlvbi5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgLy8gV2Ugd2lsbCBm
YWlsIHRvIGdldCB0aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCiAg
ICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgSlNFeGVj
U3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRh
KTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKGNvbnRleHQsIGNhbGxEYXRh
KTsKIAogICAgIHJldHVybmVkRXhjZXB0aW9uID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQ
cm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpT
RXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxp
bmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0
dXJuZWRFeGNlcHRpb24pOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxs
RnVuY3Rpb24oY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4IDgxNjI0ZTM3ZWM5YWQxOTVi
NWY4YzQ2YWIzYzYzZmMyYmI2ZWNiZDEuLjAzMGU4MDU1YTZiYjA3ZWNkMDkwY2JhNmExZDZkZDhi
MTVjM2QyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtMTE3LDE3ICsxMTcsMTYgQEAgUmVmUHRyPEVs
ZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVt
ZW50KERvY3VtZW50Jgogc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjb25zdHJ1Y3RDdXN0b21FbGVt
ZW50U3luY2hyb25vdXNseShEb2N1bWVudCYgZG9jdW1lbnQsIFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlID0gY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29u
c3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkgeworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9
IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0cnVjdG9yKTsKKyAgICBpZiAoY29uc3RydWN0RGF0
YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0V4ZWNTdGF0
ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KCZkb2N1bWVudCwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSk7CisgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbigmZG9j
dW1lbnQsIGNvbnN0cnVjdERhdGEpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSBuZXdFbGVtZW50
ID0gY29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0
VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncyk7CisgICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gY29u
c3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwg
YXJncyk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJmRv
Y3VtZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIApAQCAt
MTg2LDkgKzE4NSw4IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CiAKLSAgICBDb25zdHJ1Y3RE
YXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gbV9j
b25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0
b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEpOwotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGU6Ok5vbmUpIHsKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3RE
YXRhKHZtLCBtX2NvbnN0cnVjdG9yLmdldCgpKTsKKyAgICBpZiAoY29uc3RydWN0RGF0YS50eXBl
ID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTk5LDggKzE5Nyw4IEBAIHZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKLSAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KGNv
bnRleHQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOwotICAgIEpTVmFsdWUgcmV0dXJu
ZWRFbGVtZW50ID0gY29uc3RydWN0KGxleGljYWxHbG9iYWxPYmplY3QsIG1fY29uc3RydWN0b3Iu
Z2V0KCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIEpTRXhlY1N0
YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oY29udGV4dCwgY29uc3RydWN0RGF0YSk7CisgICAgSlNW
YWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBjb25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9j
b25zdHJ1Y3Rvci5nZXQoKSwgY29uc3RydWN0RGF0YSwgYXJncyk7CiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29udGV4dCk7CiAKICAgICBtX2NvbnN0cnVj
dGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTI0MCwxOCArMjM4LDE3IEBAIHZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09i
amVjdCogY2FsbGJhCiAKICAgICBKU09iamVjdCoganNFbGVtZW50ID0gYXNPYmplY3QodG9KUyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpKTsKIAotICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gY2FsbGJhY2stPm1ldGhvZFRh
YmxlKHZtKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0
YSh2bSwgY2FsbGJhY2spOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYWRkQXJn
dW1lbnRzKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgYXJncyk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAg
SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbihjb250ZXh0LCBjYWxsRGF0YSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIEpTRXhlY1N0YXRlOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
RWxlbWVudCwgYXJncywgZXhjZXB0aW9uKTsKKyAgICBKU0V4ZWNTdGF0ZTo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgY2FsbERhdGEsIGpzRWxlbWVudCwgYXJncywgZXhjZXB0
aW9uKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNv
bnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggNDkwMzg1MzYyOTNhNTlkZWU4OTc4NzIwMmI2NjI1
YTU4NjE1MGU5My4uZGY1NjJkMDU4YmYxNzMwYWE1NTBlZmNjOTg3YjVmNTQzMjM4Mzk5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmNwcApAQCAtNzQsMTEgKzc0LDEwIEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIAogICAgIEpTVmFsdWUgZnVu
Y3Rpb24gPSBtX2N1c3RvbVJlc29sdmVyLT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKLSAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewot
ICAgICAgICBjYWxsVHlwZSA9IG1fY3VzdG9tUmVzb2x2ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q2FsbERhdGEobV9jdXN0b21SZXNvbHZlci5nZXQoKSwgY2FsbERhdGEpOwotICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2Fs
bERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6
VHlwZTo6Tm9uZSkgeworICAgICAgICBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBtX2N1c3Rv
bVJlc29sdmVyLmdldCgpKTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIGlmIChQYWdlQ29uc29sZUNsaWVudCogY29uc29s
ZSA9IG1fZ2xvYmFsT2JqZWN0LT53cmFwcGVkKCkuY29uc29sZSgpKQogICAgICAgICAgICAgICAg
IGNvbnNvbGUtPmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsICJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBt
ZXRob2QuIl9zKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTkzLDcgKzkyLDcg
QEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29u
c3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmV0
dmFsID0gSlNFeGVjU3RhdGU6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgbV9jdXN0b21SZXNvbHZlci5nZXQoKSwgYXJncywgZXhjZXB0aW9u
KTsKKyAgICBKU1ZhbHVlIHJldHZhbCA9IEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgbV9jdXN0b21SZXNvbHZlci5nZXQoKSwgYXJncywg
ZXhjZXB0aW9uKTsKIAogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgaWYgKGV4Y2VwdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ci5oCmluZGV4IDk1YWQwNmUyZWQ0YzZiYzNjMGFkYzFmN2ZhMjNkNmY1MzQ3Y2FhZjUuLmM2MWNj
ZjJkZjRlZThiYjBhMWExNjc1M2VhYzg0Y2IwNzFlYTVhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDQsNyAr
NDQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAg
c3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOwogICAg
IHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCiAgICAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBjYWxsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1l
JiwgSlNDOjpKU09iamVjdCYpOwpAQCAtMTE4LDEwICsxMTgsMTIgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RP
TUJ1aWx0aW4KICAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y2FsbENvbnN0cnVjdG9yKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCBjcmVhdGVKU09iamVjdCgqY2FzdGVkVGhpcykpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDb25zdHJ1Y3RUeXBl
IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6
SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQordGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q2FsbERhdGEgSlNET01CdWlsdGluQ29uc3RydWN0
b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKQogeworICAgIENhbGxE
YXRhIGNvbnN0cnVjdERhdGE7CisgICAgY29uc3RydWN0RGF0YS50eXBlID0gSlNDOjpDYWxsRGF0
YTo6VHlwZTo6TmF0aXZlOwogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0OwotICAgIHJldHVybiBKU0M6OkNvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgcmV0dXJu
IGNvbnN0cnVjdERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJh
c2UuY3BwCmluZGV4IDhmM2ZmNGI4MzkwOTJhNjQ5NWUwYTI4ZWExMjMyMTY5ZTQ5MjliNGYuLjZi
ZGU2NTdkYzA2NjQzYTc0ZTdkYjMyYTRjZTEyMGZlZmU5NjcwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNl
LmNwcApAQCAtMzIsOSArMzIsOCBAQCB2b2lkIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZTo6
Y2FsbEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpKU0dsb2JhbAogewogICAgIEpT
Qzo6Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCAmZnVuY3Rpb24s
IGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAg
IGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCAmZnVuY3Rpb24pOworICAgIEFT
U0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIEpTQzo6
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUuYXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC00Myw3ICs0Miw3IEBAIHZv
aWQgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFy
Z3VtZW50cyhKU0M6OkpTR2xvYmFsCiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEpT
Qzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsICZ0aGlzT2JqZWN0LCBhcmd1bWVudHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgJmZ1bmN0aW9uLCBjYWxsRGF0YSwgJnRoaXNPYmplY3QsIGFyZ3VtZW50cyk7CiB9
CiAKIHZvaWQgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOjp2aXNpdENoaWxkcmVuKEpTQzo6
SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCmluZGV4IDM5M2RjZWIxMTFkM2YzYjcy
OTZkMjY3ZjBkZTZlMzY1YTk0NTA3OWQuLjNmNmVhNzUwM2YyNWFlMzcxNzM5NGViMjc3OTg4MjJh
NDQ4MWUzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6
OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3Ry
dWN0RGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoSlND
OjpKU0NlbGwqKTsKIAogICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXph
dGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpIHsgfQpAQCAtNjksMTAgKzY5LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IGlubGluZSB2b2lkIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmZpbmlzaENy
ZWF0aW9uCiAgICAgaW5pdGlhbGl6ZVByb3BlcnRpZXModm0sIGdsb2JhbE9iamVjdCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNvbnN0cnVjdFR5cGUgSlNE
T01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpT
Qzo6Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3M+IGlubGluZSBKU0M6OkNhbGxEYXRhIEpTRE9NQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENv
bnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKQogeworICAgIEpTQzo6Q2FsbERhdGEgY29uc3RydWN0
RGF0YTsKKyAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOYXRp
dmU7CiAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7Ci0gICAg
cmV0dXJuIEpTQzo6Q29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0
YTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnN0cnVjdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0
cnVjdG9yQmFzZS5jcHAKaW5kZXggNDAwMDNkZGIwNjM2YmM4ODA0NWMzM2M5MDExN2Q5MzdlMTc2
YTEwNC4uMWQ5NGI1ZDVjOGM1MzFlN2FkZjY0NTc1MTM3ZTk1ZDQ1MWQ1YjNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcApA
QCAtMzgsMTAgKzM4LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CiB9CiAKLUNhbGxUeXBlIEpTRE9NQ29uc3RydWN0b3JC
YXNlOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBK
U0RPTUNvbnN0cnVjdG9yQmFzZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKikKIHsKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsK
ICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAg
cmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAogU3RyaW5n
IEpTRE9NQ29uc3RydWN0b3JCYXNlOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0M6OlZN
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFz
ZS5oCmluZGV4IGM1MjhiMDk4NzdjNDQyOTMwZDQ3NjRiYzYyZmE2YzEwM2IxMmU1YjAuLjJlMGM1
YWMwMzM2ZTYxYTQxMTIzMzhiZjA4MzgwY2UwMzc2NmE1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaApAQCAtNTEsNyArNTEsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVj
dCosIEpTQzo6Vk0mKTsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CisgICAgc3RhdGljIEpTQzo6Q2Fs
bERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqKTsKIH07CiAKIGlubGluZSBKU0M6OlN0cnVj
dHVyZSogSlNET01Db25zdHJ1Y3RvckJhc2U6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgKaW5kZXggMzMwYzU5MmI4NWZmYTk2MzUzZTNlOTBl
OTNiZjQ2MzdhYTdkNjhiNS4uNGNjNTVlYzZhMjdiZGZiMDdiZDA4ZGQwM2FhZDcwYTdjMjYxNzM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oCkBAIC01NCwxMCArNTQsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxs
KiwgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEpCisgICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0
Q2FsbERhdGEoSlNDOjpKU0NlbGwqKQogICAgIHsKKyAgICAgICAgSlNDOjpDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICAgICAgY2FsbERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2
ZTsKICAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFRocm93VHlwZUVycm9y
OwotICAgICAgICByZXR1cm4gSlNDOjpDYWxsVHlwZTo6SG9zdDsKKyAgICAgICAgcmV0dXJuIGNh
bGxEYXRhOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRl
cmF0b3IuaAppbmRleCAwNzNmYzc2YjYxMWI4NzhmYTZjNDc5YjkwZWFhOWRmY2Y3N2IwMTQwLi5i
MDM3M2E2M2U1MWI0YTRlZDc3M2VlNGIyM2E3M2I5MzFhNTNhMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCkBAIC0yMDQsOSArMjA0LDggQEAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNJdGVyYXRvcj4gSlNDOjpKU1ZhbHVlIGl0ZXJhdG9yRm9yRWFjaChKU0M6
OkpTR2xvYmFsT2JqZWN0JgogICAgIEpTQzo6SlNWYWx1ZSBjYWxsYmFjayA9IGNhbGxGcmFtZS5h
cmd1bWVudCgwKTsKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLmFyZ3Vt
ZW50KDEpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgY2FsbGJhY2ssIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxs
VHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbGJhY2spOworICAgIGlmIChjYWxsRGF0YS50
eXBlID09IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY2FsbCBjYWxsYmFj
ayJfcyk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gdGhpc09iamVjdC53cmFwcGVkKCkuY3JlYXRl
SXRlcmF0b3IoKTsKQEAgLTIxOCw3ICsyMTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0l0ZXJh
dG9yPiBKU0M6OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAg
ICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgSlNDOjpj
YWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cyk7CisgICAgICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbGJhY2ssIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiAgICAgICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcAppbmRleCAy
MzY0YWQ5YmExNGEyM2MyY2IzOGJhNTlkYzQwMzc0ZWYwOGIwYWFkLi5mM2ViYmFkNzM5ZTNkMTAz
ZjQzMDEzYTVhM2JkMmQ2NTNmYTRiNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NTWFwTGlrZS5jcHAKQEAgLTUzLDEzICs1MywxMiBAQCB2b2lkIGNsZWFyQmFja2luZ01h
cChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0
JiBiYQogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byBmdW5jdGlvbiA9IGJhY2tpbmdNYXAuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5jbGVhcik7CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxE
YXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgSlNDOjpjYWxs
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmYmFj
a2luZ01hcCwgYXJndW1lbnRzKTsKKyAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsRGF0YSwgJmJhY2tpbmdNYXAsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQg
c2V0VG9CYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNPYmplY3QmIGJhY2tpbmdNYXAsIEpTQzo6SlNWYWx1ZSBrZXksIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKQEAgLTY3LDE1ICs2NiwxNCBAQCB2b2lkIHNldFRvQmFja2luZ01hcChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBiYQogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBm
dW5jdGlvbiA9IGJhY2tpbmdNYXAuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5zZXQpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNh
bGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBp
ZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0g
SlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIGlmIChjYWxsRGF0YS50eXBlID09
IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEpTQzo6
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5
KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxH
bG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nTWFwLCBh
cmd1bWVudHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxEYXRhLCAmYmFja2luZ01hcCwgYXJndW1lbnRzKTsKIH0KIAogSlNDOjpKU1ZhbHVlIGZv
cndhcmRBdHRyaWJ1dGVHZXR0ZXJUb0JhY2tpbmdNYXAoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCYgYmFja2luZ01hcCwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBhdHRyaWJ1dGVOYW1lKQpAQCAtODcsMTYgKzg1LDE1IEBAIEpTQzo6SlNWYWx1
ZSBmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPCiB7CiAgICAgYXV0byBmdW5jdGlvbiA9IGJhY2tpbmdNYXAuZ2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbk5hbWUpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IEpT
Qzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNV
bmRlZmluZWQoKTsKIAogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwog
ICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQo
KTsgKytjcHRyKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRB
cmd1bWVudChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICByZXR1cm4gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCAmYmFja2luZ01hcCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gSlND
OjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5n
TWFwLCBhcmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9C
YWNraW5nTWFwKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
JiBjYWxsRnJhbWUsIEpTQzo6SlNPYmplY3QmIG1hcExpa2UpCkBAIC0xMDcsMTYgKzEwNCwxNSBA
QCBKU0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNraW5nTWFwKEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQwogICAgIGF1dG8qIGZ1bmN0aW9uID0gZ2xvYmFsT2Jq
ZWN0LmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmpzRE9NQmluZGluZ0ludGVybmFscygpLm1f
Zm9yRWFjaFdyYXBwZXJGdW5jdGlvbi5nZXQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogCi0g
ICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRD
YWxsRGF0YShnbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9
IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAgICBBU1NF
UlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQo
JnJlc3VsdC5zZWNvbmQuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwg
Y2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsgKytjcHRyKQogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVudChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gSlNDOjpjYWxsKCZnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZtYXBMaWtlLCBhcmd1bWVudHMpOwor
ICAgIHJldHVybiBKU0M6OmNhbGwoJmdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAm
bWFwTGlrZSwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBET01NYXBBZGFwdGVyOjpjbGVhcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
CmluZGV4IGIwM2NhMWRmNmNlNWU0NjI1ODZlYTc4NGJmZjk3M2U4NjRlNTQyYTYuLmYzNDg0ZjYz
NjI2MTQ1NzJjZDc5NTIwMmNjMGRhZGNkZWM4Y2RiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMg
SlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKik7CiAKICAgICAvLyBV
c3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCiAgICAgdm9pZCBp
bml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7IH0KQEAg
LTcwLDEwICs3MCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgdm9pZCBK
U0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmZpbmlzaENyZQogICAgIGluaXRpYWxpemVQ
cm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0Ns
YXNzPiBpbmxpbmUgSlNDOjpDb25zdHJ1Y3RUeXBlIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0Ns
YXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNh
bGxEYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShK
U0M6OkpTQ2VsbCopCiB7CisgICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNv
bnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAgICByZXR1cm4gSlNDOjpD
b25zdHJ1Y3RUeXBlOjpIb3N0OworICAgIHJldHVybiBjb25zdHJ1Y3REYXRhOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmNwcAppbmRleCA3MDNmMzdmMzJlZWIzMGNhYzFkN2Q2NTJkYWY4NjBhMjljNjVkMjRjLi5l
ODVkNzViYjU3N2NlYjBmMmQ5YjFhMjAyMzk0YTBkOGNlNjVmM2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTY3LDEwICs2Nyw5IEBAIHZvaWQg
RE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQoSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU09iCiAgICAgYXJndW1lbnRzLmFwcGVuZChoYW5kbGVyKTsKICAgICBh
cmd1bWVudHMuYXBwZW5kKGhhbmRsZXIpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgdGhlbkZ1bmN0aW9uLCBj
YWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwot
ICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIHRoZW5GdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBwcm9taXNlLCBhcmd1bWVudHMpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6Omdl
dENhbGxEYXRhKHZtLCB0aGVuRnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9
IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpOworICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoZW5GdW5jdGlvbiwgY2FsbERhdGEsIHByb21pc2UsIGFyZ3VtZW50cyk7CiAKICAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
RGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVm
ZXJyZWQuY3BwCmluZGV4IGY0NzAwZjljZTExNWQzYTg0ZGFhN2I4ZjY3YmU0NzhmOGRkZWY3ODAu
LjI4NmI0ZDhhOGI5N2I2MDI5MzAzYWZiNjY0MTBhNGNkM2M0MmY3YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKQEAgLTIy
OCwxNSArMjI4LDE0IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNl
V2l0aFR5cGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgaWYgKGNhdXNlID09
IFJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3JDYXVzZTo6TmF0aXZlR2V0dGVyKQogICAgICAg
ICByZWplY3Rpb25WYWx1ZS0+c2V0TmF0aXZlR2V0dGVyVHlwZUVycm9yKCk7CiAKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpLCByZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgcmVqZWN0RnVuY3Rpb24pOworICAgIEFTU0VS
VChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdGlvblZh
bHVlKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZWplY3RGdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
cmVqZWN0RnVuY3Rpb24sIGNhbGxEYXRhLCBwcm9taXNlQ29uc3RydWN0b3IsIGFyZ3VtZW50cykp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJzZUFzSlNPTihKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIGRhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVNldExpa2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TZXRMaWtlLmNwcAppbmRleCA0NjM5MmQ2MWE2
Y2JjYTFiMDUxMDg0NjQ5Y2NiNGU4YWZiY2ZlMGQ5Li4xYTJiYzAxNDgwM2YzNzY4ZTkyOGI0ODk2
ZjY4ZTg3NTAxNjMwMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0
TGlrZS5jcHAKQEAgLTYwLDExICs2MCwxMCBAQCB2b2lkIGNsZWFyQmFja2luZ1NldChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBiYQogICAg
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IGJhY2tpbmdTZXQuZ2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jbGVhcik7CiAgICAgQVNTRVJUKCFmdW5jdGlvbi5pc1Vu
ZGVmaW5lZCgpKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxs
VHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7
Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNh
bGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAgICAgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmYmFja2luZ1NldCwgYXJndW1l
bnRzKTsKKyAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgJmJhY2tpbmdTZXQsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgYWRkVG9CYWNraW5nU2V0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3Qm
IGJhY2tpbmdTZXQsIEpTQzo6SlNWYWx1ZSBpdGVtKQpAQCAtNzMsMTIgKzcyLDExIEBAIHZvaWQg
YWRkVG9CYWNraW5nU2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNPYmplY3QmIGJhCiAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gYmFja2luZ1Nl
dC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CiAgICAg
QVNTRVJUKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgpKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0s
IGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5
cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6
Tm9uZSk7CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJn
dW1lbnRzLmFwcGVuZChpdGVtKTsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nU2V0LCBhcmd1bWVudHMpOwor
ICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAm
YmFja2luZ1NldCwgYXJndW1lbnRzKTsKIH0KIAogSlNDOjpKU1ZhbHVlIGZvcndhcmRBdHRyaWJ1
dGVHZXR0ZXJUb0JhY2tpbmdTZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpKU09iamVjdCYgYmFja2luZ1NldCwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBh
dHRyaWJ1dGVOYW1lKQpAQCAtOTEsMTQgKzg5LDEzIEBAIEpTQzo6SlNWYWx1ZSBmb3J3YXJkRnVu
Y3Rpb25DYWxsVG9CYWNraW5nU2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
CiAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gYmFja2luZ1NldC5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIGZ1bmN0aW9uTmFtZSk7CiAgICAgQVNTRVJUKCFmdW5jdGlvbi5pc1VuZGVmaW5l
ZCgpKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpO
b25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6
OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IGNhbGxGcmFtZS5hcmd1
bWVudENvdW50KCk7ICsrY3B0cikKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUu
dW5jaGVja2VkQXJndW1lbnQoY3B0cikpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJm
bG93ZWQoKSk7Ci0gICAgcmV0dXJuIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgJmJhY2tpbmdTZXQsIGFyZ3VtZW50cyk7CisgICAg
cmV0dXJuIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRh
LCAmYmFja2luZ1NldCwgYXJndW1lbnRzKTsKIH0KIAogSlNDOjpKU1ZhbHVlIGZvcndhcmRGb3JF
YWNoQ2FsbFRvQmFja2luZ1NldChKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBKU0M6OkpTT2JqZWN0JiBzZXRMaWtlKQpAQCAtMTA5LDE2
ICsxMDYsMTUgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ1NldChK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0MKICAgICBhdXRvKiBmdW5jdGlvbiA9
IGdsb2JhbE9iamVjdC5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5qc0RPTUJpbmRpbmdJbnRl
cm5hbHMoKS5tX2ZvckVhY2hXcmFwcGVyRnVuY3Rpb24uZ2V0KCk7CiAgICAgQVNTRVJUKGZ1bmN0
aW9uKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uLCBj
YWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwor
ICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGdsb2JhbE9iamVjdC52bSgpLCBm
dW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSk7CiAKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAg
ICBhcmd1bWVudHMuYXBwZW5kKCZyZXN1bHQuc2Vjb25kLmdldCgpKTsKICAgICBmb3IgKHNpemVf
dCBjcHRyID0gMDsgY3B0ciA8IGNhbGxGcmFtZS5hcmd1bWVudENvdW50KCk7ICsrY3B0cikKICAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUudW5jaGVja2VkQXJndW1lbnQoY3B0cikp
OwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgcmV0dXJuIEpT
Qzo6Y2FsbCgmZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmc2V0
TGlrZSwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gSlNDOjpjYWxsKCZnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsRGF0YSwgJnNldExpa2UsIGFyZ3VtZW50cyk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAppbmRleCAxYmFiYzliOGY0
YWQxZDc5ODk2NDE1YTFhNzU3ZjhjNDdjZWQ2MjRlLi5kY2E4NGE1YTNkYmM1YjAzOGIxNzNlYjNh
YTAwMmM1NGQ0MWUxYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJv
ckhhbmRsZXIuY3BwCkBAIC03NSwxMCArNzUsOCBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAog
ICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwotCi0gICAgaWYgKGNhbGxU
eXBlICE9IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRh
KHZtLCBqc0Z1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkgewogICAgICAgICBSZWY8SlNFcnJvckhhbmRsZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgICAgIEV2ZW50KiBzYXZlZEV2ZW50ID0gZ2xvYmFsT2JqZWN0LT5jdXJyZW50
RXZlbnQoKTsKQEAgLTk3LDEwICs5NSwxMCBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIFZNRW50cnlTY29wZSBl
bnRyeVNjb3BlKHZtLCB2bS5lbnRyeVNjb3BlID8gdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0
KCkgOiBnbG9iYWxPYmplY3QpOwogCi0gICAgICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVu
Y3Rpb25DYWxsKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwor
ICAgICAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4
Y2VwdGlvbjsKLSAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9m
aWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24p
OworICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2Fs
bChnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwg
Y2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncywgZXhjZXB0aW9uKTsKIAogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbigmc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCmluZGV4IDhjZGI4Zjc5Zjc1ZDNmZGU0NDlkMzk3NjUzMzFlMjY3YmRjMGVhY2IuLjQ0OGMz
YmIzMDQ0MmNlNDAzMGQzZThlZDgyNjU2NGNiNDBhZDg4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTM0LDExICsxMzQsMTAgQEAg
dm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlv
biA9IGpzRnVuY3Rpb247CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7
CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBoYW5kbGVFdmVudEZ1bmN0aW9u
KTsKIAogICAgIC8vIElmIGpzRnVuY3Rpb24gaXMgbm90IGFjdHVhbGx5IGEgZnVuY3Rpb24gYW5k
IHRoaXMgaXMgYW4gRXZlbnRMaXN0ZW5lciwgc2VlIGlmIGl0IGltcGxlbWVudHMgY2FsbGJhY2sg
aW50ZXJmYWNlLgotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGlm
IChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmICht
X2lzQXR0cmlidXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTAsOCArMTQ5LDggQEAg
dm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rp
b24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7
CisgICAgICAgIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24p
OworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgewog
ICAgICAgICAgICAgZXZlbnQudGFyZ2V0KCktPnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRs
ZXIoKTsKICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
cmVhdGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgIidoYW5kbGVFdmVudCcgcHJvcGVy
dHkgb2YgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNzMsMTEgKzE3MiwxMSBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
CiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRy
eVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CiAKLSAgICBKU0V4ZWNTdGF0
ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2FsbFR5
cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKCZzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGhhbmRsZUV2ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/IHRvSlMobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBldmVudC5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmV0
dmFsID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmV0dmFs
ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENhbGxGdW5jdGlvbigmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcAppbmRleCA5M2EyNjA1YTk1OTE3Y2YxNjg4
ZjU2MGE0NDc1OWVjNDY5MDNkMmEyLi5iZWNhNTYzZjU3OWIxNDZkNzMyMzhhZDg2ODFlYmUwZjI0
M2Y1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwCkBA
IC00Myw5ICs0Myw5IEBAIHZvaWQgSlNFeGVjU3RhdGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0CiAgICAgY29udGV4dC0+ZW5z
dXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpLnByb2Nlc3NRdWV1ZVNvb24oKTsKIH0KIAotSlND
OjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
SlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTQzo6SlNWYWx1ZSBmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERh
dGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3Qm
IGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7Ci0g
ICAgcmV0dXJuIEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9u
T2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNl
cHRpb24pOworICAgIHJldHVybiBKU0V4ZWNTdGF0ZTo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNl
cHRpb24pOwogfQogCiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZS5oCmluZGV4IDE2YjMzOTM5ZWQyYWVjYTc4ZDZjMzIyNDE3NmE5ODlmOGNjYzgzZDAu
LjFjYjI3OWMwNzAwN2FmZDAxYTU0YjcyNWRmMTVkNjhiOWRlZTM1NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaApAQCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUoKTsKICAgICB9
OwogICAgIAotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6
Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBj
YWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTRXhlY1N0YXRl
IGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIEpTQzo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJu
IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH07CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQpAQCAt
NjcsMTAgKzY3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxH
bG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwogICAgIH07CiAKLSAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIHByb2ZpbGVkQ2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTQzo6SlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxs
RGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlz
dCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKKyAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb2ZpbGVkQ2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTQzo6SlNW
YWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTRXhlY1N0
YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgZnVuY3Rpb25PYmpl
Y3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIHJldHVybiBKU0M6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCByZWFzb24sIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1
cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9maWxl
ZEV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCkBAIC0xMTgsOCArMTE4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudEZ1bmN0aW9uQ2Fs
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxs
RGF0YSYpOwotICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDb25zdHJ1Y3RUeXBlLCBjb25zdCBKU0M6OkNvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBKU0V4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0KQpAQCAtMTQ5LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHRocmVhZEdsb2JhbERh
dGEoKS5zZXRDdXJyZW50U3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBqc1R5cGUsIHR5cGVuYW1lIERhdGFUeXBlPiBz
dGF0aWMgdm9pZCBpbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVHlwZSwgY29uc3QgRGF0YVR5cGUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
LCBUeXBlIGpzVHlwZSwgdHlwZW5hbWUgRGF0YVR5cGU+IHN0YXRpYyB2b2lkIGluc3RydW1lbnRG
dW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEYXRhVHlwZSYp
OwogCiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9wcmV2aW91c1N0YXRlOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIG1fbG9jazsKQEAgLTE4Miw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIG1fY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiB9
OwogCi1KU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlw
ZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpT
Qzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2Vw
dGlvbik7CitKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlND
OjpDYWxsRGF0YSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0
YXRlSW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNT
dGF0ZUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDc2NzQ3Nzc1NzgzNWVhZWY4NGUwZjhiYTk5NWJm
MTk5YjFkMWM0NGUuLjNhNjIwMTBiYWE4ZjQxMzExYjI3OTQyMzYyMzMxMzY4MTIzMzhjNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0
cnVtZW50YXRpb24uaApAQCAtMzIsOCArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIFR5cGUganNUeXBlLCBjbGFzcyBEYXRhVHlwZT4KLWlu
bGluZSB2b2lkIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIGNhbGxUeXBlLCBjb25zdCBEYXRhVHlwZSYg
Y2FsbERhdGEpCitpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkK
IHsKICAgICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudFRyYWNr
aW5nKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CkBAIC00MSw3ICs0MCw3IEBAIGlubGluZSB2
b2lkIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250CiAgICAgU3RyaW5nIHJlc291cmNlTmFtZTsKICAgICBpbnQgbGluZU51
bWJlciA9IDE7CiAgICAgaW50IGNvbHVtbk51bWJlciA9IDE7Ci0gICAgaWYgKGNhbGxUeXBlID09
IGpzVHlwZSkgeworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpKUykg
ewogICAgICAgICByZXNvdXJjZU5hbWUgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PnNvdXJjZVVSTCgpOwogICAgICAgICBsaW5lTnVtYmVyID0gY2FsbERhdGEuanMuZnVuY3Rpb25F
eGVjdXRhYmxlLT5maXJzdExpbmUoKTsKICAgICAgICAgY29sdW1uTnVtYmVyID0gY2FsbERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5zdGFydENvbHVtbigpOwpAQCAtNTAsMTQgKzQ5LDQgQEAg
aW5saW5lIHZvaWQgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxDYWxsRnVuY3Rpb24oY29udGV4dCwgcmVzb3VyY2VOYW1lLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOwogfQogCi1pbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9u
Q2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBKU0M6OkNhbGxUeXBlIHR5cGUs
IGNvbnN0IEpTQzo6Q2FsbERhdGEmIGRhdGEpCi17Ci0gICAgaW5zdHJ1bWVudEZ1bmN0aW9uSW50
ZXJuYWw8SlNDOjpDYWxsVHlwZSwgSlNDOjpDYWxsVHlwZTo6SlMsIEpTQzo6Q2FsbERhdGE+KGNv
bnRleHQsIHR5cGUsIGRhdGEpOwotfQotCi1pbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1
bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpT
Qzo6Q29uc3RydWN0VHlwZSB0eXBlLCBjb25zdCBKU0M6OkNvbnN0cnVjdERhdGEmIGRhdGEpCi17
Ci0gICAgaW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWw8SlNDOjpDb25zdHJ1Y3RUeXBlLCBKU0M6
OkNvbnN0cnVjdFR5cGU6OkpTLCBKU0M6OkNvbnN0cnVjdERhdGE+KGNvbnRleHQsIHR5cGUsIGRh
dGEpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggMzdjNWUyM2Y0MGYwNDJkNDhm
YjI3ZjE2MTJkNmI1MzkwMGIzNjQ1OC4uZDljZTVkYjg4M2E0MTg4OTdiOTIzYjE0NjExN2ZiMzU2
Nzc4ZjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcApAQCAtNDMsMTQgKzQzLDEzIEBAIEpTQzo6SlNWYWx1ZSBKU05hdmlnYXRvcjo6
Z2V0VXNlck1lZGlhKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAg
ICAgYXV0byogZnVuY3Rpb24gPSBnbG9iYWxPYmplY3QoKS0+YnVpbHRpbkludGVybmFsRnVuY3Rp
b25zKCkuanNET01CaW5kaW5nSW50ZXJuYWxzKCkubV9nZXRVc2VyTWVkaWFTaGltRnVuY3Rpb24u
Z2V0KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEobGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpn
ZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAgICBBU1NF
UlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBmb3IgKHNpemVfdCBjcHRyID0g
MDsgY3B0ciA8IGNhbGxGcmFtZS5hcmd1bWVudENvdW50KCk7ICsrY3B0cikKICAgICAgICAgYXJn
dW1lbnRzLmFwcGVuZChjYWxsRnJhbWUudW5jaGVja2VkQXJndW1lbnQoY3B0cikpOwogICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNDOjpjYWxsKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVu
dHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxE
YXRhLCB0aGlzLCBhcmd1bWVudHMpOwogICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IGRkY2YyODVhNmU1OGI3MzI1MjE2YjNkOTcyOTAx
Njk0YmNjNTkzMmIuLjA2NDgzNzgxNjkwMzU2ZDI3NDU5ZTM2N2ZhNWJhYmE3NmUzMGVlOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmNwcApAQCAtMTUzLDM0ICsxNTMsMzUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFBsdWdpbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amUKICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChjYWxsRnJhbWUtPmFyZ3VtZW50KGkpKTsK
ICAgICBBU1NFUlQoIWFyZ3VtZW50TGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpLCBzY3JpcHRPYmplY3QsIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxs
RGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLCBzY3JpcHRPYmplY3QpOworICAgIEFTU0VS
VChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOYXRpdmUpOwogCiAgICAgLy8gQ2Fs
bCB0aGUgb2JqZWN0LgotICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY3JpcHRPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NyaXB0T2JqZWN0LCBjYWxsRGF0YSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSwgYXJndW1lbnRMaXN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLUNhbGxUeXBlIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50
KiBlbGVtZW50LCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBwbHVnaW5FbGVtZW50Q3Vz
dG9tR2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCkKIHsKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKwogICAgIC8vIEZpcnN0LCBhc2sgdGhlIHBsdWctaW4gdmlldyBiYXNlIGZvciBp
dHMgcnVudGltZSBvYmplY3QuCiAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVn
aW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoZWxlbWVudCkpIHsKLSAgICAgICAgQ2Fs
bERhdGEgc2NyaXB0T2JqZWN0Q2FsbERhdGE7Ci0gICAgICAgIAogICAgICAgICBWTSYgdm0gPSBz
Y3JpcHRPYmplY3QtPnZtKCk7Ci0gICAgICAgIGlmIChzY3JpcHRPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0Q2FsbERhdGEoc2NyaXB0T2JqZWN0LCBzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0g
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0KLSAg
ICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFBsdWdpbjsKLSAgICAgICAgcmV0
dXJuIENhbGxUeXBlOjpIb3N0OworICAgICAgICBhdXRvIHNjcmlwdE9iamVjdENhbGxEYXRhID0g
Z2V0Q2FsbERhdGEodm0sIHNjcmlwdE9iamVjdCk7CisgICAgICAgIGlmIChzY3JpcHRPYmplY3RD
YWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBjYWxs
RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICAgICAgICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT53cmFw
cGVkKCkpOworICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tl
RGVmYXVsdE1ldGhvZCgpKSB7CisgICAgICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6
OlR5cGU6Ok5hdGl2ZTsKKyAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNh
bGxQbHVnaW47CisgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgSW5zdGFuY2UqIGluc3RhbmNl
ID0gcGx1Z2luSW5zdGFuY2UoZWxlbWVudC0+d3JhcHBlZCgpKTsKLSAgICBpZiAoIWluc3RhbmNl
IHx8ICFpbnN0YW5jZS0+c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkpCi0gICAgICAgIHJl
dHVybiBDYWxsVHlwZTo6Tm9uZTsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
UGx1Z2luOwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKworICAgIHJldHVybiBjYWxsRGF0
YTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAppbmRleCA4ZDViMjhkYzMx
NWM0ZGE5MGI5NjRkNDMyYTQxNWNiYWI0MmI2MWM0Li44ZDg1MDVlMmIyNjQ0N2UwYmY0MDQ0N2I0
NDk3NGUyODZhNzU4ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaApAQCAtMzksNiArMzksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3QoSlNIVE1MRWxlbWVudCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQo
SlNIVE1MRWxlbWVudCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7Ci0g
ICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEoSlNIVE1MRWxl
bWVudCosIEpTQzo6Q2FsbERhdGEmKTsKKyAgICBKU0M6OkNhbGxEYXRhIHBsdWdpbkVsZW1lbnRD
dXN0b21HZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRl
eCBlNGMyNTA0ZGNlN2ViZTdiODI2YzVkNmYzYTAxZTYzOGQwMzVjM2I3Li41N2VlYjU3MjU1ZDEw
ZTNiZTEyZDljMmMzMDJhZDA5NWZmOGRlZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC00NSwxNSArNDUsMTQgQEAgUmVmPFJlYWRhYmxl
U3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmoKIAogICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gSlNDOjphc09iamVjdChnbG9i
YWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1l
cygpLlJlYWRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSkpOwogCi0gICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGNvbnN0cnVj
dG9yLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0
cnVjdERhdGEpOwotICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5v
bmUpOworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0
cnVjdG9yKTsKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBl
OjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBl
bmQoc291cmNlID8gdG9KU05ld2x5Q3JlYXRlZCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2Jh
bE9iamVjdCwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsK
ICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIGF1dG8gbmV3UmVhZGFi
bGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVTdHJlYW0qPih2bSwgSlNDOjpjb25z
dHJ1Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhLCBhcmdzKSk7CisgICAgYXV0byBuZXdSZWFkYWJsZVN0cmVhbSA9IGpzRHlu
YW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHZtLCBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3Qs
ICpuZXdSZWFkYWJsZVN0cmVhbSk7CkBAIC02NCwxMCArNjMsOSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdAogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNDOjpDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwganNGdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpO
b25lKTsKLSAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpOworICAgIGF1
dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9uKTsKKyAgICBBU1NF
UlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxEYXRh
LCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTIwLDE1ICsxMTgsMTQgQEAgdm9pZCBSZWFkYWJs
ZVN0cmVhbTo6bG9jaygpCiAKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IEpTQzo6YXNPYmplY3Qo
bV9nbG9iYWxPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY2xpZW50RGF0YS5idWls
dGluTmFtZXMoKS5SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJQcml2YXRlTmFtZSgpKSk7CiAK
LSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlID0gY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0
YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUg
IT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29u
c3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3IpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5
cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKICAgICBhcmdzLmFwcGVuZChyZWFkYWJsZVN0cmVhbSgpKTsKICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncyk7
CisgICAgSlNDOjpjb25zdHJ1Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCmluZGV4IDAxZDUxNTE0YjRmM2Y4NmNlMjZkODNi
NTQyYzFmZGY3OWUzMzgzNzAuLmQ5OWJlODlmZTU1OGM3YTRhYzVmN2Y0MjMyMWFiZWQ1NGYxY2Y2
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCkBAIC00Myw5ICs0Myw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgcmVhZGFibGVTdHJl
YW1DYWxsRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpT
Qzo6QXJnTGlzdCYgYXJndW1lbnRzKQogewotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgcmV0dXJuIGNhbGwoJmxleGljYWxHbG9i
YWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwganNGdW5jdGlvbik7CisgICAgcmV0dXJuIGNhbGwoJmxleGljYWxHbG9i
YWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiB9
CiAKIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZva2Uo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCYg
b2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCA4ZTRjN2IzODEyNDRlNzc2YmRkNTgzNGFlNDE5MzZkN2RjYzYyMjhmLi41NjdhMDBlYzg0Yjdl
YWI1OGQxZjZlOWNmNzIyOWI1MDBiMjQyM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTk1LDkgKzk1LDggQEAgdm9pZCBTY2hlZHVs
ZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1YKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgbV9mdW5jdGlvbi5nZXQoKSwgY2Fs
bERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIG1fZnVuY3Rpb24uZ2V0KCkpOworICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKICAg
ICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKQEAg
LTExMiwxMCArMTExLDEwIEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25J
bkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmY29u
dGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1
bmN0aW9uKCZjb250ZXh0LCBjYWxsRGF0YSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwotICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBtX2Z1bmN0aW9uLmdldCgpLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzLCBleGNlcHRpb24pOworICAg
IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9m
aWxpbmdSZWFzb246Ok90aGVyLCBtX2Z1bmN0aW9uLmdldCgpLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENhbGxGdW5jdGlvbigmY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggM2E0ODAyMjhkMjRiYWU5ZDllODA5YTY1
Y2YyZjhhOTQxYjliZWIyNi4uMTE3ODlhOTY5ZmNmNWRiYzgwOTQ2ODVmMTU3ZTMzOWRjYzg0MWI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTY2NSwxNSArNjY1LDE0IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTU2MgotICAgICAgICAvLyBHZXR0aW5nIENhbGxEYXRhL0NhbGxUeXBlIHNob3Vs
ZG4ndCBiZSByZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCi0gICAgICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHdvcmxkLnZtKCks
IGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkgeworICAgICAgICAvLyBHZXR0aW5nIENhbGxEYXRhIHNob3VsZG4ndCBiZSBy
ZXF1aXJlZCB0byBjYWxsIGludG8gSlMuCisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxs
RGF0YSh3b3JsZC52bSgpLCBmdW5jdGlvbk9iamVjdCk7CisgICAgICAgIGlmIChjYWxsRGF0YS50
eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBvcHRpb25hbERldGFp
bHMgPSB7IHsgIlVuYWJsZSB0byBwcmVwYXJlIEphdmFTY3JpcHQgYXN5bmMgZnVuY3Rpb24gdG8g
YmUgY2FsbGVkIl9zIH0gfTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKCZnbG9iYWxPYmplY3Qs
IEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRpb25FeGNlcHRpb24pOwor
ICAgICAgICByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoJmdsb2JhbE9i
amVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbk9iamVjdCwgY2FsbERh
dGEsICZwcm94eSwgbWFya2VkQXJndW1lbnRzLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICB9
IHdoaWxlIChmYWxzZSk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1
YXRlU2NyaXB0KG1fZnJhbWUpOwpAQCAtNzMyLDkgKzczMSw4IEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGFzT2JqZWN0KHRoZW5GdW5jdGlvbiktPm1ldGhvZFRh
YmxlKHdvcmxkLnZtKCkpLT5nZXRDYWxsRGF0YShhc09iamVjdCh0aGVuRnVuY3Rpb24pLCBjYWxs
RGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKHdvcmxkLnZtKCksIHRoZW5GdW5jdGlvbik7CisgICAgaWYg
KGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgcmVzb2x2
ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
NzIsNyArNzcwLDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3Vz
VXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQKICAgICBhcmd1bWVudHMuYXBw
ZW5kKGZ1bGZpbGxIYW5kbGVyKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEhhbmRsZXIp
OwogCi0gICAgY2FsbCgmZ2xvYmFsT2JqZWN0LCB0aGVuRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgcmVzdWx0LnZhbHVlKCksIGFyZ3VtZW50cyk7CisgICAgY2FsbCgmZ2xvYmFsT2JqZWN0
LCB0aGVuRnVuY3Rpb24sIGNhbGxEYXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRzKTsKIH0K
IAogRXhwZWN0ZWQ8dm9pZCwgRXhjZXB0aW9uRGV0YWlscz4gU2NyaXB0Q29udHJvbGxlcjo6c2hv
dWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzcxZDc4ZWY4Yjc2YWNlYTE5NjhmNjI0MjViNjY2MTkzNjQ0N2Q4Yy4uNjU0ZTc4M2Y2YWRh
MWYzYzIyMGE1ODhlYWQ5MzI1Y2E1NDYzMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3MDQsNyArMjcwNCw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0dl
dENhbGxEYXRhKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNh
bGxEYXRhJik7XG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBKU0M6OkNhbGxEYXRhIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKik7XG5cbiIpOwogICAgICAg
ICAkaGVhZGVySW5jbHVkZXN7IjxKYXZhU2NyaXB0Q29yZS9DYWxsRGF0YS5oPiJ9ID0gMTsKICAg
ICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhIn0gPSAxOwog
ICAgIH0KQEAgLTU2MTksMTIgKzU2MTksMTIgQEAgc3ViIEdlbmVyYXRlUGx1Z2luQ2FsbAogCiAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CiAKLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiQ2FsbERhdGEgJHtjbGFzc05hbWV9OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwp
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxs
KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG5cbiIpOwogCi0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEodGhpc09iamVj
dCwgY2FsbERhdGEpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEodGhpc09iamVjdCk7XG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwog
fQpAQCAtNTY1NCwxMCArNTY1NCwxMiBAQCBzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0
aW9ucwogICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbGVnYWN5Q2FsbGVyc1swXSk7CiAgICAgfQogCi0g
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiQ2FsbFR5cGUgJHtjbGFzc05hbWV9OjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJDYWxsRGF0YSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCopXG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgQ2FsbERhdGEgY2FsbERhdGE7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
Y2FsbERhdGEudHlwZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7XG4iKTsKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbCR7Y2xhc3NO
YW1lfTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGNhbGxEYXRh
O1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiXG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNDUwYjgzNWQzZmY0MDBmZWZlZGY2YmRk
OWRiYTUzMTBmNmEwMTQ4MC4uMTJiODYzMjM2NjM0NjljOTY0ZjU1OTU5NzEzMWQ2Yjg0MTQyMDU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKQEAgLTI2MDksMTAgKzI2MDksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSlNUZXN0T2JqKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LAogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOwogfQogCi1DYWxsVHlwZSBKU1Rlc3RPYmo6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTVGVzdE9iajo6Z2V0Q2FsbERhdGEoSlND
ZWxsKikKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBjYWxsRGF0YS50eXBlID0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
SlNUZXN0T2JqOwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY2FsbERh
dGE7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogSURMQXR0cmlidXRlPEpTVGVz
dE9iaj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBhNjRkNGZiN2E0NWE1N2UzN2MxZjMyNmZlNzg2
MmEzZDdmMTY0M2VlLi5iZTY5ZjZjYjU0YmRkMzY1NmMwMTRkZjY2MTkwNTkwM2ZmMDM0ZjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6
OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0
YSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCopOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmluZGV4IDc0
MzI0NjA5OWFhMWI4NzJlYmY0NjMxYTBmZGUzYjhhMzRkZGI0MjMuLjA5ODAwMDFkODM2YmE2ZDRi
OTliNTFmM2U5NDdhYmNhN2Y0M2ZjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2Uu
Y3BwCkBAIC0xOTYsMTIgKzE5NiwxMiBAQCBib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYgogICAgIHJl
dHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotQ2FsbFR5cGUgSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxE
YXRhIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2Vs
bCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0LCBj
YWxsRGF0YSk7CisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlz
T2JqZWN0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCmlu
ZGV4IGY5NDdiYTg5YWJkOTgxMTM0M2I0ZDczYjU2OWU3NTViNjI2MTJlNmMuLmVjZWU0YTliZWIz
ZDZmNjY4ODVhNzQ0YzBjZjNiYTM3YTY2MzFkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3Rh
dGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRh
Jik7CisgICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqKTsK
IAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggYTQxN2Y1YzM4YmRhNzk0ZjE2ZWZkYTQyNjI1ZjIz
MGE0MDAxOWE2OC4uMzNjZDRjMDM5YzVlMzIxZTZiOTFlZmZiMTgxYjk0NmYzZmE1NjM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0xODgsMTUgKzE4OCwxNCBAQCBi
b29sIF9OUE5fSW52b2tlRGVmYXVsdChOUFAsIE5QT2JqZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQq
IGFyZ3MsIHVpbnQzMl90IGFyZ0NvdQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGUgZnVu
Y3Rpb24gb2JqZWN0LgogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXA7Ci0gICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwg
ZnVuY3Rpb24pOworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3Mo
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3Qp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAg
ICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVuY3Rpb24sIGFyZ0xpc3QpOworICAgICAgICBK
U1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxEYXRhLCBmdW5jdGlvbiwgYXJnTGlzdCk7CiAKICAgICAgICAgLy8gQ29udmVydCBhbmQg
cmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZlcnRW
YWx1ZVRvTlBWYXJpYW50KGxleGljYWxHbG9iYWxPYmplY3QsIHJlc3VsdFYsIHJlc3VsdCk7CkBA
IC0yNDAsMTYgKzIzOSwxNSBAQCBib29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2JqZWN0KiBv
LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KgogCiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwogICAgICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXAtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmco
KSkpOwotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2Fs
bERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8g
Q2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRBcmdzKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1
bHRWID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0g
SlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgb2JqLT5p
bXAsIGFyZ0xpc3QpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0
IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCByZXN1bHRWLCByZXN1bHQpOwpAQCAtNTMxLDE1ICs1MjksMTQg
QEAgYm9vbCBfTlBOX0NvbnN0cnVjdChOUFAsIE5QT2JqZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQq
IGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LAogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGUg
Y29uc3RydWN0b3Igb2JqZWN0LgogICAgICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gb2JqLT5p
bXA7Ci0gICAgICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICAgICAgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3Is
IGNvbnN0cnVjdERhdGEpOwotICAgICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RU
eXBlOjpOb25lKQorICAgICAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRh
KHZtLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJv
bVZhcmlhbnRBcmdzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3MsIGFyZ0NvdW50LCByb290T2Jq
ZWN0LCBhcmdMaXN0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZs
b3dlZCgpKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEs
IGFyZ0xpc3QpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNvbnN0cnVjdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICAgICAg
ICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0Viwg
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQppbmRleCBlOTA2MjIxY2E5OGMzZGFmYzczMzMwZTU4MmE0ZDFmNjZkYmY4OGI4Li5mOWNlZGMx
MDA3NzI3NjhlNTQyMjg4ZGQ4OTE5NjgwOGNlODU4YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC01OCw3ICs1OCw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M6OkJpbmRpbmdzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHVzaW5n
IEpTQzo6Q2FsbERhdGE7Ci11c2luZyBKU0M6OkNhbGxUeXBlOwogdXNpbmcgSlNDOjpJZGVudGlm
aWVyOwogdXNpbmcgSlNDOjpKU0xvY2tIb2xkZXI7CiB1c2luZyBKU0M6OkpTT2JqZWN0OwpAQCAt
MzQ3LDkgKzM0Niw4IEBAIC0gKGlkKWNhbGxXZWJTY3JpcHRNZXRob2Q6KE5TU3RyaW5nICopbmFt
ZSB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJncwogICAgIFVOVVNFRF9QQVJBTShzY29wZSk7
CiAKICAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZyhuYW1lKSkpOwot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOwor
ICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKQEAgLTM2MCw3
ICszNTgsNyBAQCAtIChpZCljYWxsV2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0
aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3MKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQ
cm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBbc2Vs
ZiBfaW1wXSwgYXJnTGlzdCwgZXhjZXB0aW9uKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
SlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2Zp
bGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgW3NlbGYgX2ltcF0sIGFyZ0xp
c3QsIGV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIGFkZEV4Y2Vw
dGlvblRvQ29uc29sZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCAwNjlhYmUyZTU1ODhhYzU3NDA3
ZWJkMDdhMmM2ZjVkNmQ0NTRmN2I4Li5lM2FlMjI2YzdmZjczZmI3ZWMxYzU2NTIwZWY3OGYxNmNj
ZDBmMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAt
MTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDZWxsKik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQppbmRleCA2ZTg3N2QyZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmLi5lNjU3YzAx
YzQyYzEwMTZiMWI2Mjg4OGY4ZDhkNjgyNDJkYmI0YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yODAsMTQgKzI4MCwxOCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAot
Q2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOworCiAgICAg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlzT2JqZWN0ID0ganNDYXN0PE9iamNGYWxsYmFja09i
amVjdEltcCo+KGNlbGwpOwogICAgIGlkIHRhcmdldE9iamVjdCA9IHRoaXNPYmplY3QtPl9pbnN0
YW5jZS0+Z2V0T2JqZWN0KCk7Ci0gICAgaWYgKCFbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJn
dW1lbnRzOildKQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbE9iakNGYWxsYmFja09iamVjdDsKLSAgICByZXR1cm4gQ2Fs
bFR5cGU6Okhvc3Q7CisgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6
KV0pIHsKKyAgICAgICAgY2FsbERhdGEudHlwZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7Cisg
ICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxPYmpDRmFsbGJhY2tPYmplY3Q7
CisgICAgfQorCisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiBib29sIE9iamNGYWxsYmFja09i
amVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAppbmRleCA5ZDVkNjBkZWYzNTc1NGJlMWUwZTA2MjBlNDFlZGI5OGVmZTM5ZWU1
Li44MDUxZTZlYzNjNmMxMjhkMmNlZjA1YTc0NjMwMWY4YzBkYjRjZmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIzMywxOCArMjMzLDE3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1DYWxsVHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENh
bGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIFJ1bnRpbWVPYmplY3Q6OmdldENhbGxEYXRhKEpT
Q2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKwogICAgIFJ1bnRpbWVPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwotICAgIGlmICgh
dGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpOb25lOwot
ICAgIAotICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0LT5tX2luc3Rh
bmNlOwotICAgIGlmICghaW5zdGFuY2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpKQot
ICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbFJ1bnRpbWVPYmplY3Q7Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0
OworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luc3RhbmNlICYmIHRoaXNPYmplY3QtPm1faW5zdGFu
Y2UtPnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpKSB7CisgICAgICAgIGNhbGxEYXRhLnR5
cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOworICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjYWxsUnVudGltZU9iamVjdDsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbERhdGE7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCkBAIC0yNjEsMTggKzI2MCwxNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsUnVudGltZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0LmlzT2JqZWN0KCkgPyBqc0Nhc3Q8SlNPYmplY3Qq
PihyZXN1bHQuYXNDZWxsKCkpIDogY29uc3RydWN0b3IpOwogfQogCi1Db25zdHJ1Y3RUeXBlIFJ1
bnRpbWVPYmplY3Q6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3REYXRh
JiBjb25zdHJ1Y3REYXRhKQorQ2FsbERhdGEgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY29uc3RydWN0RGF0YTsKKwogICAgIFJ1
bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwot
ICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNP
YmplY3QtPm1faW5zdGFuY2U7Ci0gICAgaWYgKCFpbnN0YW5jZS0+c3VwcG9ydHNDb25zdHJ1Y3Qo
KSkKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUnVudGltZUNvbnN0cnVjdG9yOwotICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luc3RhbmNl
ICYmIHRoaXNPYmplY3QtPm1faW5zdGFuY2UtPnN1cHBvcnRzQ29uc3RydWN0KCkpIHsKKyAgICAg
ICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICAgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUnVudGltZUNvbnN0cnVjdG9yOwor
ICAgIH0KKworICAgIHJldHVybiBjb25zdHJ1Y3REYXRhOwogfQogCiB2b2lkIFJ1bnRpbWVPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4
IDNjMTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAuLjA0MGEzYTBkNGMwNzI4
YmI5NTRjZmM5NzQ3ODU5MWY4NGVhM2I1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsRGF0YSBn
ZXRDYWxsRGF0YShKU0NlbGwqKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYjdlMmYz
YWJmYzM3NWE3ZTYwNDY3OGZmZjU2YzY4ZWY4ZjkxYjQwZi4uNjliNGJmMWIyN2JhNmRmZDdhNjc0
NTYyOTUzYTg3MjE4NWM2ZDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC00MzYyLDE0ICs0MzYyLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAgICAgICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgICAgIGF1dG8gY2FsbFR5cGUgPSBtZXRob2RPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q2FsbERhdGEobWV0aG9kT2JqZWN0LCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9
PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgbWV0aG9kT2JqZWN0KTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0g
SlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIG5vQXJndW1lbnRzOwogICAgICAgICBB
U1NFUlQoIW5vQXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIEpTQzo6Y2FsbCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgbWV0aG9kT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGNv
bnRyb2xsZXJPYmplY3QsIG5vQXJndW1lbnRzKTsKKyAgICAgICAgSlNDOjpjYWxsKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBtZXRob2RPYmplY3QsIGNhbGxEYXRhLCBjb250cm9sbGVyT2JqZWN0LCBu
b0FyZ3VtZW50cyk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICAgICAg
bV9oYXZlU2V0VXBDYXB0aW9uQ29udGFpbmVyID0gdHJ1ZTsKQEAgLTcyNDMsMTIgKzcyNDIsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRv
d1Jvb3QmIHJvb3QpCiAKICAgICAgICAgYXV0byogZnVuY3Rpb24gPSBmdW5jdGlvblZhbHVlLnRv
T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKLSAgICAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgYXV0byBj
YWxsVHlwZSA9IGZ1bmN0aW9uLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0aW9u
LCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25l
KQorICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24p
OworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25l
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gY29udHJvbGxlclZh
bHVlID0gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICAgICAgYXV0byBjb250cm9s
bGVyVmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgJmdsb2JhbE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CiAgICAgICAgIGF1dG8qIGNvbnRyb2xsZXJPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nh
c3Q8SlNDOjpKU09iamVjdCo+KHZtLCBjb250cm9sbGVyVmFsdWUpOwogICAgICAgICBpZiAoIWNv
bnRyb2xsZXJPYmplY3QpCkBAIC03MzIxLDE0ICs3MzE5LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlTWVkaWFDb250cm9sc0FmdGVyUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpCiAK
ICAgICAgICAgYXV0byogZnVuY3Rpb24gPSBmdW5jdGlvblZhbHVlLnRvT2JqZWN0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAg
ICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgYXV0byBjYWxsVHlwZSA9IGZ1bmN0
aW9uLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0g
ICAgICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgICAgICBhdXRv
IGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgICAgICBpZiAo
Y2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlz
dDsKICAgICAgICAgQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIEpT
Qzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgY29udHJvbGxlck9iamVjdCwgYXJnTGlzdCk7CisgICAgICAgIEpTQzo6Y2FsbCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBjb250cm9sbGVyT2JqZWN0LCBhcmdM
aXN0KTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKQEAgLTczNjUsMTQgKzczNjIs
MTMgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmdldEN1cnJlbnRNZWRpYUNvbnRyb2xzU3Rh
dHVzKCkKIAogICAgICAgICBhdXRvKiBmdW5jdGlvbiA9IGZ1bmN0aW9uVmFsdWUudG9PYmplY3Qo
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwotICAgICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBhdXRvIGNhbGxUeXBl
ID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uKTsKICAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAg
ICBBU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgaWYgKGNhbGxUeXBl
ID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpT
Qzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgYXV0byBvdXRwdXRWYWx1ZSA9IEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY29udHJvbGxlck9iamVjdCwgYXJnTGlzdCk7
CisgICAgICAgIGF1dG8gb3V0cHV0VmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgY29udHJvbGxlck9iamVjdCwgYXJnTGlzdCk7CiAKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA2MGNiNGZlZjM0Mjk0
MTZiZTlkODNiMTBjNDE2MTk2MjBhZGMxOWJlLi43ZjAzNTRmNWM4MzlmNDVjNWEyYTZjYzZkNTc1
MWQ0ZGNkN2JiNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKQEAgLTQxMiwxMiArNDEyLDExIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiByb290KQogICAgICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEpT
Qzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEob3ZlcmxheSwgY2FsbERhdGEpOwotICAgIGlmIChjYWxs
VHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6Omdl
dENhbGxEYXRhKHZtLCBvdmVybGF5KTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNh
bGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWxsKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBvdmVybGF5LCBjYWxsVHlwZSwgY2FsbERhdGEsICZnbG9iYWxPYmplY3Qs
IGFyZ0xpc3QpOworICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIG92ZXJsYXksIGNhbGxE
YXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWQxOTE3MzEyYzg0
OWVmNWE1ZmVmZTE5MWQzMDVlMDQ0Mjg3NGI1Ny4uMDFmY2ZkNWVkMDJkMzI4MjYzZThmNzYyZjc2
Y2FiYWI1NmYyYjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzMx
LDcgKzMzMSw2IEBACiAjZW5kaWYKIAogdXNpbmcgSlNDOjpDYWxsRGF0YTsKLXVzaW5nIEpTQzo6
Q2FsbFR5cGU7CiB1c2luZyBKU0M6OkNvZGVCbG9jazsKIHVzaW5nIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOwogdXNpbmcgSlNDOjpJZGVudGlmaWVyOwpAQCAtNDY1MCwxNiArNDY0OSwxNSBAQCBK
U1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKUwogICAgIEFTU0VSVCh2YWx1ZS5pc0Z1bmN0aW9uKHZtKSk7
CiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmplY3QoKTsKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
dm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2Fs
bFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBm
dW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoYnVmZmVyKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNyY0J5dGVPZmZzZXQp
OwogICAgIGFyZ3VtZW50cy5hcHBlbmQoc3JjTGVuZ3RoKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgcmV0dXJuIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgp
LCBhcmd1bWVudHMpOworICAgIHJldHVybiBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMDVkMTI5MjkzOTU4MmYwNGM0MzJkMzBjMTQy
ZGJhNWRhYTBiZjExNS4uZTNkZTkxYTdkNTE4MzEzYjZiNjUzM2JmMDFiMGU3MzgyYjYyMGU1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAKQEAgLTI0NywxNSArMjQ3LDE2IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOUEpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVjdCo+KG9i
amVjdCktPmNhbGxPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAotSlNDOjpD
YWxsVHlwZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpD
YWxsRGF0YSYgY2FsbERhdGEpCitDYWxsRGF0YSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNOUE9iamVjdCogdGhp
c09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0
LT5tX25wT2JqZWN0IHx8ICF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZURl
ZmF1bHQpCi0gICAgICAgIHJldHVybiBDYWxsVHlwZTo6Tm9uZTsKLQotICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxOUEpTT2JqZWN0OwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9z
dDsKKyAgICBpZiAodGhpc09iamVjdC0+bV9ucE9iamVjdCAmJiB0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpIHsKKyAgICAgICAgY2FsbERhdGEudHlwZSA9IENh
bGxEYXRhOjpUeXBlOjpOYXRpdmU7CisgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNhbGxOUEpTT2JqZWN0OworICAgIH0KKyAgICByZXR1cm4gY2FsbERhdGE7CiB9CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTI2
NiwxNSArMjY3LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdpdGhDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Nhc3Q8SlNOUE9iamVjdCo+KGNvbnN0cnVjdG9yKS0+Y2FsbENvbnN0cnVj
dG9yKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKLUNvbnN0cnVjdFR5cGUgSlNOUE9i
amVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCitDYWxsRGF0YSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCog
Y2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworCiAgICAgSlNOUE9iamVjdCog
dGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKCF0aGlzT2Jq
ZWN0LT5tX25wT2JqZWN0IHx8ICF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmNvbnN0
cnVjdCkKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgaWYgKHRoaXNP
YmplY3QtPm1fbnBPYmplY3QgJiYgdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5jb25z
dHJ1Y3QpIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5h
dGl2ZTsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RX
aXRoQ29uc3RydWN0b3I7CisgICAgfQogCi0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RXaXRoQ29uc3RydWN0b3I7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6
Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIGJvb2wgSlNOUE9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmgKaW5kZXggZmE5ODQzMjVjMmMxMjIwNTdkODJmMzA5YTlhNjQzMWY5
NWMzYTQyNC4uNGNjOGYyNzdmZmQ4NTM5MDMxZjE1ODJjZGJkMTNiOTAxYjgxYmIxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaApAQCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNh
bGxEYXRhJik7Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIEpTQzo6Q2Fs
bERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0
YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXgg
YTdmYjZiNWU5MmQ2NjE1ZmFkYTE4NjQyNzE2ZjExMmVlZGIzYjk5OS4uOGY2ZjdiMDIzMTZiMTA5
MjlmNDQzYzlkNDU2OTliYmE3YjVhOTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTEwOSw4ICsx
MDksNyBAQCBib29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFt
ZSkKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9qc09iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyUmVwKSk7ICAgIAogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodm0sIHZhbHVlLCBjYWxsRGF0
YSkgIT0gQ2FsbFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIHZhbHVlLmlzRnVuY3Rpb24odm0pOwog
fQogCiBib29sIE5QSlNPYmplY3Q6Omludm9rZShOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29u
c3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFu
dCogcmVzdWx0KQpAQCAtMjc3LDkgKzI3Niw4IEBAIGJvb2wgTlBKU09iamVjdDo6Y29uc3RydWN0
KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOCiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKIAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25z
dHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBtX2pzT2JqZWN0
LmdldCgpLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lKQorICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEo
dm0sIG1fanNPYmplY3QuZ2V0KCkpOworICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENvbnZl
cnQgdGhlIHBhc3NlZCBpbiBhcmd1bWVudHMuCkBAIC0yODgsNyArMjg2LDcgQEAgYm9vbCBOUEpT
T2JqZWN0Ojpjb25zdHJ1Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFy
Z3VtZW50Q291bnQsIE4KICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+
Y29udmVydE5QVmFyaWFudFRvSlNWYWx1ZShtX29iamVjdE1hcC0+Z2xvYmFsT2JqZWN0KCksIGFy
Z3VtZW50c1tpXSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmd1bWVudExpc3QuaGFzT3ZlcmZs
b3dlZCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
LCBhcmd1bWVudExpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVu
dExpc3QpOwogICAgIAogICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgbmV3IG9iamVjdC4K
ICAgICBtX29iamVjdE1hcC0+Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSwgKnJlc3VsdCk7CkBAIC0zMDIsOSArMzAwLDggQEAgYm9vbCBOUEpTT2Jq
ZWN0OjppbnZva2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUg
ZnVuY3Rpb24sIGMKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9u
LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1
dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIGlmIChjYWxsRGF0
YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDb252ZXJ0IHRoZSBwYXNzZWQgaW4gYXJndW1lbnRzLgpAQCAtMzEzLDcgKzMxMCw3
IEBAIGJvb2wgTlBKU09iamVjdDo6aW52b2tlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGZ1bmN0aW9uLCBjCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQo
bV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnRzW2ldKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3VtZW50TGlzdC5oYXNP
dmVyZmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2pzT2JqZWN0LmdldCgp
LCBhcmd1bWVudExpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBtX2pzT2JqZWN0LmdldCgpLCBhcmd1bWVu
dExpc3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCmluZGV4IGE2MTQ1ZTAyZDNkNjM1ZjNhZDQxNDI5ZDU3MzlkMDMzOWRjNDI0NjQu
LmQzYmQxZWMyZWJiMGQ0OGUwM2NjMjQ0YTU2YWE3ODAwZmYzNzI3MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTkyMCwxNiArOTIwLDE1IEBAIGJvb2wg
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UodWludDMyX3Qgb2JqZWN0SUQsIGNv
bnN0IElkZW50aWZpZXImIG1lCiAKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCA9IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7CiAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IG9iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIG1ldGhv
ZE5hbWUpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24pOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0
OwogICAgIGRlbWFyc2hhbFZhbHVlcyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudHNEYXRh
LCBhcmd1bWVudHNMZW5ndGgsIGFyZ0xpc3QpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdMaXN0
Lmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3Qp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9u
LCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0KTsKICAgICAgICAgCiAgICAgbWFyc2hhbFZhbHVl
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwog
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CkBAIC05NTYsMTYgKzk1NSwxNSBAQCBib29sIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCh1aW50MzJfdCBvYmplY3RJ
RCwgZGF0YV90IGFyZ3VtZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNj
cmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBvYmplY3QpOworICAg
IGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGRlbWFy
c2hhbFZhbHVlcyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudHNEYXRhLCBhcmd1bWVudHNM
ZW5ndGgsIGFyZ0xpc3QpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93
ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBv
YmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QsIGNhbGxEYXRhLCBvYmpl
Y3QsIGFyZ0xpc3QpOwogICAgIAogICAgIG1hcnNoYWxWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsKICAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwpAQCAtOTkzLDE2ICs5OTEsMTUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OmNvbnN0cnVjdCh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90IGFyZ3VtZW50c0QKIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgp
Lmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKTsKIAotICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShvYmplY3QsIGNvbnN0cnVjdERhdGEpOwotICAg
IGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgYXV0byBjb25z
dHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgb2JqZWN0KTsKKyAgICBpZiAoY29uc3Ry
dWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGRlbWFyc2hhbFZh
bHVlcyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudHNEYXRhLCBhcmd1bWVudHNMZW5ndGgs
IGFyZ0xpc3QpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7
CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgb2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0
LCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KTsKICAgICAKICAgICBtYXJzaGFsVmFsdWUobGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblBhY2thZ2UuY3BwCmluZGV4IDAyMDU4ODkyZDIxMThiMjQ1ODZhOGM4MWZkYmM1
YmU2MjJkMThhZDkuLjhjMjFiMDZmOTQ0NzhlM2RjMjA5ZmZiYzliOTE4MWJmNjY5ODIyMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNw
cApAQCAtMjU0LDE1ICsyNTQsMTQgQEAgc3RhdGljIGJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBO
UE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmEKIAogICAgICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0
OwogICAgICAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBvYmotPmltcC0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6QmluZGluZ3M6OmlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxl
eGljYWxHbG9iYWxPYmplY3QsIGktPnN0cmluZygpKSk7Ci0gICAgICAgIEpTQzo6Q2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2Fs
bFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24pOworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRhOjpUeXBl
OjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIENhbGwgdGhl
IGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdM
aXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRBcmdzKGxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAgICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOworICAgICAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2Fs
bERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1
cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgSlNDOjpCaW5kaW5n
czo6Y29udmVydFZhbHVlVG9OUFZhcmlhbnQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0Viwg
cmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397659</attachid>
            <date>2020-04-27 01:28:36 -0700</date>
            <delta_ts>2020-04-27 02:09:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211059-20200427012836.patch</filename>
            <type>text/plain</type>
            <size>232301</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MWE1NDEzYmM1MmQzNjc4ZGZjNzY4ZmUwNjVlMzYwNWEyNjJmMjNjLi5mZmVkYTI1ZDcxZGJlN2Q0
NmQ3NzYxYmYwM2JhYmQ4NGYxMTRmYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDQtMjcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtKU0NdIENhbGxEYXRhL0NvbnN0cnVjdERhdGEgc2hvdWxkIGlu
Y2x1ZGUgQ2FsbFR5cGUvQ29uc3RydWN0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgZ2V0Q2FsbERhdGEvZ2V0Q29uc3RydWN0RGF0YSByZXR1cm4gYSBD
YWxsVHlwZS9Db25zdHJ1Y3RUeXBlIGFuZCBoYXZlIGEgQ2FsbERhdGEvQ29uc3RydWN0RGF0YSBv
dXQgcGFyYW0sCisgICAgICAgIGFuZCB0aGVuICpib3RoKiBvZiB0aGVzZSBhcmUgcGFzc2VkIHNp
ZGUtYnktc2lkZSB0byBgY2FsbGAvYGNvbnN0cnVjdGAsIHdoaWNoIGFsbCBzZWVtcyBhIGJpdCBz
aWxseS4KKworICAgICAgICBUaGlzIHBhdGNoIG1lcmdlcyBDYWxsVHlwZS9Db25zdHJ1Y3RUeXBl
IGludG8gQ2FsbERhdGEvQ29uc3RydWN0RGF0YSBzdWNoIHRoYXQgZ2V0Q2FsbERhdGEvZ2V0Q29u
c3RydWN0RGF0YQorICAgICAgICBubyBsb25nZXIgbmVlZCBhbiBvdXQgcGFyYW0gYW5kIGBjYWxs
YC9gY29uc3RydWN0YCByZXF1aXJlIG9uZSBsZXNzIG92ZXJ0IHBhcmFtZXRlci4KKworICAgICAg
ICBJbiBzbyBkb2luZywgaXQgYWxzbzoKKyAgICAgICAgLSByZW1vdmVzIENvbnN0cnVjdERhdGEg
ZW50aXJlbHkgYXMgaXQncyBhbiBleGFjdCBkdXBsaWNhdGUgb2YgQ2FsbERhdGEKKyAgICAgICAg
LSByZW5hbWVzIGVudW0gdmFsdWUgSG9zdCB0byBOYXRpdmUgaW4gYWxpZ25tZW50IHdpdGggQ2Fs
bERhdGEncyB1bmlvbgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxs
RGF0YSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2Vp
dmVCcm9hZGNhc3QpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FsbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpjYWxsKToKKyAgICAgICAgKEpTQzo6
cHJvZmlsZWRDYWxsKToKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICog
cnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bnN0cnVjdERhdGEuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3QpOgorICAgICAgICAoSlND
Ojpwcm9maWxlZENvbnN0cnVjdCk6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OnByb2ZpbGVkQ29uc3Ry
dWN0KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsR2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAg
IChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgorICAgICAgICAoSlNDOjpoYXNJdGVyYXRvck1ldGhvZCk6
CisgICAgICAgIChKU0M6Oml0ZXJhdG9yTWV0aG9kKToKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JG
b3JJdGVyYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpi
b3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0lu
dGVybmFsUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlOjp0aGVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTTWljcm90YXNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
aWNyb3Rhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnByb3ZpZGVGZXRjaCk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUxvYWRlcjo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9h
ZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRl
cjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmlzQ2FsbGFibGVSZXBsYWNlciBjb25zdCk6
CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6
OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5k
U3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldhbGtlcjo6V2Fsa2VyKToKKyAgICAg
ICAgKEpTQzo6V2Fsa2VyOjpjYWxsUmV2aXZlcik6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1
bmNQYXJzZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
Om9yZGluYXJ5U2V0U2xvdyk6CisgICAgICAgIChKU0M6OmNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2UuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmNyZWF0ZURlZmVycmVk
RGF0YSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZWRQcm9taXNlKToKKyAgICAg
ICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0TWFwKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1J
bnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1IYXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmpl
Y3RDb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFj
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAgICAgICAg
KEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyk6CisgICAg
ICAgIChKU0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpjYWxsUHJvbWlzZVJlamVjdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdFdlYWtNYXApOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogdG9vbHMv
SlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXaXRoU3RhY2tTaXplUHJvYmVGdW5j
dGlvbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OmNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbik6CisKIDIwMjAtMDQtMjYgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIENsZWFybHkg
ZGlzdGluZ3Vpc2ggaXNDb25zdHJ1Y3RvciBmcm9tIGdldENvbnN0cnVjdERhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA2NDFhZjk2ODUyNzk4ZTAwNzhhYzQ4YjgxMDMwNWRiMTZjMzQxNzA4Li40OWNmNmE2MTVh
MjAwYmRiMDA3MGY1ZTA2NmI5Njk3YjQyMDMxYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5
IEBACisyMDIwLTA0LTI3ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbSlNDXSBDYWxsRGF0YS9Db25zdHJ1Y3REYXRhIHNob3VsZCBpbmNsdWRlIENh
bGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxS
ZXBsYWNlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJ
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0
cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9y
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2U6
OmNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUNvbnN0cnVjdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVjdG9y
QmFzZTo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjppdGVyYXRvckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NTWFwTGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGVhckJhY2tpbmdNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0VG9CYWNraW5nTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcndh
cmRGdW5jdGlvbkNhbGxUb0JhY2tpbmdNYXApOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZEZv
ckVhY2hDYWxsVG9CYWNraW5nTWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTU5hbWVk
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxK
U0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OndoZW5Qcm9taXNlSXNT
ZXR0bGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVNldExpa2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xlYXJCYWNraW5nU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRvQmFja2luZ1NldCk6
CisgICAgICAgIChXZWJDb3JlOjpmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5nU2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ1NldCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNF
cnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6
Y2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5j
dGlvbkNvbnN0cnVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OmdldFVzZXJNZWRp
YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhbGxQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2lu
RWxlbWVudEN1c3RvbUdldENhbGxEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtSW50ZXJuYWw6OmNhbGxGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6bG9jayk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWFkYWJsZVN0cmVhbUNhbGxGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhl
Y3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KEdlbmVyYXRlUGx1Z2luQ2FsbCk6CisgICAgICAgIChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmlu
aXRpb25zKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDoKKyAgICAgICAg
KiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRo
b2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxEYXRhKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVu
dGltZU9iamVjdDo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGlt
ZU9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xz
QWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmdldEN1cnJlbnRNZWRpYUNvbnRyb2xzU3RhdHVzKToKKyAgICAgICAgKiBodG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9uZUFy
cmF5QnVmZmVyKToKKwogMjAyMC0wNC0yNyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBCdWlsZCBmYWlsdXJlIGluIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQg
YWZ0ZXIgcjI2MDU4OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZjA4Mzg3MThjNmYyNDE3OGQ2Y2IyNjZiYWFhZGJm
MjJmNzJiZDQ5Li44NTYzYzA3NTQ4ODY3MTIzZjQ1ZWRkMTZlOWNkNDIyMDU2Y2M1ZGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTI3ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5r
aXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsRGF0YS9Db25zdHJ1Y3REYXRh
IHNob3VsZCBpbmNsdWRlIENhbGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRDYWxsRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOUEpTT2JqZWN0OjpoYXNNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2Jq
ZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjppbnZva2UpOgor
CiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0cmlidXRlcyB3
aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggYzg4YmM5ZjU4ZGIzYmVmNWViYTYyOTExODM4NzI1YmMyMTU5MmE1MC4uNzJl
MTUzMzUzNDJmMTk5MjUyNjg1NTMwMzUxMzcxMzZhOGE1ZDgzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTI3ICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBDYWxsRGF0YS9Db25zdHJ1
Y3REYXRhIHNob3VsZCBpbmNsdWRlIENhbGxUeXBlL0NvbnN0cnVjdFR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6Omludm9rZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3RydWN0KToKKwogMjAyMC0wNC0yNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBzdG9wIHVzaW5nIG91dCBh
cmd1bWVudHMgZm9yIGRvY3VtZW50IGF0dHJpYnV0ZXMgd2hlbiBjb252ZXJ0aW5nIHRvIGF0dHJp
YnV0ZWQgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDRhNzRiZjAzNDJi
YmM4M2FiMjIxMjljZjBhZTUwNzNiZDFhZjQ5ZmIuLjNiMjYwMDg3ODBlOTRmMGY4YjIyOTliNDgy
OThkMjBhMDMxNTljMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0wNC0yNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgW0pTQ10gQ2FsbERhdGEvQ29uc3RydWN0RGF0YSBzaG91bGQgaW5jbHVkZSBD
YWxsVHlwZS9Db25zdHJ1Y3RUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOUE5fSW52b2tlKToKKwogMjAyMC0wNC0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RvcCB1c2luZyBsaXZlIHJhbmdlcyBpbiBmdW5jdGlvbnMgdGhhdCBy
ZXR1cm4gcmFuZ2Ugb2YgdGhlIHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCmluZGV4IDQ5ZjRjZTc2ZWRlMWVhZThl
ZDAyZDVmM2YxYmY3ZDA5NGY3MTlmZjYuLmZjMTA4NTFmNTNkNTQ2NWY3YTUyZWU0YTkzY2Q4NzIw
OTMyNzQ0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTY0LDEwICs2NCwxMiBAQCB2b2lkIEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFj
a0NvbnN0cnVjdG9yKj4oY2VsbCktPkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6fkpTQ2FsbGJhY2tD
b25zdHJ1Y3RvcigpOwogfQogCi1Db25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQor
Q2FsbERhdGEgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCop
CiB7CisgICAgQ2FsbERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBjb25zdHJ1Y3REYXRhLnR5cGUg
PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cj47Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVj
dERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKaW5kZXggZmJkMjQzMTE5NDgxMjg2NTY2
MmIyZWZjYTM0MGM2YWVjMWU4ZTc3Yi4uZDM5ODUwZDJjNDY1Mjc0MzI4NDUxMGY2ZGExM2M5ZmU4
ODViZTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgc3Ry
dWN0IEFQSUNhbGxiYWNrRnVuY3Rpb247CiAKLSAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbERh
dGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKIAogICAgIEpTT2JqZWN0Q2FsbEFzQ29uc3Ry
dWN0b3JDYWxsYmFjayBjb25zdHJ1Y3RDYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2s7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBl
NjQzNTEzMTNkN2Y4N2FjMWNiZGZiYmMwNjIzZmFjYTliODlmMDdjLi5hNjQyYTA1NmI4YzMxZjk5
ZjU0OTBmMmNjYTg2ODUyMDUyOWVmNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMjA4LDggKzIwOCw4IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OworICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOworICAgIHN0
YXRpYyBDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCmluZGV4IDYwNzViMGJhY2RhNTE1NWE1ZjFhMjFjMjYwNjhhZDhmMmYyOWFkMmUuLmQ5
OTM0YzkzODM3ZjIwZmRiMDQ4MDhkNjZkZDg0ZWRlMTEzZDEyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC00
MzAsMTYgKzQzMCwxOCBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgotQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQorQ2FsbERhdGEgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChqc0Ns
YXNzLT5jYWxsQXNDb25zdHJ1Y3RvcikgeworICAgICAgICAgICAgY29uc3RydWN0RGF0YS50eXBl
ID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwotICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5
cGU6Okhvc3Q7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTUwNSwxNiArNTA3LDE4IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1DYWxsVHlwZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEm
IGNhbGxEYXRhKQorQ2FsbERhdGEgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxsRGF0
YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDYWxsYmFj
a09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0Ns
YXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKGpzQ2xh
c3MtPmNhbGxBc0Z1bmN0aW9uKSB7CisgICAgICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERh
dGE6OlR5cGU6Ok5hdGl2ZTsKICAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNhbGw7Ci0gICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAg
cmV0dXJuIGNhbGxEYXRhOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBmYmQ1MWVlMDM0ZmJkNGY2YTMw
MThiMGEwY2YzYjRmY2QxZDZmYTY0Li5lZTk0NDlmZTA1YjdiMjkwM2RiOWYzMDYzYTExYjc0OWY0
OWY1NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAt
NzM1LDEyICs3MzUsMTEgQEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShqc09iamVjdCwgY2Fs
bERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGpzT2JqZWN0KTsKKyAgICBpZiAoY2FsbERhdGEudHlw
ZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1Zh
bHVlUmVmIHJlc3VsdCA9IHRvUmVmKGdsb2JhbE9iamVjdCwgcHJvZmlsZWRDYWxsKGdsb2JhbE9i
amVjdCwgUHJvZmlsaW5nUmVhc29uOjpBUEksIGpzT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzVGhpc09iamVjdCwgYXJnTGlzdCkpOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gdG9SZWYo
Z2xvYmFsT2JqZWN0LCBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246
OkFQSSwganNPYmplY3QsIGNhbGxEYXRhLCBqc1RoaXNPYmplY3QsIGFyZ0xpc3QpKTsKICAgICBp
ZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNl
cHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXN1bHQgPSAwOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC03NjgsOSArNzY3LDggQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25z
dHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHNpemUKIAogICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAotICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBqc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGpzT2JqZWN0LCBjb25zdHJ1Y3RE
YXRhKTsKLSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQorICAg
IGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGpzT2JqZWN0KTsKKyAg
ICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CkBAIC03ODMs
NyArNzgxLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHNpemUKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gdG9SZWYocHJvZmlsZWRDb25zdHJ1Y3Qo
Z2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwganNPYmplY3QsIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpKTsKKyAgICBKU09iamVjdFJlZiByZXN1bHQgPSB0
b1JlZihwcm9maWxlZENvbnN0cnVjdChnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6QVBJ
LCBqc09iamVjdCwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCkpOwogICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6
RGlkVGhyb3cpCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggODY2YWViYzlkOWViNjM5M2ZhOWU3YzBhODE2MTc3ZDhmZDRhYTYwNy4uYWIwZmVk
NmQxMmI1N2JmOTgyMDFlNjJkNjhjODJlMWNlZjVjNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTExNCwx
NyArMTE0LDE2IEBAIEV4cGVjdGVkPEpTVmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IFNjcmlw
dEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOwor
ICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBleGNlcHRpb247CiAgICAgaWYgKG1fY2FsbEhhbmRsZXIpCi0gICAgICAgIHJlc3VsdCA9IG1f
Y2FsbEhhbmRsZXIobV9nbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLCBleGNlcHRpb24pOworICAgICAgICByZXN1bHQgPSBt
X2NhbGxIYW5kbGVyKG1fZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNPYmpl
Y3QsIG1fYXJndW1lbnRzLCBleGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0g
SlNDOjpjYWxsKG1fZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmVzdWx0ID0gSlND
OjpjYWxsKG1fZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1f
YXJndW1lbnRzLCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAv
LyBEbyBub3QgdHJlYXQgYSB0ZXJtaW5hdGVkIGV4ZWN1dGlvbiBleGNlcHRpb24gYXMgaGF2aW5n
IGFuIGV4Y2VwdGlvbi4gSnVzdCB0cmVhdCBpdCBhcyBhbiBlbXB0eSByZXN1bHQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5k
ZXggNDU1Njc3ZDI3NTliYWI1M2RiM2NhOGU0ZGEyZThhMzNmOWRmZDMwNS4uYTIzN2Q2M2Q2MjQ3
NjdhOTRjMmQwMTZjZGFjZjU3ZjVkNjU4MjQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApAQCAtNzAsNyArNzAsNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHRGdW5jdGlvbkNhbGwgOiBw
dWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBK
U0M6OkpTVmFsdWUgKCpTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxs
VHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+Jik7CisgICAgdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpTY3JpcHRGdW5jdGlvbkNhbGxI
YW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+Jik7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhp
c09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIGhh
bmRsZXIgPSBudWxscHRyKTsKICAgICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPj4gY2FsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCA0NDM4NzZhMjMzODk2NTcwZjFkMjYyN2EyOTYyYzdiMzgwNjBh
NDJhLi4wMmNmNWZjNWI2NzJkZGJlYjJiYTY1ZDE2MmViZGVjNTE2YWQ0MTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTMwNDMsMTQgKzMwNDMs
MTMgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNwcmVhZEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWwKICAgICBKU0FycmF5KiBhcnJheTsKICAgICB7
CiAgICAgICAgIEpTRnVuY3Rpb24qIGl0ZXJhdGlvbkZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5p
dGVyYXRvclByb3RvY29sRnVuY3Rpb24oKTsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgaXRlcmF0aW9u
RnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
OjpOb25lKTsKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBpdGVyYXRp
b25GdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoaXRlcmFibGUpOwogICAgICAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBKU1ZhbHVlIGFycmF5UmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIGl0ZXJhdGlvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
TnVsbCgpLCBhcmd1bWVudHMpOworICAgICAgICBKU1ZhbHVlIGFycmF5UmVzdWx0ID0gY2FsbChn
bG9iYWxPYmplY3QsIGl0ZXJhdGlvbkZ1bmN0aW9uLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3Vt
ZW50cyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7
CiAgICAgICAgIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihhcnJheVJlc3VsdCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCmluZGV4IDUxZTNjMWEwMzA1MWYwYjQyYWM1MTYyMTVhOTVhNDYyY2U0
NmJkYjAuLmVkMjhkZjAxNDlkMDE3ZDQ0M2EyNjZjZDM1ZDRkZWNjMTZlYjVlMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKQEAgLTE1OCw5ICsxNTgsOCBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwog
ICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERh
dGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb25WYWx1ZSk7CisgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKQEAgLTE2OSw3ICsxNjgsNyBAQCBFeHBlY3Rl
ZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
Y3JlYXRlSW5qZWN0ZWRTYwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGlkKSk7CiAgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6
Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xv
YmFsVGhpc1ZhbHVlLCBhcmdzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3Mp
OwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXRPYmpl
Y3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaAppbmRleCA3N2M2Y2VlZTcxMmFmYjJkNTI3MTVkMDE3YTllNjky
MDcwZWNjZWUzLi5lYWQyOGNmZTMzYjNiYWVjNTk0ZWIxNmQ1YzhkOGRlNzRhNTMwZDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25t
ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZp
cm9ubWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFZNOwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJ
bnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlw
ZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUs
IGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbik7Cit0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckZ1bmN0aW9u
Q2FsbEhhbmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgq
SW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlND
OjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IGFkNGIyMTVjNTVhNWNkNThmYmIyZjQyYTEyMTQ3Y2I0NzA1ODkyNzguLmFmNDhh
ZTNlNGQ2NDUyZmQ4NzgyZWNkZjM3MzE1NWM2OGI2ZjdjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzgwLDE1ICs3ODAs
MTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU0dsb2JhbE9iamVjdCosIEoKICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRo
RW50cnlUeXBlQ2FsbDogewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBiYXNl
T2JqZWN0LmdldChnbG9iYWxPYmplY3QsIEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1l
KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFs
dWUoKSk7Ci0gICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRh
KTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAg
ICAgICAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7Cisg
ICAgICAgICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGdsb2JhbE9iamVjdCwgZnVuY3Rp
b24pKTsKICAgICAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBqc29uQXJnOwogICAg
ICAgICAgICAgICAgIGpzb25BcmcuYXBwZW5kKEpTT05QVmFsdWUpOwogICAgICAgICAgICAgICAg
IEFTU0VSVCghanNvbkFyZy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gSlNPTlBQYXRoLnNpemUoKSA9PSAxID8ganNVbmRlZmluZWQoKSA6IGJh
c2VPYmplY3Q7Ci0gICAgICAgICAgICAgICAgSlNPTlBWYWx1ZSA9IEpTQzo6Y2FsbChnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwganNvbkFyZyk7
CisgICAgICAgICAgICAgICAgSlNPTlBWYWx1ZSA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBqc29uQXJnKTsKICAgICAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC04NTcsNyArODU2LDcgQEAgZmFpbGVkSlNPTlA6
CiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxs
RGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC04NjcsNyArODY2LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNhbGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogCi0gICAgYm9vbCBpc0pTQ2FsbCA9IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6
SlMpOworICAgIGJvb2wgaXNKU0NhbGwgPSAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6SlMpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKICAgICBzaXplX3QgYXJnc0Nv
dW50ID0gMSArIGFyZ3Muc2l6ZSgpOyAvLyBpbXBsaWNpdCAidGhpcyIgcGFyYW1ldGVyCiAKQEAg
LTg3Nyw3ICs4NzYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgIHNjb3BlID0g
Y2FsbERhdGEuanMuc2NvcGU7CiAgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxP
YmplY3Qodm0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6SG9zdCk7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOYXRpdmUpOwogICAgICAgICBnbG9iYWxPYmplY3QgPSBmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICB9CiAKQEAgLTkyOSw3ICs5MjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNPYmplY3QqIElu
dGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU09iamVjdCogY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJn
cywgSlNWYWx1ZSBuZXdUYXJnZXQpCitKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjb25z
dHJ1Y3RvciwgY29uc3QgQ2FsbERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC05NDMsNyArOTQyLDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3Ry
dWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU08KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SlMpOworICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChj
b25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBz
Y29wZSA9IG51bGxwdHI7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IDEgKyBhcmdzLnNpemUoKTsg
Ly8gaW1wbGljaXQgInRoaXMiIHBhcmFtZXRlcgogCkBAIC05NTMsNyArOTUyLDcgQEAgSlNPYmpl
Y3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU08KICAgICAgICAgc2NvcGUgPSBjb25zdHJ1Y3REYXRhLmpzLnNjb3Bl
OwogICAgICAgICBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICB9
IGVsc2UgewotICAgICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpI
b3N0KTsKKyAgICAgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6TmF0aXZlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCh2bSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCmluZGV4IDY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4MGU2OTY5NzFh
NjRiYzguLjRmOGJjNzg1YzUzYjNkY2ViYWYyNTIzM2JhODUwZGI1MmFkNDFmYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xMDYs
OCArMTA2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlUHJv
Z3JhbShjb25zdCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09i
aik7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqKTsKLSAgICAg
ICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlv
biwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKLSAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERh
dGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOworICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBD
YWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgICAgIEpT
T2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0
aW9uLCBjb25zdCBDYWxsRGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7
CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKIAogICAgICAgICB2b2lkIGdldEFyZ3Vt
ZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1l
dGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGRkNjVmN2JlZWYwNWM3Mjc5M2ZiZWZk
N2I0OGJmMWJiNDc0MWM2ZDMuLjAwMGQ0MzcyMmM4MWU2MjIzODBmYmE2NGRjYjNmOGYwOWVjMDA5
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
MTA1OCwxMiArMTA1OCwxMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogICAgIGNhbGxlZUZy
YW1lLT5zZXRDb2RlQmxvY2soMCk7CiAKICAgICBpZiAoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXph
dGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGVlLCBjYWxs
RGF0YSk7Ci0gICAgCi0gICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwot
ICAgIAotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKKyAgICAgICAg
YXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsZWUpOworICAgICAgICBBU1NFUlQo
Y2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6SlMpOworCisgICAgICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOYXRpdmUpIHsKICAgICAgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgICAgIGNh
bGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgICAgICB2bS5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOwpA
QCAtMTA3OCw3ICsxMDc2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKICAgICAgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0g
Q2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiAgICAgICAg
IH0KICAgICAKLSAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKTsKKyAg
ICAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBRnVuY3Rp
b25FcnJvcihnbG9iYWxPYmplY3QsIGNhbGxlZSkpOwogICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KAogICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCksCkBAIC0xMDg2LDEzICsxMDg0LDExIEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5
cGUgaGFuZGxlSG9zdENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
CiAgICAgfQogCiAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkg
PT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgCi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEo
dm0sIGNhbGxlZSwgY29uc3RydWN0RGF0YSk7Ci0gICAgCi0gICAgQVNTRVJUKGNvbnN0cnVjdFR5
cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOwotICAgIAotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENv
bnN0cnVjdERhdGEodm0sIGNhbGxlZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAh
PSBDYWxsRGF0YTo6VHlwZTo6SlMpOworCisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlwZSA9PSBD
YWxsRGF0YTo6VHlwZTo6TmF0aXZlKSB7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShh
c09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUp
LT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOwpAQCAtMTEwNCw4ICsxMTAwLDggQEAg
c3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKIAogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHRh
Z0NGdW5jdGlvbjx2b2lkKiwgSlNFbnRyeVB0clRhZz4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKworICAgIEFT
U0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGdsb2JhbE9iamVjdCwgY2FsbGVlKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAg
ICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGQwODkzMzUzMzhhOGQyMjQyYzRhOGI2NWZhOTkzZWY5YmE2
NWM2NmMuLjFlMTViMzQ4OWU2ZDQzNTBmNDAzYWMxNzJiMTI4YzJjOGY0YmU5NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xOTQxLDkgKzE5NDEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEpTR2xvYmFsT2JqZWN0
KgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFs
dWUgY2FsbGJhY2sgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxiYWNrLCBj
YWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8g
Y2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgY2FsbGJhY2spOworICAgIGlmIChjYWxsRGF0YS50
eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkV4cGVjdGVkIGNhbGxiYWNrIl9zKSkpOwogICAgIAogICAgIFJlZlB0cjxNZXNz
YWdlPiBtZXNzYWdlOwpAQCAtMTk2MSw3ICsxOTYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2ZUJyb2FkY2FzdChKU0dsb2JhbE9iamVj
dCoKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihtZXNzYWdlLT5pbmRleCgpKSk7CiAgICAgaWYg
KFVOTElLRUxZKGFyZ3MuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncykpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9i
amVjdCwgY2FsbGJhY2ssIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncykpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYWIyMjcxZjJjMDlm
MDJkNzVjZTliMzY0ODVmMmU4YmZkNGMxYzhmZS4uNzU5YzEzMjcwZTU4YzY0NDFhY2YyMWIyZjJk
OGM1NThkZTlhODUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC0xNTIwLDEyICsxNTIwLDEwIEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1ZSBjYWxs
ZWUsCiAgICAgY2FsbGVlRnJhbWUtPmNsZWFyUmV0dXJuUEMoKTsKIAogICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBjYWxsZWUsIGNhbGxEYXRhKTsKLSAgICAK
LSAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpKUyk7Ci0gICAgCi0gICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkgeworICAgICAgICBhdXRvIGNhbGxEYXRh
ID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxlZSk7CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBl
ICE9IENhbGxEYXRhOjpUeXBlOjpKUyk7CisKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0g
Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSkgewogICAgICAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgICAgIGNhbGxlZUZyYW1lLT5zZXRD
YWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChj
YWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOwpAQCAtMTUzNCwxOCArMTUz
MiwxNiBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEpTVmFsdWUgY2FsbGVlLAogICAgICAgICAKICAgICAgICAgc2xvd1Bh
dGhMb2coIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAiLCBjYWxsZWUsICJcbiIpOwog
Ci0gICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgIEFT
U0VSVChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICAgICAgTExJ
TlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3QsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGdsb2Jh
bE9iamVjdCwgY2FsbGVlKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7Ci0gICAgCi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENv
bnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNhbGxlZSwg
Y29uc3RydWN0RGF0YSk7Ci0gICAgCi0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3Ry
dWN0VHlwZTo6SlMpOwotICAgIAotICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5
cGU6Okhvc3QpIHsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEo
dm0sIGNhbGxlZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6
VHlwZTo6SlMpOworCisgICAgaWYgKGNvbnN0cnVjdERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6TmF0aXZlKSB7CiAgICAgICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
ZWVGcmFtZSk7CiAgICAgICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVl
KSk7CiAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0
KHZtKSwgY2FsbGVlRnJhbWUpKTsKQEAgLTE1NTQsNyArMTU1MCw3IEBAIHN0YXRpYyBTbG93UGF0
aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1
ZSBjYWxsZWUsCiAgICAgCiAgICAgc2xvd1BhdGhMb2coIkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBu
b3QgYSBmdW5jdGlvbjogIiwgY2FsbGVlLCAiXG4iKTsKIAotICAgIEFTU0VSVChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogICAgIExMSU5UX0NBTExfVEhST1coZ2xvYmFs
T2JqZWN0LCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGNhbGxlZSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKaW5kZXggMmJiYjZjMzRkZmEzNjNhMTg3ODUwODMwOTFjMTY3MDcwNWM3ZDllMS4uZDBk
N2M0Y2ZiNjRlOWMwNjc3ODYyM2M5MjlmMzNkYTYyZmFjNDg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNjE1LDE3ICs2MTUs
MTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgYm9vbCBjdXN0b21Kb2luQ2Fz
ZSA9IGZhbHNlOwogICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzQ2VsbCgpKQogICAgICAgICAgICAg
Y3VzdG9tSm9pbkNhc2UgPSB0cnVlOwotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRh
KTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgICAgICBhdXRv
IGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKGNhbGxE
YXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICBjdXN0b21Kb2lu
Q2FzZSA9IHRydWU7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LCB2bSksICJdIikpKTsKIAogICAg
ICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUgYW5k
IGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgotICAgICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2Jq
ZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SG9zdCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2luKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CisgICAgICAg
IGlmICghaXNKU0FycmF5KHRoaXNPYmplY3QpIHx8IGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6
OlR5cGU6Ok5hdGl2ZSB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1
bmNKb2luKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpc09iamVjdCwg
KnZtLmVtcHR5TGlzdCkpKTsKICAgICB9CiAKICAgICBBU1NFUlQoaXNKU0FycmF5KHRoaXNWYWx1
ZSkpOwpAQCAtNzA2LDEwICs3MDUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUgY29udmVyc2lvbkZ1bmN0aW9uID0gZWxlbWVu
dC5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZyk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0g
ICAgICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBhcmd1bWVudHMpOworICAgICAgICAgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjb252ZXJzaW9uRnVuY3Rpb24pOworICAgICAgICAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIGNvbnZlcnNpb25GdW5jdGlvbiwg
Y2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAppbmRleCBh
ZjhiNmMyNWUyNWMxODQ4NTZhNTY2ZTEyZDhjNWU5NjRhZmI4MzRlLi5hMTJiM2ExZTJlNmNjYzQ2
ZDI2NWJlNmM0OGFhODgzMjNjZWFmYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWxsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FsbERhdGEuY3BwCkBAIC00NCwyNiArNDQsMjUgQEAgSlNWYWx1ZSBjYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTVmFsdWUgdGhp
c1YKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRh
KTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbk9iamVjdCk7CisgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFs
dWUsIGFyZ3MpKTsKIH0KIAotSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
SlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SlMgfHwgY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Okhvc3QpOwotICAgIHJldHVybiB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZUNhbGwoZ2xvYmFs
T2JqZWN0LCBhc09iamVjdChmdW5jdGlvbk9iamVjdCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6SlMgfHwgY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlKTsKKyAgICBy
ZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVDYWxsKGdsb2JhbE9iamVjdCwgYXNPYmplY3Qo
ZnVuY3Rpb25PYmplY3QpLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKIH0KIAotSlNWYWx1
ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgcmV0dXJuZWRFeGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
QEAgLTczLDE4ICs3MiwxOCBAQCBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUgY2FsbAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNWYWx1ZSBwcm9maWxlZENhbGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBmdW5j
dGlvbk9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
Y29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUodm0uZGVwcmVjYXRlZFZN
RW50cnlHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KSwgcmVhc29uKTsKLSAgICByZXR1cm4gY2Fs
bChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncyk7CisgICAgcmV0dXJuIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVj
dCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKLUpTVmFsdWUgcHJvZmlsZWRDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYg
Y2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0
cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgcHJvZmlsZWRDYWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTVmFs
dWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVk
RXhjZXB0aW9uKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTY3Jp
cHRQcm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZSh2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QpLCByZWFzb24pOwotICAgIHJldHVybiBjYWxsKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
LCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5oCmluZGV4IGY1YWJmNGRmNGZlMzVkMTZlZjQwZTQ1NTQzYTVlMTIwYTM5Mjg4NGUu
LjczYTljMTU1ZWQ0M2ZhMjBiNTg5YzE4YjFmZmVmZjRjNDQ5NDUyM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAtMzMsMjAgKzMzLDE1IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBBcmdMaXN0OwogY2xhc3MgRXhj
ZXB0aW9uOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBKU1Njb3BlOwogCi1lbnVtIGNsYXNzIENhbGxUeXBlIDogdW5zaWduZWQgewotICAgIE5vbmUs
Ci0gICAgSG9zdCwKLSAgICBKUwotfTsKLQogc3RydWN0IENhbGxEYXRhIHsKKyAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmF0aXZlLCBKUyB9OworICAgIFR5cGUgdHlwZSB7
IFR5cGU6Ok5vbmUgfTsKKwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uOwpAQCAtNTgsMjAgKzUzLDIwIEBAIHN0
cnVjdCBDYWxsRGF0YSB7CiAgICAgfTsKIH07CiAKLWVudW0gY2xhc3MgUHJvZmlsaW5nUmVhc29u
IHsKK2VudW0gY2xhc3MgUHJvZmlsaW5nUmVhc29uIDogdWludDhfdCB7CiAgICAgQVBJLAogICAg
IE1pY3JvdGFzaywKICAgICBPdGhlcgogfTsKIAotLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5
b3UgZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5
b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGVtLgorLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3Ug
ZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgdW5sZXNzIHlvdSBhcmUgZ29pbmcgdG8g
dXNlIGl0LgogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgY2FsbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBl
LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7Ci1K
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4
Y2VwdGlvbik7CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xv
YmFsT2JqZWN0KiwgUHJvZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
OwotSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBwcm9maWxlZENhbGwoSlNHbG9iYWxPYmplY3Qq
LCBQcm9maWxpbmdSZWFzb24sIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOworSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBwcm9maWxlZENhbGwoSlNHbG9iYWxPYmplY3QqLCBQcm9maWxpbmdSZWFzb24sIEpTVmFsdWUg
ZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xv
YmFsT2JqZWN0KiwgUHJvZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25z
dCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggN2E1OWI4ZmRiMGMy
MmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOS4uYjMyYzhmZGI1ZDc2NmQ3MGJmZTFmMDAyMWFm
MjY5NjYyZWUzMjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgKQEAgLTQ3LDEwICs0NywxMCBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIFZp
c2l0Q2hpbGRyZW5GdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgVmlzaXRDaGlsZHJlbkZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWSh2aXNpdENo
aWxkcmVuKTsKIAotICAgIHVzaW5nIEdldENhbGxEYXRhRnVuY3Rpb25QdHIgPSBDYWxsVHlwZSAo
KikoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICB1c2luZyBHZXRDYWxsRGF0YUZ1bmN0aW9uUHRy
ID0gQ2FsbERhdGEgKCopKEpTQ2VsbCopOwogICAgIEdldENhbGxEYXRhRnVuY3Rpb25QdHIgTUVU
SE9EX1RBQkxFX0VOVFJZKGdldENhbGxEYXRhKTsKIAotICAgIHVzaW5nIEdldENvbnN0cnVjdERh
dGFGdW5jdGlvblB0ciA9IENvbnN0cnVjdFR5cGUgKCopKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICB1c2luZyBHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIgPSBDYWxsRGF0YSAoKiko
SlNDZWxsKik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9F
TlRSWShnZXRDb25zdHJ1Y3REYXRhKTsKIAogICAgIHVzaW5nIFB1dEZ1bmN0aW9uUHRyID0gYm9v
bCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGNlZjA5ZjA2OTdkMjk0ZTYyYTI0
NGExNTRmYjU4ZmQ5NDFlMGRiZjUuLjFjYTk2ZjQyYzM2Y2UwYTA2ZTFlNTBiZjA3Y2NiOWNhNDQ2
ZDFjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMTUwMiwxNCArMTUwMiwxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfc3ByZWFkKQogICAgIEpTQXJyYXkqIGFycmF5OwogICAgIHsKICAgICAgICAgSlNGdW5jdGlv
biogaXRlcmF0aW9uRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPml0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbigpOwotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEp
OwotICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgICAgICBh
dXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdGlvbkZ1bmN0aW9uKTsKKyAgICAg
ICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChpdGVyYWJsZSk7CiAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgICAgIEpTVmFsdWUgYXJyYXlSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRl
cmF0aW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3VtZW50cyk7
CisgICAgICAgIEpTVmFsdWUgYXJyYXlSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0
aW9uRnVuY3Rpb24sIGNhbGxEYXRhLCBqc051bGwoKSwgYXJndW1lbnRzKTsKICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihhcnJheVJl
c3VsdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1
Y3REYXRhLmNwcAppbmRleCA0N2IyNDc0MThjYTg4ZWZkMWI3OGU2MzExYjY3NWQxZWZhNWE1ZmYw
Li5kYjYxMzhhYTA0ODE1NjU5OGJjYzgzM2FkMWU3MDc5MDUyZjk2MDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcApAQCAtNDQsMjggKzQ0
LDI3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgSlNWCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0
RGF0YSk7Ci0gICAgaWYgKFVOTElLRUxZKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6
Tm9uZSkpIHsKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBj
b25zdHJ1Y3Rvck9iamVjdCk7CisgICAgaWYgKFVOTElLRUxZKGNvbnN0cnVjdERhdGEudHlwZSA9
PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3QoZ2xvYmFsT2Jq
ZWN0LCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
cywgbmV3VGFyZ2V0KSk7ICAKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVj
dChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBu
ZXdUYXJnZXQpKTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorSlNPYmplY3QqIGNvbnN0cnVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBD
YWxsRGF0YSYgY29uc3RydWN0RGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdU
YXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEFTU0VSVChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTIHx8IGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZTo6SG9zdCk7Ci0gICAgcmV0dXJuIHZtLmludGVycHJldGVyLT5leGVjdXRlQ29u
c3RydWN0KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoY29uc3RydWN0b3JPYmplY3QpLCBjb25zdHJ1
Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpOworICAgIEFTU0VSVChjb25z
dHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6OkpTIHx8IGNvbnN0cnVjdERhdGEudHlw
ZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlKTsKKyAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXIt
PmV4ZWN1dGVDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChjb25zdHJ1Y3Rvck9iamVj
dCksIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCk7CiB9CiAKLUpTT2JqZWN0KiBwcm9m
aWxlZENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFz
b24gcmVhc29uLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorSlNPYmplY3QqIHByb2ZpbGVkQ29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpT
VmFsdWUgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0IENhbGxEYXRhJiBjb25zdHJ1Y3REYXRhLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2Nv
cGUodm0uZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KSwgcmVhc29u
KTsKLSAgICByZXR1cm4gY29uc3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3Qs
IGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RE
YXRhLCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCBmYjYxOTc0YTdk
YjM5YzQ5MWY5ZjkzYmFlYjZjYWMxMjYyMWYzYmEyLi41NDUyYWUyYWI4ZThkNGEyNDU2YWYxYzVl
ZjUyMWQ4NmU4YTZlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oCkBAIC0yOSw1MSArMjksMjcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ2FsbERhdGEuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiTmF0aXZl
RnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBD
YWxsRnJhbWU7Ci1jbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU09iamVjdDsKLWNs
YXNzIEpTU2NvcGU7CiAKLWVudW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVuc2lnbmVkIHsKLSAg
ICBOb25lLAotICAgIEhvc3QsCi0gICAgSlMKLX07Ci0KLXN0cnVjdCBDb25zdHJ1Y3REYXRhIHsK
LSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBUYWdnZWROYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbjsKLSAgICAgICAgfSBuYXRpdmU7Ci0gICAgICAgIHN0cnVjdCB7Ci0g
ICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZTsKLSAgICAg
ICAgICAgIEpTU2NvcGUqIHNjb3BlOwotICAgICAgICB9IGpzOwotICAgIH07Ci19OwotCi0vLyBD
b252ZW5pZW5jZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBDYWxsRGF0
YSBhbmQgQ2FsbFR5cGUgdW5sZXNzIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZW0uCisvLyBDb252
ZW5pZW5jZSB3cmFwcGVyIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBDYWxsRGF0YSB1
bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgaXQuCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJv
ck1lc3NhZ2UpOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29u
c3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CitKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgY29uc3QgQ2FsbERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdU
YXJnZXQpOwogCi1BTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQorQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0
IENhbGxEYXRhJiBjYWxsRGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICByZXR1cm4g
Y29uc3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUs
IGNvbnN0cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICByZXR1cm4gY29u
c3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNhbGxEYXRhLCBhcmdzLCBj
b25zdHJ1Y3Rvck9iamVjdCk7CiB9CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBwcm9m
aWxlZENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
cHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBQcm9maWxpbmdSZWFzb24sIEpTVmFs
dWUgY29uc3RydWN0b3IsIGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsKIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNW
YWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25z
dCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorQUxX
QVlTX0lOTElORSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9i
amVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewot
ICAgIHJldHVybiBwcm9maWxlZENvbnN0cnVjdChnbG9iYWxPYmplY3QsIHJlYXNvbiwgY29uc3Ry
dWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVj
dG9yT2JqZWN0KTsKKyAgICByZXR1cm4gcHJvZmlsZWRDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBy
ZWFzb24sIGNvbnN0cnVjdG9yT2JqZWN0LCBjYWxsRGF0YSwgYXJncywgY29uc3RydWN0b3JPYmpl
Y3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggOGU2ODBmNjg0MzBiOWQzMTEyNzE5ZDc5
OWE1MjM2MDNkMjNhNzAyMS4uNzA5MDNjNTRiMmIwYjAwZmViZjczNmE1YjU4MDIxMDhhYWEzNjM3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKQEAgLTExNjcsMTIgKzExNjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBK
U1ZhbHVlIHRvSVNPVmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5
TmFtZXMtPnRvSVNPU3RyaW5nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKLSAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCB0b0lTT1ZhbHVlKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKIAotICAgIEpTVmFs
dWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxs
VHlwZSwgY2FsbERhdGEsIG9iamVjdCwgKnZtLmVtcHR5TGlzdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxEYXRhLCBv
YmplY3QsICp2bS5lbXB0eUxpc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCmluZGV4
IDY2Y2M3NTA3MzkwYmE0MWUwODg5Y2Q2YjZjNTAwZTc2YjAyMTYwYjUuLmMxOGM5ZTBmNGI1MDdl
M2U5ZWIwMjQ0ZTNlNzA2MzFjMjI0NjhmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNTUsOSArNTUsOCBAQCBKU1ZhbHVlIGNhbGxH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IGdldHRlclNldAogCiAgICAgSlNPYmplY3QqIGdldHRlciA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIq
PihnZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRh
KGdldHRlciwgY2FsbERhdGEpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChn
bG9iYWxPYmplY3QsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkp
KTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGdldHRlcik7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsKGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBjYWxsRGF0
YSwgYmFzZSwgQXJnTGlzdCgpKSk7CiB9CiAKIGJvb2wgY2FsbFNldHRlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1Zh
bHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTc2LDEwICs3NSw5IEBAIGJvb2wgY2Fs
bFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIEpTVmFs
dWUgZ2V0dGVyU2V0dGVyCiAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoc2V0dGVy
LCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBzZXR0ZXIp
OwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBjYWxsKGdsb2JhbE9iamVjdCwgc2V0dGVyLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGJhc2UsIGFyZ3MpOworICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBz
ZXR0ZXIsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApp
bmRleCA1NDJmNzMwYjE5YTVkZTIwMjJmNjAwMTA5N2NhNjVkZWNjODQxMzU4Li5mODRjNTczMjU0
YTU4OTEwMWVkY2JlOGUyOWNjMzA2NTYxZjlkY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtODcsMjEgKzg3LDI2IEBA
IGNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1DYWxsVHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxs
RGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEludGVybmFs
RnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKICAgICBhdXRvKiBmdW5jdGlv
biA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9u
LT5tX2Z1bmN0aW9uRm9yQ2FsbCk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBjYWxs
RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNhbGw7Ci0gICAgcmV0dXJuIENhbGxU
eXBlOjpIb3N0OworICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAotQ29uc3RydWN0VHlwZSBJbnRl
cm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKK0NhbGxEYXRhIEludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNvbnN0cnVjdERhdGE7CiAgICAg
YXV0byogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNlbGwpOwotICAgIGlm
IChmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdCA9PSBjYWxsSG9zdEZ1bmN0aW9uQXND
b25zdHJ1Y3RvcikKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0
cnVjdDsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICBpZiAoZnVuY3Rpb24t
Pm1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgIT0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Ip
IHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsK
KyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5j
dGlvbkZvckNvbnN0cnVjdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAK
IGNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0m
IHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCmluZGV4IDAwZGIxMWU3MWI4MjRkMWJiODIzZjM4ZTBlZDk4YTA2MTZiN2RiMGQuLmE5MGI3
YWE3ZjA2OTE0MTE1ZDVjZWEzYTM4ODI1NmY2MzkwMzg3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTg4LDggKzg4LDggQEAg
cHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3MgTmFtZUFkZGl0aW9uTW9kZSB7IFdpdGhTdHJ1Y3R1
cmVUcmFuc2l0aW9uLCBXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbiB9OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
bWVBZGRpdGlvbk1vZGUgPSBOYW1lQWRkaXRpb25Nb2RlOjpXaXRoU3RydWN0dXJlVHJhbnNpdGlv
bik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlND
ZWxsKik7CiAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ2FsbDsKICAg
ICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNzc3M2MxN2E5MDAwMzJlYWZmNTQzYmI2MmZmNTAxOWQwNDc0OGFmOC4uNzUwMDdlNDEwYTI0
ODU0OGVmNGZiYWU2MjUxYWZhZGY5YWQxZTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC00MiwxNiArNDIsMTUg
QEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSXRl
cmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY28KICAgICBKU1ZhbHVlIGl0ZXJhdG9yID0gaXRlcmF0
aW9uUmVjb3JkLml0ZXJhdG9yOwogICAgIEpTVmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0aW9u
UmVjb3JkLm5leHRNZXRob2Q7CiAKLSAgICBDYWxsRGF0YSBuZXh0RnVuY3Rpb25DYWxsRGF0YTsK
LSAgICBDYWxsVHlwZSBuZXh0RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBuZXh0
RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAobmV4dEZ1bmN0aW9uQ2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBuZXh0RnVuY3Rpb25DYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBuZXh0RnVuY3Rpb24pOworICAgIGlmIChuZXh0RnVuY3Rpb25DYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBuZXh0RnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgaWYgKCFhcmd1bWVudC5pc0VtcHR5KCkpCiAg
ICAgICAgIG5leHRGdW5jdGlvbkFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQpOwogICAgIEFTU0VS
VCghbmV4dEZ1bmN0aW9uQXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgbmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxs
VHlwZSwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCBuZXh0RnVuY3Rpb25Bcmd1bWVu
dHMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIG5leHRGdW5jdGlv
biwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCBuZXh0RnVuY3Rpb25Bcmd1bWVudHMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
IXJlc3VsdC5pc09iamVjdCgpKQpAQCAtMTA1LDkgKzEwNCw4IEBAIHZvaWQgaXRlcmF0b3JDbG9z
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0aW9u
UmVjb3JkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDYWxsRGF0YSByZXR1cm5GdW5j
dGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YSh2bSwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEpOwotICAg
IGlmIChyZXR1cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0
byByZXR1cm5GdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJldHVybkZ1bmN0aW9u
KTsKKyAgICBpZiAocmV0dXJuRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIGVsc2UK
QEAgLTExNyw3ICsxMTUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZAogCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHM7CiAgICAgQVNTRVJUKCFyZXR1
cm5GdW5jdGlvbkFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgaW5uZXJS
ZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9u
Q2FsbFR5cGUsIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0ZXJhdGlvblJlY29yZC5pdGVyYXRv
ciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOworICAgIEpTVmFsdWUgaW5uZXJSZXN1bHQgPSBj
YWxsKGdsb2JhbE9iamVjdCwgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEs
IGl0ZXJhdGlvblJlY29yZC5pdGVyYXRvciwgcmV0dXJuRnVuY3Rpb25Bcmd1bWVudHMpOwogCiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0xNjUsOCArMTYzLDcgQEAgYm9vbCBoYXNJdGVy
YXRvck1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQog
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9k
ID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5
IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVj
dC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJs
ZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgcmV0
dXJuICFhcHBseU1ldGhvZC5pc1VuZGVmaW5lZCgpOwpAQCAtMTc4LDggKzE3NSw3IEBAIEpTVmFs
dWUgaXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9iamVjdCkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVl
IG1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxU
eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgIlN5bWJvbC5pdGVyYXRvciBw
cm9wZXJ0eSBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgbWV0aG9kID0gb2Jq
ZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1VuZGVmaW5lZCgpKTsK
IAogICAgIHJldHVybiBtZXRob2Q7CkBAIC0xOTAsMTUgKzE4NiwxNCBAQCBJdGVyYXRpb25SZWNv
cmQgaXRlcmF0b3JGb3JJdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogb2JqZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDYWxsRGF0YSBpdGVyYXRvck1l
dGhvZENhbGxEYXRhOwotICAgIENhbGxUeXBlIGl0ZXJhdG9yTWV0aG9kQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YSh2bSwgaXRlcmF0b3JNZXRob2QsIGl0ZXJhdG9yTWV0aG9kQ2FsbERhdGEpOwotICAg
IGlmIChpdGVyYXRvck1ldGhvZENhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0
byBpdGVyYXRvck1ldGhvZENhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yTWV0aG9k
KTsKKyAgICBpZiAoaXRlcmF0b3JNZXRob2RDYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIEFyZ0xpc3QgaXRlcmF0b3JNZXRob2RB
cmd1bWVudHM7Ci0gICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVy
YXRvck1ldGhvZCwgaXRlcmF0b3JNZXRob2RDYWxsVHlwZSwgaXRlcmF0b3JNZXRob2RDYWxsRGF0
YSwgb2JqZWN0LCBpdGVyYXRvck1ldGhvZEFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSBpdGVyYXRv
ciA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVyYXRvck1ldGhvZCwgaXRlcmF0b3JNZXRob2RDYWxs
RGF0YSwgb2JqZWN0LCBpdGVyYXRvck1ldGhvZEFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewpA
QCAtMjIwLDE1ICsyMTUsMTQgQEAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYWIKICAgICBKU1ZhbHVl
IGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAKLSAgICBDYWxsRGF0YSBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJh
dG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSk7Ci0gICAgaWYgKGl0ZXJhdG9y
RnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gaXRlcmF0b3JG
dW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yRnVuY3Rpb24pOworICAg
IGlmIChpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBBcmdMaXN0IGl0ZXJhdG9yRnVuY3Rpb25Bcmd1
bWVudHM7Ci0gICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBpdGVyYXRv
ckZ1bmN0aW9uLCBpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUsIGl0ZXJhdG9yRnVuY3Rpb25DYWxs
RGF0YSwgaXRlcmFibGUsIGl0ZXJhdG9yRnVuY3Rpb25Bcmd1bWVudHMpOworICAgIEpTVmFsdWUg
aXRlcmF0b3IgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXRlcmF0b3JGdW5jdGlvbiwgaXRlcmF0b3JG
dW5jdGlvbkNhbGxEYXRhLCBpdGVyYWJsZSwgaXRlcmF0b3JGdW5jdGlvbkFyZ3VtZW50cyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghaXRlcmF0b3Iu
aXNPYmplY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAKaW5kZXggNWI0MThmMWY5N2E1NTA1ZDZmOGRmZDdlYTBiZDVjM2YyNDY1
OTk4ZS4uODE2ODU5Mzk0OGQwN2MwNjI5YTExM2VhOGM5MzMxMzk5OWZlOTE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBAIC01
NywxMCArNTcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgICAgICAvLyBGb3JjZSB0
aGUgZXhlY3V0YWJsZSB0byBjYWNoZSBpdHMgYXJpdHkgZW50cnlwb2ludC4KICAgICAgICAgZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOwogICAg
IH0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7CisgICAgYXV0byBjYWxs
RGF0YSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24pOwor
ICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwg
Y2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC04NSwxMCArODQsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIH0KIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7Ci0gICAgQ2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xv
YmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBib3VuZEZ1bmN0
aW9uLT5ib3VuZFRoaXMoKSwgYXJncykpKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERh
dGEodm0sIHRhcmdldEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxs
RGF0YTo6VHlwZTo6Tm9uZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSwgYm91
bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMDgsMTQgKzEwNiwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7Ci0gICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IGdldENvbnN0cnVjdERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCB0YXJnZXRGdW5jdGlvbiwg
Y29uc3RydWN0RGF0YSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlw
ZTo6Tm9uZSk7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YShnbG9i
YWxPYmplY3QtPnZtKCksIHRhcmdldEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0
YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gY2FsbEZyYW1lLT5uZXdUYXJnZXQoKTsKICAgICBpZiAobmV3VGFyZ2V0ID09IGJvdW5kRnVu
Y3Rpb24pCiAgICAgICAgIG5ld1RhcmdldCA9IHRhcmdldEZ1bmN0aW9uOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNv
bnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24s
IGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xNDAsMTQgKzEzNywxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdAogICAgIH0KIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlv
biA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7Ci0gICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0
cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNvbnN0cnVj
dERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbik7CisgICAgQVNTRVJU
KGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBKU1Zh
bHVlIG5ld1RhcmdldCA9IGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCk7CiAgICAgaWYgKG5ld1Rhcmdl
dCA9PSBib3VuZEZ1bmN0aW9uKQogICAgICAgICBuZXdUYXJnZXQgPSB0YXJnZXRGdW5jdGlvbjsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Qo
Z2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0
YSwgYXJncywgbmV3VGFyZ2V0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjb25z
dHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaXNCb3VuZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCmluZGV4IDJkODI2ZDQxZTliY2ZmYWI5NTYyMGJhMDc4NzQ1OWU2NzAxYjE3NjYuLjky
Mzg2M2QxN2IyZDY1MTBjYzU0NDAzYTUxN2RkMzRkMDkzZmFhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTgzLDEwICs4Myw3IEBAIHVzaW5nIFdy
aXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjpp
c19zYW1lPFQsIFVua25vCiAKIGVudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3Qg
eyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CiAKLWVudW0gY2xh
c3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKLWVudW0gY2xhc3MgQ29u
c3RydWN0VHlwZSA6IHVuc2lnbmVkOwotc3RydWN0IENvbnN0cnVjdERhdGE7CiAKIHR5cGVkZWYg
aW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCmluZGV4IDA2NTk3OWU4MzUyMjRhNmMyN2E4NGRkZmY2YjI2ZjRiYmU3Y2Zi
YWEuLjdkM2EyZDVkNzM5NmExMDY5NTMxOTRiN2ZmNzYyYjQ2ZTdkNWU4NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtOTUsMjAgKzk1LDE0IEBAIGNvbnN0
IEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzT2JqZWN0
KCkgPyBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpIDogMDsKIH0KIAotQ2FsbFR5
cGUgSlNDZWxsOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxs
RGF0YSBKU0NlbGw6OmdldENhbGxEYXRhKEpTQ2VsbCopCiB7Ci0gICAgY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKLSAgICBjYWxsRGF0YS5qcy5zY29wZSA9IG51bGxw
dHI7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
Q2FsbFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotQ29uc3RydWN0VHlwZSBKU0Nl
bGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKK0NhbGxEYXRhIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKQogewotICAgIGNv
bnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKLSAgICBjb25zdHJ1
Y3REYXRhLmpzLnNjb3BlID0gbnVsbHB0cjsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCmluZGV4IGFhMmUxZDI0MzM4ZTIyZjE3YWQ5NGRmYjdiM2Y5YWE3ZGNkZjhlODAuLmI4ZDZm
NjUyMjU0ZGQwN2M1MjE1MTMyZmRmYWM0MTc1YjNiZDljYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xNDksOCArMTQ5LDggQEAgcHVibGljOgogICAgIC8vIHRo
aXMgaXMgYW4gb2JqZWN0LCB0aGVuIHR5cGVvZiB3aWxsIHJldHVybiAiZnVuY3Rpb24iIGluc3Rl
YWQgb2YgIm9iamVjdCIuIFRoZXNlIG1ldGhvZHMKICAgICAvLyBjYW5ub3QgY2hhbmdlIHRoZWly
IG1pbmRzIGFuZCBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGV5IGFyZSBzb21ldGltZXMgY2FsbGVk
IGZyb20gY29tcGlsZXIKICAgICAvLyB0aHJlYWRzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxsRGF0
YSBnZXRDYWxsRGF0YShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2Fs
bERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKIAogICAgIC8vIEJhc2ljIGNvbnZlcnNp
b25zLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9QcmltaXRpdmUoSlNHbG9iYWxP
YmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmMzJmMjlkMWUxOGQwYmRlNzEx
ZjY0ODA4YTRiYjE1ODNhMTA0NGM5Li5mMjYwNzMwOTgzYzNlOWNiZWM3NjM0MjAwNDc5NmRiYmQ5
ZjBmNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCkBAIC0yMzMsMTcgKzIzMywxNCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjppc0Z1
bmN0aW9uKFZNJiB2bSkKIHsKICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNH
ZXRDYWxsRGF0YSkgewotICAgICAgICBDYWxsRGF0YSBpZ25vcmVkQ2FsbERhdGE7Ci0gICAgICAg
IHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRoaXMsIGlnbm9yZWRDYWxsRGF0
YSkgIT0gQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgfQorICAgIGlmIChpbmxpbmVUeXBlRmxhZ3MoKSAm
IE92ZXJyaWRlc0dldENhbGxEYXRhKQorICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5n
ZXRDYWxsRGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0NvbnN0cnVjdG9yKFZNJiB2bSkK
IHsKLSAgICBDb25zdHJ1Y3REYXRhIGlnbm9yZWRDb25zdHJ1Y3REYXRhOwotICAgIHJldHVybiBt
ZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcywgaWdub3JlZENvbnN0cnVjdERh
dGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lOwogfQog
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggYWYwOGI4YTMyYjY5
N2FmYmMwZTljOWMzZWNmNzQ2ZDEwZDBhZWJlNi4uOWUzNDkxZjlkN2ExMzkzNTZkOTdmNDBiYTRj
NWY4ZDNhMWFhNTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKQEAgLTI3NCwxNiArMjc0LDIxIEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZU9yUmFyZURhdGEpICYgfnJhcmVEYXRhVGFnKSk7
CiB9CiAKLUNhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOworCiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgY2FsbERhdGEudHlwZSA9IENhbGxEYXRhOjpU
eXBlOjpOYXRpdmU7CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHRoaXNPYmpl
Y3QtPm5hdGl2ZUZ1bmN0aW9uKCk7Ci0gICAgICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6OkpTOwor
ICAgICAgICBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSB0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKTsKKyAgICAgICAgY2FsbERhdGEuanMuc2NvcGUgPSB0aGlzT2JqZWN0LT5zY29w
ZSgpOwogICAgIH0KLSAgICBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSB0aGlzT2Jq
ZWN0LT5qc0V4ZWN1dGFibGUoKTsKLSAgICBjYWxsRGF0YS5qcy5zY29wZSA9IHRoaXNPYmplY3Qt
PnNjb3BlKCk7Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpKUzsKKworICAgIHJldHVybiBjYWxsRGF0
YTsKIH0KIAogY2xhc3MgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIHsKQEAgLTY5MSwyNCArNjk2
LDI2IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIC8vIEVDTUEgMTMuMi4yIFtbQ29u
c3RydWN0XV0KLUNvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqIGNlbGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDYWxsRGF0YSBKU0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKKyAgICBDYWxsRGF0YSBjb25z
dHJ1Y3REYXRhOwogCisgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkgPT0gY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9u
ZTsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5u
YXRpdmVDb25zdHJ1Y3RvcigpOwotICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsK
KyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCkgIT0gY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdERhdGEudHlwZSA9
IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IHRoaXNPYmplY3QtPm5hdGl2ZUNvbnN0cnVjdG9yKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpOworICAgICAgICBpZiAoZnVuY3Rpb25F
eGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgIT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDYWxsRGF0YTo6
VHlwZTo6SlM7CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZTsKKyAgICAgICAgICAgIGNvbnN0cnVjdERhdGEuanMuc2Nv
cGUgPSB0aGlzT2JqZWN0LT5zY29wZSgpOworICAgICAgICB9CiAgICAgfQogCi0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKTsKLSAgICBpZiAoZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0g
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KQotICAgICAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZTo6Tm9uZTsKLQotICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxl
ID0gZnVuY3Rpb25FeGVjdXRhYmxlOwotICAgIGNvbnN0cnVjdERhdGEuanMuc2NvcGUgPSB0aGlz
T2JqZWN0LT5zY29wZSgpOwotICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpKUzsKKyAgICByZXR1
cm4gY29uc3RydWN0RGF0YTsKIH0KIAogU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShW
TSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKaW5kZXggN2IwMmE5NWRmMDA2Mzg5NDVjZjlhNjg3YmJmN2M0MjU1ZmU5YjQ1
OS4uMjQzMDY4ZGU4ZGRjOTYwMmRkZDQyYjY0YmNmMTJmMDYxOTc5Y2FhMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTE4LDggKzExOCw4IEBAIHB1
YmxpYzoKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbigpOwogICAgIFRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDZWxsKik7CiAKICAgICBzdGF0aWMg
aW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5j
cHAKaW5kZXggZTFmMGFiNTQ2NDJmNWEwNWI5MDY3Yjg5MzE3YmU1NjQ4NGRjZTM5MS4uZWVjYTgz
NmY4NDMwMGI1YTAwNDI0NzYxNzcxYzBmMDI5YjQxZWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcApAQCAtNjIsMTYgKzYy
LDE1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6dGhlbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0CiAKICAgICBKU09iamVjdCogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50aGVuUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9
IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlw
ZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChvbkZ1bGZpbGxlZCA/IG9uRnVsZmlsbGVk
IDoganNVbmRlZmluZWQoKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChvblJlamVjdGVkID8gb25S
ZWplY3RlZCA6IGpzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJm
bG93ZWQoKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxKU0ludGVy
bmFsUHJvbWlzZSo+KGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBq
c0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwCmluZGV4IGIwM2Nj
MGNlNzNmMDZiYzU3ODNjZGUxZWI3OTU3ZThjOTZlNTc2YjkuLjNhNTNmY2I3ZTBlODgyZGVkOTI1
ZDg1NWExMjMwN2VkYWRjMGM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWljcm90YXNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01pY3JvdGFzay5jcHAKQEAgLTc2LDkgKzc2LDggQEAgdm9pZCBKU01pY3JvdGFzazo6cnVu
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAg
IENhbGxEYXRhIGhhbmRsZXJDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBoYW5kbGVyQ2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSk7Ci0gICAgQVNT
RVJUKGhhbmRsZXJDYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBoYW5kbGVy
Q2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgbV9qb2IuZ2V0KCkpOworICAgIEFTU0VSVChoYW5k
bGVyQ2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBoYW5kbGVyQXJndW1lbnRzOwogICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IG1heEFyZ3VtZW50czsgKytpbmRleCkgewpAQCAtOTMsNyArOTIsNyBAQCB2
b2lkIEpTTWljcm90YXNrOjpydW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBp
ZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKSkKICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5kZWJ1Z2dlcigpLT53aWxsUnVuTWljcm90YXNrKCk7CiAKLSAgICBwcm9maWxlZENh
bGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCks
IGhhbmRsZXJDYWxsVHlwZSwgaGFuZGxlckNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBoYW5kbGVy
QXJndW1lbnRzKTsKKyAgICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFz
b246Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSwganNVbmRlZmluZWQo
KSwgaGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IDI3NGQyY2NmOTUzMTI4OWY2MGVkNTlkOGNhYzU1ZjcxYTlhNzkzYzQuLjg5YjM0Njc2MWY2
YzNjZDA1MmQ1MzllNTAzMWFhZTM1NDY1OGQ4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTEzMSwxNCArMTMxLDEzIEBAIEpT
QXJyYXkqIEpTTW9kdWxlTG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNPYmplY3QqPihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5kZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2Fs
bERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0
byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQo
Y2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwogCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU0FycmF5Kj4odm0sIHJlc3VsdCk7CkBAIC0xNTEsOSArMTUwLDggQEAgSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6cHJvdmlkZUZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUga2V5LAogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJv
dmlkZUZldGNoUHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxU
eXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxs
RGF0YSh2bSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRh
OjpUeXBlOjpOb25lKTsKIAogICAgIFNvdXJjZUNvZGUgc291cmNlIHsgc291cmNlQ29kZSB9Owog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTE2MSw3ICsxNTksNyBAQCBK
U1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBrZXksCiAgICAgYXJndW1lbnRzLmFwcGVuZChKU1NvdXJjZUNvZGU6
OmNyZWF0ZSh2bSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFz
T3ZlcmZsb3dlZCgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7CiB9CiAKIEpTSW50ZXJuYWxQcm9taXNl
KiBKU01vZHVsZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCkBAIC0xNzEsOSArMTY5LDggQEAgSlNJbnRlcm5hbFByb21pc2Uq
IEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvYWRBbmRFdmFs
dWF0ZU1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6Omdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2Fs
bERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlTmFtZSk7CkBAIC0xODEsNyArMTc4LDcgQEAg
SlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNo
ZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1Zh
bHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRl
cm5hbFByb21pc2UqPihwcm9taXNlKTsKIH0KQEAgLTE5Myw5ICsxOTAsOCBAQCBKU0ludGVybmFs
UHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9h
ZE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
SlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENh
bGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwog
ICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlTmFtZSk7CkBAIC0yMDMsNyArMTk5LDcgQEAgSlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIp
OwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVl
IHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5h
bFByb21pc2UqPihwcm9taXNlKTsKIH0KQEAgLTIxNSwxNiArMjExLDE1IEBAIEpTVmFsdWUgSlNN
b2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhCiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3Qq
PihnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5saW5r
QW5kRXZhbHVhdGVNb2R1bGVQdWJsaWNOYW1lKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6
OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0g
Q2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlS2V5KTsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQo
KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERh
dGEsIHRoaXMsIGFyZ3VtZW50cykpOwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVM
b2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcikKQEAgLTIzNCw5ICsyMjksOCBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNN
b2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogCiAgICAgYXV0byogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW1wb3J0TW9kdWxl
UHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwg
ZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpO
b25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVu
dHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBtb2R1bGVLZXkuaW1wbCgpKSk7CkBAIC0yNDQsNyArMjM4
LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9k
dWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlw
dEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAg
ICBKU1ZhbHVlIHByb21pc2UgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHByb21pc2UgPSBjYWxs
KGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBqc0Nhc3Q8
SlNJbnRlcm5hbFByb21pc2UqPihwcm9taXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYjM3NDU4Yjc3NmM5YzRkMWFhNGE4ZTU0MjBh
OWI5MDFjOTFhM2I2Zi4uZGJkN2IyZTFhOTA2MjZmYjkwN2IwOWI0ZDc1NmUzOTAyN2Q4NDIyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTEy
MSwxMyArMTIxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmRlbnQoKTsKICAgICB2b2lkIHVu
aW5kZW50KCk7CiAgICAgdm9pZCBzdGFydE5ld0xpbmUoU3RyaW5nQnVpbGRlciYpIGNvbnN0Owot
ICAgIGJvb2wgaXNDYWxsYWJsZVJlcGxhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYWNlckNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lOyB9CisgICAgYm9vbCBpc0NhbGxhYmxlUmVwbGFjZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlcGxhY2VyQ2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZTsgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGNvbnN0IG1fZ2xvYmFsT2JqZWN0Owog
ICAgIEpTVmFsdWUgbV9yZXBsYWNlcjsKICAgICBib29sIG1fdXNpbmdBcnJheVJlcGxhY2VyIHsg
ZmFsc2UgfTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5h
bWVzOwotICAgIENhbGxUeXBlIG1fcmVwbGFjZXJDYWxsVHlwZSB7IENhbGxUeXBlOjpOb25lIH07
CiAgICAgQ2FsbERhdGEgbV9yZXBsYWNlckNhbGxEYXRhOwogICAgIFN0cmluZyBtX2dhcDsKIApA
QCAtMjMxLDggKzIzMCw4IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHJlcGxhY2VyLCBKU1ZhbHVlCiAgICAgaWYgKG1fcmVw
bGFjZXIuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogcmVwbGFjZXJPYmplY3QgPSBh
c09iamVjdChtX3JlcGxhY2VyKTsKIAotICAgICAgICBtX3JlcGxhY2VyQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YSh2bSwgcmVwbGFjZXJPYmplY3QsIG1fcmVwbGFjZXJDYWxsRGF0YSk7Ci0gICAgICAg
IGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgbV9y
ZXBsYWNlckNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VyT2JqZWN0KTsKKyAgICAg
ICAgaWYgKG1fcmVwbGFjZXJDYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7
CiAgICAgICAgICAgICBib29sIGlzQXJyYXlSZXBsYWNlciA9IEpTQzo6aXNBcnJheShnbG9iYWxP
YmplY3QsIHJlcGxhY2VyT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsICk7CiAgICAgICAgICAgICBpZiAoaXNBcnJheVJlcGxhY2VyKSB7CkBAIC0zMDQsMTUg
KzMwMywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU1Zh
bHVlIGJhc2VWYWx1ZSwgY29uc3QgUHJvcGVydHlOYW1lRgogICAgIEpTVmFsdWUgdG9KU09ORnVu
Y3Rpb24gPSBiYXNlVmFsdWUuZ2V0KG1fZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50
b0pTT04pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCB0
b0pTT05GdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHRvSlNPTkZ1bmN0aW9u
KTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGJhc2VWYWx1ZTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgYXJncy5hcHBlbmQocHJvcGVydHlOYW1lLnZhbHVlKG1fZ2xvYmFsT2JqZWN0KSk7CiAgICAg
QVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0b0pTT05GdW5jdGlvbiksIGNhbGxU
eXBlLCBjYWxsRGF0YSwgYmFzZVZhbHVlLCBhcmdzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0b0pTT05GdW5jdGlvbiksIGNh
bGxEYXRhLCBiYXNlVmFsdWUsIGFyZ3MpKTsKIH0KIAogU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJl
c3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIb2xkZXImIGhvbGRlciwgY29uc3QgUHJvcGVy
dHlOYW1lRm9yRnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCkBAIC0zMzMsNyArMzMxLDcgQEAg
U3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogICAgICAgICBBU1NFUlQoaG9sZGVy
Lm9iamVjdCgpKTsKLSAgICAgICAgdmFsdWUgPSBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBtX3JlcGxh
Y2VyLCBtX3JlcGxhY2VyQ2FsbFR5cGUsIG1fcmVwbGFjZXJDYWxsRGF0YSwgaG9sZGVyLm9iamVj
dCgpLCBhcmdzKTsKKyAgICAgICAgdmFsdWUgPSBjYWxsKG1fZ2xvYmFsT2JqZWN0LCBtX3JlcGxh
Y2VyLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlci5vYmplY3QoKSwgYXJncyk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZ2lmeUZhaWxlZCk7CiAgICAgfQogCkBA
IC01OTEsMTAgKzU4OSw5IEBAIGNsYXNzIFdhbGtlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2Fsa2VyKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKIHB1YmxpYzoKLSAg
ICBXYWxrZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGZ1bmN0aW9u
LCBDYWxsVHlwZSBjYWxsVHlwZSwgQ2FsbERhdGEgY2FsbERhdGEpCisgICAgV2Fsa2VyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbERhdGEgY2Fs
bERhdGEpCiAgICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICAgICAs
IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgICAgICwgbV9jYWxsVHlwZShjYWxsVHlwZSkKICAg
ICAgICAgLCBtX2NhbGxEYXRhKGNhbGxEYXRhKQogICAgIHsKICAgICB9CkBAIC02MDYsMTQgKzYw
MywxMyBAQCBwcml2YXRlOgogICAgICAgICBhcmdzLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgICAg
IGFyZ3MuYXBwZW5kKHVuZmlsdGVyZWQpOwogICAgICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwobV9nbG9iYWxPYmplY3QsIG1fZnVuY3Rpb24s
IG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIHRoaXNPYmosIGFyZ3MpOworICAgICAgICByZXR1cm4g
Y2FsbChtX2dsb2JhbE9iamVjdCwgbV9mdW5jdGlvbiwgbV9jYWxsRGF0YSwgdGhpc09iaiwgYXJn
cyk7CiAgICAgfQogCiAgICAgZnJpZW5kIGNsYXNzIEhvbGRlcjsKIAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBtX2dsb2JhbE9iamVjdDsKICAgICBKU09iamVjdCogbV9mdW5jdGlvbjsKLSAgICBDYWxs
VHlwZSBtX2NhbGxUeXBlOwogICAgIENhbGxEYXRhIG1fY2FsbERhdGE7CiB9OwogCkBAIC04MDAs
MTIgKzc5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQ
YXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIAogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERh
dGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIGlmIChjYWxsRGF0YS50eXBlID09
IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVu
ZmlsdGVyZWQpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBXYWxrZXIgd2Fsa2VyKGdsb2Jh
bE9iamVjdCwgYXNPYmplY3QoZnVuY3Rpb24pLCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgIFdh
bGtlciB3YWxrZXIoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChmdW5jdGlvbiksIGNhbGxEYXRhKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdhbGtlci53YWxrKHVuZmlsdGVyZWQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDljNWQ1
NWE5Mzg4ZGM2MTgxNWM2ZWY0Njc1NmU3N2EwZGFiMGIyN2YuLmUzY2UyOGRjZGYzMjRlNjc4MWFm
Nzg5MGU2MjNmNDBkZDY1YmRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTc2NywxMCArNzY3LDkgQEAgYm9vbCBvcmRpbmFyeVNldFNsb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW0K
ICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNl
dHRlck9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzZXR0ZXJPYmplY3QsIGNh
bGxEYXRhKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHNldHRlck9iamVj
dCk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBzZXR0ZXJP
YmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgcmVjZWl2ZXIsIGFyZ3MpOworICAgIGNhbGwoZ2xv
YmFsT2JqZWN0LCBzZXR0ZXJPYmplY3QsIGNhbGxEYXRhLCByZWNlaXZlciwgYXJncyk7CiAKICAg
ICAvLyA5LjEuOS4xLTkgUmV0dXJuIHRydWUuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTE3LDkg
KzIxMTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICBpZiAoZnVuY3Rpb24uaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiBtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5
cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpUYWtlc0hpbnQp
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3ltYm9s
LnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwiX3MpOwog
ICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCk7CkBAIC0yMTQzLDcgKzIxNDEsNyBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIH0KICAgICBBU1NFUlQoIWNhbGxBcmdzLmhhc092
ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjb25zdF9jYXN0PEpTT2JqZWN0Kj4ob2JqZWN0
KSwgY2FsbEFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsRGF0YSwgY29uc3RfY2FzdDxKU09iamVjdCo+KG9iamVjdCksIGNhbGxBcmdz
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzY29wZS5leGNlcHRpb24oKSk7CiAg
ICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYgKHJlc3VsdC5pc09i
amVjdCgpKQpAQCAtMjI0MCw5ICsyMjM4LDggQEAgYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZQogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghaGFzSW5z
dGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGhhc0luc3RhbmNlVmFsdWUgIT0gZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7Ci0g
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGhhc0luc3RhbmNlVmFsdWUsIGNhbGxEYXRhKTsKLSAgICAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gY2FsbERhdGEg
PSBKU0M6OmdldENhbGxEYXRhKHZtLCBoYXNJbnN0YW5jZVZhbHVlKTsKKyAgICAgICAgaWYgKGNh
bGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFy
YW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCB0aGlz
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTIyNTAsNyArMjI0
Nyw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2Jh
bE9iamVjdCwgaGFzSW5zdGFuY2VWYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmdz
KTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaGFzSW5zdGFu
Y2VWYWx1ZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3MpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CiAgICAgfQpAQCAtMzg2OSw3ICszODY2LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KIAogLy8gSW1wbGVtZW50cyBHZXRNZXRob2QoTywgUCkgaW4gc2VjdGlvbiA3LjMuOSBv
ZiB0aGUgc3BlYy4KIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2V0bWV0aG9kCi1KU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRo
b2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbERhdGEmIGNhbGxEYXRhLCBDYWxs
VHlwZSYgY2FsbFR5cGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKK0pTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhvZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRGF0YSYgY2FsbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
Mzg4NSw4ICszODgyLDggQEAgSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2EKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgY2FsbFR5cGUgPSBtZXRob2QuYXNDZWxsKCkt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEobWV0aG9kLmFzQ2VsbCgpLCBjYWxsRGF0YSk7
Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgY2FsbERhdGEgPSBK
U0M6OmdldENhbGxEYXRhKHZtLCBtZXRob2QpOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYTY4
NzhhNmE0YjQzYjM4ZDU4ZTNmMzkyODY5M2FkMzcwMjc5MmUxMS4uNTYzM2Y0MjVhMmQzNjYyMjEz
OTQ2ZDRlYTMxOWMyYTcxNzE4NWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC05MDAsNyArOTAwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJm1f
YnV0dGVyZmx5OwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZ2V0TWV0
aG9kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbERhdGEmLCBDYWxsVHlwZSYsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSBnZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICBib29sIGNhblBlcmZv
cm1GYXN0UHV0SW5saW5lKFZNJiwgUHJvcGVydHlOYW1lKTsKICAgICBib29sIGNhblBlcmZvcm1G
YXN0UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNTFlMGJmMzc4NmUxNzY4NjVhODZm
YzkxNjU2NjJlOGU1M2Q1YzIzNC4uYWI0NDg1MDlhNTFlNWFjNDg5ZjkzMWViODJiNmQ1ZGNiNTBl
ODIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKQEAgLTUxMSwyNyArNTExLDI3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25E
YXRhUHJvcGVydHlNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
cmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSwgQ2FsbERhdGEmIGNhbGxEYXRhKQoraW5saW5lIENhbGxEYXRhIGdldENh
bGxEYXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CiAgICAgaWYgKGNlbGwtPnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkKLSAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmdldENhbGxEYXRh
KGNlbGwsIGNhbGxEYXRhKTsKLSAgICBDYWxsVHlwZSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJs
ZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQocmVzdWx0ID09
IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgICAgIHJldHVy
biBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShjZWxsKTsKKyAgICBDYWxsRGF0YSByZXN1bHQgPSBj
ZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwpOworICAgIEFTU0VSVChyZXN1
bHQudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQoraW5saW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlKQogewogICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlOjpOb25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2VsbCogY2VsbCA9IHZh
bHVlLmFzQ2VsbCgpOwogICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCi0g
ICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVj
dERhdGEpOwotICAgIENvbnN0cnVjdFR5cGUgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0p
LT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVjdERhdGEpOwotICAgIEFTU0VSVChyZXN1
bHQgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOworICAg
ICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKKyAgICBDYWxs
RGF0YSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2Vs
bCk7CisgICAgQVNTRVJUKHJlc3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lIHx8IHZh
bHVlLmlzVmFsaWRDYWxsZWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggMDljMzZlNWRlMjk3MGJh
MDc3MTA4MmE2MTFkNGM3MTdlYThlMzY1NS4uZTY4YjFjODRkNmJjNTRhNDVlNDEwNmQ0MTIyMTkw
MDQwMzEwY2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
Y3BwCkBAIC0xMDcsMTQgKzEwNywxMyBAQCBKU1Byb21pc2U6OkRlZmVycmVkRGF0YSBKU1Byb21p
c2U6OmNyZWF0ZURlZmVycmVkRGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTRnVuY3Rpb24qIG5l
d1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPm5ld1Byb21pc2VDYXBh
YmlsaXR5RnVuY3Rpb24oKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShnbG9i
YWxPYmplY3QtPnZtKCksIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOworICAgIEFTU0VS
VChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHByb21pc2VDb25z
dHJ1Y3Rvcik7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBK
U1ZhbHVlIGRlZmVycmVkID0gY2FsbChnbG9iYWxPYmplY3QsIG5ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsK
KyAgICBKU1ZhbHVlIGRlZmVycmVkID0gY2FsbChnbG9iYWxPYmplY3QsIG5ld1Byb21pc2VDYXBh
YmlsaXR5RnVuY3Rpb24sIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBEZWZlcnJlZERhdGEgcmVz
dWx0OwpAQCAtMTM0LDEzICsxMzMsMTIgQEAgSlNQcm9taXNlKiBKU1Byb21pc2U6OnJlc29sdmVk
UHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHUKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVGdW5jdGlvbigpOwotICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0
YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUp
OwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5h
cHBlbmQodmFsdWUpOwotICAgIGF1dG8gcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0cnVjdG9y
KCksIGFyZ3VtZW50cyk7CisgICAgYXV0byByZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb24sIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1Y3RvcigpLCBhcmd1
bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIEFT
U0VSVChyZXN1bHQuaW5oZXJpdHM8SlNQcm9taXNlPih2bSkpOwogICAgIHJldHVybiBqc0Nhc3Q8
SlNQcm9taXNlKj4ocmVzdWx0KTsKQEAgLTE0OCwxNiArMTQ2LDE1IEBAIEpTUHJvbWlzZSogSlNQ
cm9taXNlOjpyZXNvbHZlZFByb21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxsRnVuY3Rpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbiwgSlNQcm9taXNlKiBwcm9taXNlLCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKGdsb2JhbE9iamVjdC0+dm0oKSwgZnVuY3Rpb24pOworICAg
IEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHByb21p
c2UpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgIEFTU0VSVCghYXJndW1lbnRz
Lmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKyAgICBjYWxsKGds
b2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMp
OwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBlYmFkMDI5NmU4MTdkOTU0MDYxOGE3Y2Y4
M2JmNjU3MWFiMDRhODA0Li4yMDk3ODkyODEzYmZmOWE3OTAyNzVkYzYxYmZjN2EzYTg2NDgyYWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3Iu
Y3BwCkBAIC04OCw5ICs4OCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgSlNWYWx1
ZSBhZGRlckZ1bmN0aW9uID0gbWFwLT5KU09iamVjdDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5j
dGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gYWRkZXJGdW5jdGlvbkNhbGxEYXRhID0g
Z2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOworICAgIGlmIChhZGRlckZ1bmN0aW9uQ2Fs
bERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBz
Y29wZS5yZWxlYXNlKCk7CkBAIC0xMTIsNyArMTExLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEMKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJn
dW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsVHlw
ZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBtYXAsIGFyZ3VtZW50cyk7CisgICAgICAgIGNhbGwo
Z2xvYmFsT2JqZWN0LCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIG1hcCwg
YXJndW1lbnRzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CmluZGV4IDVlZTQxZmExMjk0MDAwY2ZhMDYyZTRmMzFlZjBiY2E2MzY5Yzg0OGEuLjZmZDY3ZGY5
OGE1MjFlYWJjMmFhMDczNzljMGMzZjVmZDRhY2ZlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMjk5LDEzICsyOTksMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIElmIElzQ2FsbGFibGUodG9TdHJpbmcpIGlz
IGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCi0gICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9TdHJpbmcsIGNh
bGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b1N0cmluZyk7CisgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIHRvU3RyaW5nIHBhc3Npbmcg
dGhlIHRoaXMgdmFsdWUgYW5kIG5vIGFyZ3VtZW50cy4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgdG9TdHJpbmcsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCB0b1N0
cmluZywgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCA2ZTRiMTVjMmQwNzNlZmZl
ODk3MTRlNjA5ZDE1NGI5MzFmZmMxM2I1Li5kYTcwYmQzODJkZTMwNDI0NWU3ZWRlMzYxNWNhN2Qy
NzhkNTI0MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCkBAIC0xMzgsOCArMTM4LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5T2JqZWN0KiBwcm94eU8KIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVl
IGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
Y2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmdldCwgIidnZXQnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIG9iamVjdCBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
Z2V0SGFuZGxlciA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2
bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICInZ2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxl
ciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGdldEhhbmRsZXIuaXNVbmRlZmluZWQoKSkKQEAgLTE1
MCw3ICsxNDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJveHlPYmplY3QqIHByb3h5TwogICAgIGFyZ3VtZW50cy5hcHBl
bmQoaWRlbnRpZmllclRvU2FmZVB1YmxpY0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHJlY2VpdmVy
KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUg
dHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBnZXRIYW5kbGVyLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIGdldEhhbmRsZXIsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKQEAgLTIxMyw4ICsyMTIsNyBAQCBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5k
bGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
OwotICAgIEpTVmFsdWUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kID0gaGFuZGxlci0+
Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmll
cih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5RGVzY3Jp
cHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9z
KTsKKyAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImdl
dE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcHJv
cGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGdldE93blByb3BlcnR5
RGVzY3JpcHRvck1ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKSk7CkBAIC0yMjMsNyArMjIx
LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdl
dCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChpZGVudGlmaWVyVG9TYWZlUHVibGljSlNWYWx1ZSh2
bSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0
ID0gY2FsbChnbG9iYWxPYmplY3QsIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZCwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJl
c3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRob2Qs
IGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpICYmICF0
cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKQEAgLTMxNyw4ICszMTUsNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5
cGU7Ci0gICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHBy
b3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAg
SlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxs
RGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCAiJ2hhcycgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHkoKSk7
CkBAIC0zMjcsNyArMzI0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIGFyZ3VtZW50
cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGlkZW50aWZpZXJUb1NhZmVQ
dWJsaWNKU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1Zh
bHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaGFzTWV0aG9kLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0g
Y2FsbChnbG9iYWxPYmplY3QsIGhhc01ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50
cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgYm9vbCB0
cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKQEAg
LTQyMCw4ICs0MTcsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVgogCiAgICAgSlNPYmplY3Qq
IGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUgc2V0TWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zZXQsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxl
ciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgc2V0TWV0aG9kID0gaGFuZGxl
ci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPnNl
dCwgIidzZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJs
ZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpCkBAIC00MzMsNyArNDI5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1YKICAgICBh
cmd1bWVudHMuYXBwZW5kKHB1dFZhbHVlKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRoaXNWYWx1
ZSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVl
IHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIHNldE1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGJvb2wgdHJhcFJl
c3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpAQCAtNTEzLDE1ICs1MDksMTMgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpT
T2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxs
VHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwg
ImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBi
ZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5Iiks
ICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJs
ZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoYXBwbHlN
ZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERh
dGEodGFyZ2V0LCBjYWxsRGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGNhbGxGcmFtZSkpKSk7CisgICAgICAg
IGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0KTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2Jq
ZWN0LCB0YXJnZXQsIGNhbGxEYXRhLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGNh
bGxGcmFtZSkpKSk7CiAgICAgfQogCiAgICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RB
cnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihu
dWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKQEAgLTUzMSwyMCArNTI1LDE4IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogICAgIGFy
Z3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJm
bG93ZWQoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRs
ZXIsIGFyZ3VtZW50cykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVy
LCBhcmd1bWVudHMpKSk7CiB9CiAKLUNhbGxUeXBlIFByb3h5T2JqZWN0OjpnZXRDYWxsRGF0YShK
U0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIFByb3h5T2JqZWN0Ojpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
UHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYg
KCFwcm94eS0+bV9pc0NhbGxhYmxlKSB7Ci0gICAgICAgIGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IG51bGxwdHI7Ci0gICAgICAgIGNhbGxEYXRhLmpzLnNjb3BlID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpOb25lOworICAgIGlmIChwcm94eS0+bV9pc0NhbGxh
YmxlKSB7CisgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwor
ICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBwZXJmb3JtUHJveHlDYWxsOwogICAg
IH0KLQotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Qcm94eUNhbGw7Ci0g
ICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNTY0
LDE1ICs1NTYsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9y
bVByb3h5Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlw
ZSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwgIidjb25zdHJ1Y3QnIHByb3BlcnR5
IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1
ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxs
RGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJjb25zdHJ1Y3QiKSwgIidjb25zdHJ1Y3QnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3Qq
IHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoY29uc3RydWN0TWV0aG9kLmlzVW5k
ZWZpbmVkKCkpIHsKLSAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgICAg
ICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZ2xvYmFs
T2JqZWN0LCB0YXJnZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIEFyZ0xpc3QoY2Fs
bEZyYW1lKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpKTsKKyAgICAgICAgYXV0byBjb25zdHJ1
Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgdGFyZ2V0KTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGds
b2JhbE9iamVjdCwgdGFyZ2V0LCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGNhbGxGcmFtZSksIGNh
bGxGcmFtZS0+bmV3VGFyZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgSlNBcnJheSogYXJnQXJyYXkg
PSBjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChjYWxsRnJhbWUpKTsKQEAgLTU4MiwyNCArNTcy
LDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXJndW1lbnRzLmFwcGVuZChhcmdB
cnJheSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gY2FsbChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxP
YmplY3QsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYg
KCFyZXN1bHQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0
JyBtZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCJfcyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCi1Db25zdHJ1Y3RUeXBlIFByb3h5T2JqZWN0OjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NhbGxE
YXRhIFByb3h5T2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBD
YWxsRGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGNlbGwpOwotICAgIGlmICghcHJveHktPm1faXNDb25zdHJ1Y3RpYmxlKSB7
Ci0gICAgICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsK
LSAgICAgICAgY29uc3RydWN0RGF0YS5qcy5zY29wZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlOjpOb25lOworICAgIGlmIChwcm94eS0+bV9pc0NvbnN0cnVjdGlibGUp
IHsKKyAgICAgICAgY29uc3RydWN0RGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsK
KyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBwZXJmb3JtUHJveHlDb25z
dHJ1Y3Q7CiAgICAgfQotCi0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBwZXJm
b3JtUHJveHlDb25zdHJ1Y3Q7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAg
cmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZWZhdWx0RGVs
ZXRlRnVuY3Rpb24+CkBAIC02MjUsOCArNjEzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUK
IAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVl
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBK
U1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9i
amVjdCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0ZVByb3Bl
cnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNo
b3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9
IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmll
cih2bSwgImRlbGV0ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEg
UHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJn
ZXQoKTsKICAgICBpZiAoZGVsZXRlUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTYz
Niw3ICs2MjMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIGFyZ3VtZW50cy5hcHBl
bmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGlkZW50aWZpZXJUb1NhZmVQdWJsaWNK
U1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7
CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHRy
YXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZGVsZXRlUHJvcGVydHlNZXRob2QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1
bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgZGVsZXRlUHJvcGVydHlNZXRob2QsIGNhbGxEYXRhLCBo
YW5kbGVyLCBhcmd1bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKIAogICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGds
b2JhbE9iamVjdCk7CkBAIC03MDcsOCArNjk0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bVByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBK
U09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBw
cmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3Qs
IGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9u
cyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBz
aG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgcHJldmVudEV4dGVuc2lvbnNNZXRo
b2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50
aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9w
ZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0g
dGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKHByZXZlbnRFeHRlbnNpb25zTWV0aG9kLmlzVW5kZWZp
bmVkKCkpCkBAIC03MTcsNyArNzAzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVByZXZl
bnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJl
c3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIEpTVmFsdWUgdHJhcFJlc3Vs
dCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCwgY2FsbERhdGEs
IGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCiAgICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3VsdC50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKQEAgLTc1OSw4ICs3NDUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU09i
amVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBpc0V4
dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0
YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiaXNFeHRlbnNpYmxlIiksICInaXNFeHRl
bnNpYmxlJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUi
X3MpOworICAgIEpTVmFsdWUgaXNFeHRlbnNpYmxlTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9k
KGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiaXNFeHRlbnNpYmxl
IiksICInaXNFeHRlbnNpYmxlJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
IAogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTc3MCw3ICs3NTUs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCBp
c0V4dGVuc2libGVNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgaXNFeHRlbnNp
YmxlTWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0
cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwpAQCAtODI1LDggKzgxMCw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRs
ZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICInZGVmaW5lUHJvcGVydHknIHByb3BlcnR5IG9mIGEg
UHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWZp
bmVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxE
YXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eSwgIidkZWZpbmVQcm9wZXJ0eScg
cHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBpZiAoZGVmaW5lUHJv
cGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTg0MSw3ICs4MjUsNyBAQCBib29sIFByb3h5
T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydAogICAgIGFyZ3VtZW50cy5hcHBlbmQoaWRlbnRpZmllclRvU2FmZVB1Ymxp
Y0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkp
KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGRlc2NyaXB0b3JPYmplY3QpOwogICAgIEFTU0VSVCgh
YXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2Fs
bChnbG9iYWxPYmplY3QsIGRlZmluZVByb3BlcnR5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9i
YWxPYmplY3QsIGRlZmluZVByb3BlcnR5TWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1l
bnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBib29s
IHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwpA
QCAtOTIyLDggKzkwNiw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAKICAgICBKU09iamVj
dCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGU7Ci0gICAgSlNWYWx1ZSBvd25LZXlz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIGNhbGxU
eXBlLCBtYWtlSWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgIidvd25LZXlzJyBwcm9wZXJ0eSBv
ZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
b3duS2V5c01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRh
LCBtYWtlSWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgIidvd25LZXlzJyBwcm9wZXJ0eSBvZiBh
IFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRh
cmdldCgpOwogICAgIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSk7CkBAIC05MzYsNyArOTE5LDcgQEAgdm9pZCBQcm94eU9iamVj
dDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGUKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1l
bnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIG93bktleXNN
ZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1Zh
bHVlIHRyYXBSZXN1bHQgPSBjYWxsKGdsb2JhbE9iamVjdCwgb3duS2V5c01ldGhvZCwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiB1bmNoZWNrZWRSZXN1
bHRLZXlzOwpAQCAtMTEwMSw4ICsxMDg0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNl
dFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3QKIAog
ICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICBKU1Zh
bHVlIHNldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVj
dCwgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgInNldFByb3RvdHlwZU9m
IiksICInc2V0UHJvdG90eXBlT2YnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3Vs
ZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBzZXRQcm90b3R5cGVPZk1ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2
bSwgInNldFByb3RvdHlwZU9mIiksICInc2V0UHJvdG90eXBlT2YnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdl
dCgpOwpAQCAtMTExMyw3ICsxMDk1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFBy
b3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3QKICAgICBh
cmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChwcm90b3R5cGUp
OwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNWYWx1ZSB0
cmFwUmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldFByb3RvdHlwZU9mTWV0aG9kLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSB0cmFwUmVz
dWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIHNldFByb3RvdHlwZU9mTWV0aG9kLCBjYWxsRGF0YSwg
aGFuZGxlciwgYXJndW1lbnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpOwpAQCAtMTE2Niw4ICsxMTQ4LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6
cGVyZm9ybUdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBj
YWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0UHJvdG90eXBlT2YiKSwg
IidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxl
ci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAi
Z2V0UHJvdG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdz
IGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwpA
QCAtMTE3Nyw3ICsxMTU4LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3Rv
dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgQVNTRVJU
KCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBj
YWxsKGdsb2JhbE9iamVjdCwgZ2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0
YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQgPSBjYWxsKGds
b2JhbE9iamVjdCwgZ2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1
bWVudHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAo
IXRyYXBSZXN1bHQuaXNPYmplY3QoKSAmJiAhdHJhcFJlc3VsdC5pc051bGwoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXggZWU1YmQ5MDU4Y2Zh
ODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYi4uY2MzNzcyZTMzZGQ1ODc3ZDBkY2E2YTk0YmNj
YTczOTIzNjNmOWQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDYWxs
RGF0YShKU0NlbGwqKTsKKyAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDRiYzhkNGMxZWFlODhlZTMxMDQ3YzVlYzczODRl
ZDM3ODRmNTM4YTMuLjMzODdjZmVmOWVhM2UyMGZjZmM4OWVjNWFiY2ZjNjc3ODEzZTkxMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBA
IC05Niw5ICs5Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKCF0YXJnZXQu
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKIAotICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25z
dHJ1Y3REYXRhKHZtLCB0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwotICAgIGlmIChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0
Q29uc3RydWN0RGF0YSh2bSwgdGFyZ2V0KTsKKyAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09
IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOwogCiAgICAgSlNW
YWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CkBAIC0xMjMsNyArMTIyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGds
b2JhbE9iamVjdCwgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVu
dHMsIG5ld1RhcmdldCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGNvbnN0cnVjdERhdGEsIGFy
Z3VtZW50cywgbmV3VGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IGJlYzE3NjA3ZGMxZjI3
ZDMzZDNiNDRkZWFmYmYzYWViMmRlN2QzOTcuLjIxNDcwMjI3ZjMzNmJlYWIwOWY0NWQ2ZTFiNjg2
ZDczYjU4MDJjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwCkBAIC01MjMsMTAgKzUyMyw4IEBAIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhjb25zdCBBYnN0cmFjdExvY2tlciYp
CiAgICAgICAgICAgICBhdXRvIHNldEZhbGxiYWNrRnJhbWVUeXBlID0gWyZdIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWFscmVhZHlIYXNFeGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICBG
cmFtZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBlOjpVbmtub3duOwotICAgICAgICAgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAg
ICAgICAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2VsbCwgY2Fs
bERhdGEpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkK
KyAgICAgICAgICAgICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVl
Q2VsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5
cGU6Ok5hdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRnJhbWVUeXBlOjpIb3N0
OwogCiAgICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5mcmFtZVR5cGUgPSByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NjkwOTk4ZmVhN2M2OWVmMGY3ODJhMzM0MmNmOTk5NzNkYWQ0ZDRjZi4uNDI3NjU0YTBhZTU4Yzgx
NmUxMDRiYTQ1N2Q1YTkyZWQwYjA2MmExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtODgsOSArODgsOCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQwogICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHNldC0+SlNPYmplY3Q6
OmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBDYWxsRGF0YSBhZGRl
ckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7Ci0g
ICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkp
CisgICAgYXV0byBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJG
dW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09
IENhbGxEYXRhOjpUeXBlOjpOb25lKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CkBAIC05OCw3ICs5Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChu
ZXh0VmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwot
ICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEsIHNldCwgYXJndW1lbnRzKTsKKyAgICAgICAg
Y2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwg
c2V0LCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKaW5kZXggNGFjNTQxNmI4MTRhNzA2MmMxYjk4MDBkMTdmOGIzYmIyMmZlMjNjZS4uNTBl
MmIyYTUyOTUwOWRlY2Y0OGYyOTk1YjliMTQyOWM5MGM4MDQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC01MTQsOCArNTE0
LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlbW92ZVVzaW5nUmVnRXhwU2Vh
cmNoKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICBWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1N0cmluZyogc3Ry
aW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEsCi0gICAgQ2FsbFR5
cGUgY2FsbFR5cGUsIFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIEpTVmFsdWUgcmVwbGFjZVZh
bHVlKQorICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTU3RyaW5nKiBzdHJpbmcsIEpTVmFsdWUgc2VhcmNoVmFsdWUsIGNvbnN0
IENhbGxEYXRhJiBjYWxsRGF0YSwKKyAgICBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBKU1Zh
bHVlIHJlcGxhY2VWYWx1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmlu
ZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAgICAgICByZWdFeHBPYmplY3QtPnNldExh
c3RJbmRleChnbG9iYWxPYmplY3QsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKIAotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUg
JiYgIXJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgpKSAKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgp
KQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZW1vdmVVc2luZ1JlZ0V4
cFNlYXJjaCh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHNvdXJjZSwgcmVnRXhwKSk7CiAgICAg
fQogCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJl
cGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAgICBWZWN0b3I8U3RyaW5nLCAxNj4gcmVwbGFjZW1l
bnRzOwogCiAgICAgLy8gVGhpcyBpcyBlaXRoZXIgYSBsb29wIChpZiBnbG9iYWwgaXMgc2V0KSBv
ciBhIG9uZS13YXkgKGlmIG5vdCkuCi0gICAgaWYgKGdsb2JhbCAmJiBjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6SlMpIHsKKyAgICBpZiAoZ2xvYmFsICYmIGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6OkpTKSB7CiAgICAgICAgIC8vIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEgZm9y
IHBhdHRlcm4gYXJncywgKyAyIGZvciBtYXRjaCBzdGFydCBhbmQgc3RyaW5nCiAgICAgICAgIGlu
dCBhcmdDb3VudCA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEgKyAyOwogICAgICAgICBp
ZiAoaGFzTmFtZWRDYXB0dXJlcykKQEAgLTYxOSw3ICs2MTksNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogICAgICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUg
IT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXNvdXJjZVJhbmdlcy50cnlDb25zdHJ1Y3RBbmRBcHBlbmQobGFzdEluZGV4LCByZXN1bHQuc3Rh
cnQgLSBsYXN0SW5kZXgpKSkKICAgICAgICAgICAgICAgICAgICAgT1VUX09GX01FTU9SWShnbG9i
YWxPYmplY3QsIHNjb3BlKTsKIApAQCAtNjU3LDcgKzY1Nyw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IEpTVmFsdWUgcmVwbGFjZW1lbnQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmVwbGFjZVZhbHVlLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3MpOworICAgICAgICAgICAgICAg
IEpTVmFsdWUgcmVwbGFjZW1lbnQgPSBjYWxsKGdsb2JhbE9iamVjdCwgcmVwbGFjZVZhbHVlLCBj
YWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJncyk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxh
Y2VtZW50U3RyaW5nID0gcmVwbGFjZW1lbnQudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTcy
NCw3ICs3MjQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKEpTR2xvYmFsT2JqZQogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwogICAgIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCi0gICAg
ICAgIHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBzZWFyY2hWYWx1ZSwg
Y2FsbERhdGEsIENhbGxUeXBlOjpOb25lLCByZXBsYWNlbWVudFN0cmluZywgSlNWYWx1ZSgpKSk7
CisgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBzZWFyY2hW
YWx1ZSwgY2FsbERhdGEsIHJlcGxhY2VtZW50U3RyaW5nLCBKU1ZhbHVlKCkpKTsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBT
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHRoaXNWYWx1ZSwg
UmVnRXhwT2JqZWN0KiBzZWFyY2hWYWx1ZSwgSlNTdHJpbmcqIHJlcGxhY2VTdHJpbmcpCkBAIC03
MzgsNyArNzM4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3Rv
RnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcoSlNHbG9iYWxPYmplY3QKICAgICBTdHJpbmcgcmVwbGFj
ZW1lbnRTdHJpbmcgPSByZXBsYWNlU3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAotICAgICAgICB2bSwgZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBDYWxsVHlw
ZTo6Tm9uZSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJlcGxhY2VTdHJpbmcpKTsKKyAgICAgICAgdm0s
IGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIHNlYXJjaFZhbHVlLCBjYWxsRGF0
YSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJlcGxhY2VTdHJpbmcpKTsKIH0KIAogc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1N0cmluZyog
c3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKQEAgLTc0
NiwxNSArNzQ2LDE0IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmc7
Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKSB7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBs
YWNlVmFsdWUpOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25l
KSB7CiAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvV1RGU3RyaW5n
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZVVzaW5n
UmVnRXhwU2VhcmNoKAotICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHN0cmlu
Zywgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBjYWxsVHlwZSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJl
cGxhY2VWYWx1ZSkpOworICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHN0cmlu
Zywgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCByZXBsYWNlbWVudFN0cmluZywgcmVwbGFjZVZhbHVl
KSk7CiB9CiAKIGVudW0gY2xhc3MgUmVwbGFjZU1vZGUgOiBib29sIHsgU2luZ2xlLCBHbG9iYWwg
fTsKQEAgLTc2OCwxNCArNzY3LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBy
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBTdHJp
bmcgc2VhcmNoU3RyaW5nID0gc2VhcmNoVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxh
Y2VWYWx1ZSwgY2FsbERhdGEpOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwg
cmVwbGFjZVZhbHVlKTsKICAgICBPcHRpb25hbDxDYWNoZWRDYWxsPiBjYWNoZWRDYWxsOwogICAg
IFN0cmluZyByZXBsYWNlU3RyaW5nOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9u
ZSkgeworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAg
ICAgICAgIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAg
fSBlbHNlIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SlMpIHsKKyAgICB9IGVsc2UgaWYgKGNh
bGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6OkpTKSB7CiAgICAgICAgIGNhY2hlZENhbGwu
ZW1wbGFjZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rpb24qPihyZXBs
YWNlVmFsdWUpLCAzKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CiAgICAgICAgIGNhY2hlZENhbGwtPnNldFRoaXMoanNVbmRlZmluZWQoKSk7CkBAIC03OTAs
NyArNzg4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1N0
cmluZ1NlYXJjaChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIFZlY3RvcjxTdHJpbmdSYW5n
ZSwgMTY+IHNvdXJjZVJhbmdlczsKICAgICBWZWN0b3I8U3RyaW5nLCAxNj4gcmVwbGFjZW1lbnRz
OwogICAgIGRvIHsKLSAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Cisg
ICAgICAgIGlmIChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAg
ICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50OwogICAgICAgICAgICAgaWYgKGNhY2hlZENhbGwp
IHsKICAgICAgICAgICAgICAgICBhdXRvKiBzdWJzdHJpbmcgPSBqc1N1YnN0cmluZyh2bSwgc3Ry
aW5nLCBtYXRjaFN0YXJ0LCBzZWFyY2hTdHJpbmdMZW5ndGgpOwpAQCAtODA5LDcgKzgwNyw3IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2go
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChqc051
bWJlcihtYXRjaFN0YXJ0KSk7CiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcp
OwogICAgICAgICAgICAgICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAg
ICAgICAgICAgIHJlcGxhY2VtZW50ID0gY2FsbChnbG9iYWxPYmplY3QsIHJlcGxhY2VWYWx1ZSwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmdzKTsKKyAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudCA9IGNhbGwoZ2xvYmFsT2JqZWN0LCByZXBsYWNlVmFsdWUsIGNhbGxEYXRh
LCBqc1VuZGVmaW5lZCgpLCBhcmdzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgcmVwbGFjZVN0cmlu
ZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CkBAIC04MjAsNyArODE4
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1N0cmluZ1Nl
YXJjaChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgT1VUX09GX01FTU9SWShn
bG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgICAgICBzaXplX3QgbWF0Y2hFbmQgPSBtYXRjaFN0
YXJ0ICsgc2VhcmNoU3RyaW5nTGVuZ3RoOwotICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpCisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpO
b25lKQogICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChyZXBsYWNlU3RyaW5nKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlcGxhY2VtZW50KFN0cmlu
Z0J1aWxkZXI6Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDE2MmU5OWRlZDNlYjAxYjIyNzAyNWE4MjJlMDYzMmIy
MWM4NjFkZWMuLjRiOTZkZDViYzgwM2NlZWVkY2NjYTVmN2ZjMzUzNGIyZjdjYzFhNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTEyNTgsMTQgKzEyNTgsMTMgQEAgdm9p
ZCBWTTo6Y2FsbFByb21pc2VSZWplY3Rpb25DYWxsYmFjayhTdHJvbmc8SlNQcm9taXNlPiYgcHJv
bWlzZSkKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKCp0aGlzKTsKIAot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoKnRoaXMsIGNhbGxiYWNrLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEoKnRoaXMsIGNh
bGxiYWNrKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHBy
b21pc2UuZ2V0KCkpOwogICAgIGFyZ3MuYXBwZW5kKHByb21pc2UtPnJlc3VsdCgqdGhpcykpOwot
ICAgIGNhbGwocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCksIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGpzTnVsbCgpLCBhcmdzKTsKKyAgICBjYWxsKHByb21pc2UtPmdsb2JhbE9iamVjdCgp
LCBjYWxsYmFjaywgY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdzKTsKICAgICBzY29wZS5jbGVhckV4
Y2VwdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBmN2RmYTZiZDQxOTVjZDgzY2UxMTQxMGE3MDZl
YmU3YTEyZDliMDhkLi5mNzAxYzdhZDU4MzAxNDE3MzQ0ZjVkNzJkZDg4MTgxYjRlN2FmZDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKQEAgLTc5LDkgKzc5LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBK
U1ZhbHVlIGFkZGVyRnVuY3Rpb24gPSB3ZWFrTWFwLT5KU09iamVjdDo6Z2V0KGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
YWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKLSAgICBpZiAoYWRkZXJGdW5j
dGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gYWRkZXJGdW5jdGlvbkNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOworICAgIGlmIChhZGRlckZ1
bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7
CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWMKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rp
b25DYWxsVHlwZSwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCB3ZWFrTWFwLCBhcmd1bWVudHMpOwor
ICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhLCB3ZWFrTWFwLCBhcmd1bWVudHMpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh3ZWFrTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGE3MTkwZjk0YWZmZjI3NTlkMjI3MjUw
OTE1YTY2NzFiNTQ1MjZiODcuLmQ4M2E0MGZjMjRiZWYxZGNkZjllZWViMDgyM2YxMWI5ODE3ZTQw
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENv
bnN0cnVjdG9yLmNwcApAQCAtNzksOSArNzksOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwog
ICAgIEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IHdlYWtTZXQtPkpTT2JqZWN0OjpnZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRh
KHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwotICAgIGlmIChhZGRl
ckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CisgICAgaWYgKGFk
ZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTg5LDcgKzg4LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwog
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG5leHRWYWx1ZSk7CiAgICAgICAgIEFTU0VSVCghYXJn
dW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBhZGRl
ckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUsIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwg
d2Vha1NldCwgYXJndW1lbnRzKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGFkZGVyRnVu
Y3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSwgd2Vha1NldCwgYXJndW1lbnRzKTsKICAgICB9
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod2Vha1NldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZGQxZDQ5Y2FiYjEwZjlkNWU5OTdi
ZjhiZWNiMDc1Mzg2ZDdlNmFmOS4uYTcwZDYxMTAyNGRmNTM2NjU2MTQyYzA1MWU1Njc5NGE1NGY1
YTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAt
MjE0NywxMCArMjE0Nyw5IEBAIHN0YXRpYyB2b2lkIGNhbGxXaXRoU3RhY2tTaXplUHJvYmVGdW5j
dGlvbihQcm9iZTo6U3RhdGUqIHN0YXRlKQogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rp
b24sIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmdzKTsK
KyAgICBjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgp
LCBhcmdzKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCmluZGV4IDc5NmM4Njg4YjI3NjRlYjkzZjYzNmQ1MTkzYTNlOTc1M2ZiODE5YjIuLmRiYzhk
ZmJmZDIxYzk5MGZlNTNmNDA1YTNiMDU3MTRkYjM3NzhjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
QEAgLTY1Nyw5ICs2NTcsOCBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVCghZXhjZXB0aW9u
KTsKIAogICAgIGlmIChKU09iamVjdCogc3RhcnRGdW5jdGlvbiA9IG1fc3RhcnRGdW5jdGlvbi5n
ZXQoKSkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBzdGFydEZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0g
ICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBzdGFydEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGpzVW5kZWZpbmVkKCksICp2bS5lbXB0eUxpc3QpOworICAgICAgICBhdXRvIGNhbGxEYXRh
ID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgc3RhcnRGdW5jdGlvbik7CisgICAgICAgIGNhbGwoZ2xv
YmFsT2JqZWN0LCBzdGFydEZ1bmN0aW9uLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgKnZtLmVt
cHR5TGlzdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKaW5kZXggMmZmYjRkYjQ3ODFmMWIwMWY2ZDcyZmE2
MzVlNjlhYmRhZTM5NGQ3OS4uOTU2OGU2NmRlMzRkZGRiMDJkZmNhNGFkYjNjMjFiNjMyOTU2YWI1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcApAQCAtNDMsMTEgKzQzLDEwIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bihKU0dsb2JhbE9iamVjCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBKU09iamVjdCogZnVuY3Rpb24gPSB3YXNtRnVuY3Rpb24tPmZ1bmN0aW9uKCk7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShm
dW5jdGlvbiwgY2FsbERhdGEpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9IENhbGxU
eXBlOjpOb25lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjYWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRl
ZmluZWQoKSwgQXJnTGlzdChjYWxsRnJhbWUpKSkpOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRD
YWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxEYXRhLnR5cGUg
IT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIGpz
VW5kZWZpbmVkKCksIEFyZ0xpc3QoY2FsbEZyYW1lKSkpKTsKIH0KIAogV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb246OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaW1wb3J0
YWJsZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDUzN2VlZTdkYWNjN2Rj
NDQ2ZDk4OTk2ZDg0ZGI1ZDFkYTM0ZjFlYTQuLjg5NzRlNmFhN2FlMmQwNzU1MTY3ODlhOGU0NjFi
YTA3NDYxN2I5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTE4OCw5ICsxODgsOCBA
QCBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hh
ZG93Um9vdCYgcm9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTQzo6SlNPYmplY3Qq
IHJlcGxhY2VtZW50T2JqZWN0ID0gcmVwbGFjZW1lbnRGdW5jdGlvbi50b09iamVjdChsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIEpTQzo6
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IHJlcGxhY2Vt
ZW50T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHJlcGxhY2VtZW50T2JqZWN0
LCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCisg
ICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlbWVudE9iamVjdCk7Cisg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0
OwpAQCAtMjAwLDcgKzE5OSw3IEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omlu
c3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQogICAgIGFyZ0xpc3QuYXBwZW5kKHRv
SlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBtX25hbWVzKSk7CiAgICAgYXJnTGlzdC5hcHBlbmQodG9K
UzxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpnbG9iYWxPYmplY3QsIG1fdmFsdWVzKSk7CiAgICAgQVNTRVJUKCFhcmdMaXN0Lmhh
c092ZXJmbG93ZWQoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCByZXBsYWNlbWVudE9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBn
bG9iYWxPYmplY3QsIGFyZ0xpc3QpOworICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxEYXRhLCBnbG9i
YWxPYmplY3QsIGFyZ0xpc3QpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
IHsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCmluZGV4
IDZiNzc5NDk5NjYwZjUzOWVjNTU4MzQ5N2RjYWE4NTNmN2NhNGMxZWIuLmNlMzBhZjQ1OTUyMzRh
NDYxNGU2NzA0OWEzZjNiMDc4MjQ3ZTVkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTQ4LDEzICs0OCwxMiBAQCBKU1ZhbHVlIEpTQ2Fs
bGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU09iamVjdAogCiAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IENhbGxUeXBlOjpOb25lOwogCiAgICAgaWYgKG1l
dGhvZCAhPSBDYWxsYmFja1R5cGU6Ok9iamVjdCkgewogICAgICAgICBmdW5jdGlvbiA9IGNhbGxi
YWNrOwotICAgICAgICBjYWxsVHlwZSA9IGNhbGxiYWNrLT5tZXRob2RUYWJsZSh2bSktPmdldENh
bGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIGNhbGxEYXRhID0gZ2V0Q2FsbERh
dGEodm0sIGNhbGxiYWNrKTsKICAgICB9Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKSB7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsK
ICAgICAgICAgaWYgKG1ldGhvZCA9PSBDYWxsYmFja1R5cGU6OkZ1bmN0aW9uKSB7CiAgICAgICAg
ICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0
ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwpAQCAtNjgsMjUgKzY3LDI1IEBAIEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEo
dm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5
cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gSlNDOjpFeGNlcHRp
b246OmNyZWF0ZSh2bSwgY3JlYXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NF
UlQoIWZ1bmN0aW9uLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
OjpOb25lKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2xvYmFsT2JqZWN0
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAvLyBXZSB3aWxsIGZhaWwgdG8gZ2V0IHRo
ZSBjb250ZXh0IGlmIHRoZSBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZC4KICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAKLSAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1
bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oY29udGV4dCwgY2FsbERhdGEpOwogCiAgICAgcmV0
dXJuZWRFeGNlcHRpb24gPSBudWxscHRyOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNFeGVjU3Rh
dGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNFeGVjU3RhdGU6OnBy
b2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3Ro
ZXIsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlv
bik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb250
ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggODE2MjRlMzdlYzlhZDE5NWI1ZjhjNDZhYjNjNjNm
YzJiYjZlY2JkMS4uMDMwZTgwNTVhNmJiMDdlY2QwOTBjYmE2YTFkNmRkOGIxNWMzZDIyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwCkBAIC0xMTcsMTcgKzExNywxNiBAQCBSZWZQdHI8RWxlbWVudD4gSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjp0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9jdW1lbnQm
CiBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91
c2x5KERvY3VtZW50JiBkb2N1bWVudCwgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bE5hbWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGUgPSBjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNv
bnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpOb25lKSB7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0
RGF0YSh2bSwgY29uc3RydWN0b3IpOworICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25Db25zdHJ1Y3QoJmRvY3VtZW50LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
KTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKCZkb2N1bWVudCwgY29uc3Ry
dWN0RGF0YSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU1ZhbHVlIG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3Qo
JmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1
Y3REYXRhLCBhcmdzKTsKKyAgICBKU1ZhbHVlIG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3QoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbigmZG9jdW1lbnQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCkBAIC0xODYsOSArMTg1LDgg
QEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKIAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0
RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBtX2NvbnN0cnVjdG9yLT5t
ZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEobV9jb25zdHJ1Y3Rvci5nZXQoKSwgY29u
c3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9u
ZSkgeworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIG1fY29u
c3RydWN0b3IuZ2V0KCkpOworICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xOTksOCArMTk3LDggQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotICAg
IEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoY29udGV4dCwgY29uc3Ry
dWN0VHlwZSwgY29uc3RydWN0RGF0YSk7Ci0gICAgSlNWYWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBj
b25zdHJ1Y3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9jb25zdHJ1Y3Rvci5nZXQoKSwgY29uc3Ry
dWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncyk7CisgICAgSlNFeGVjU3RhdGU6Omluc3RydW1l
bnRGdW5jdGlvbihjb250ZXh0LCBjb25zdHJ1Y3REYXRhKTsKKyAgICBKU1ZhbHVlIHJldHVybmVk
RWxlbWVudCA9IGNvbnN0cnVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2NvbnN0cnVjdG9yLmdl
dCgpLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENhbGxGdW5jdGlvbihjb250ZXh0KTsKIAogICAgIG1fY29uc3RydWN0aW9uU3RhY2sucmVt
b3ZlTGFzdCgpOwpAQCAtMjQwLDE4ICsyMzgsMTcgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6Omludm9rZUNhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxsYmEK
IAogICAgIEpTT2JqZWN0KiBqc0VsZW1lbnQgPSBhc09iamVjdCh0b0pTKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgZWxlbWVudCkpOwogCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjay0+bWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxs
VHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBjYWxsYmFj
ayk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhZGRBcmd1bWVudHMobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
YXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5j
dGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6
aW5zdHJ1bWVudEZ1bmN0aW9uKGNvbnRleHQsIGNhbGxEYXRhKTsKIAogICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNFeGVjU3RhdGU6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNFbGVtZW50LCBhcmdz
LCBleGNlcHRpb24pOworICAgIEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IGNhbGxiYWNrLCBjYWxsRGF0YSwganNFbGVtZW50LCBhcmdzLCBleGNlcHRpb24pOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29udGV4dCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcAppbmRleCA0OTAzODUzNjI5M2E1OWRlZTg5Nzg3MjAyYjY2MjVhNTg2MTUwZTkzLi5k
ZjU2MmQwNThiZjE3MzBhYTU1MGVmY2M5ODdiNWY1NDMyMzgzOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBA
IC03NCwxMSArNzQsMTAgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBO
YW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgCiAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fY3Vz
dG9tUmVzb2x2ZXItPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibG9va3VwTmFtZXNwYWNlVVJJIikpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgIGNhbGxU
eXBlID0gbV9jdXN0b21SZXNvbHZlci0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShtX2N1
c3RvbVJlc29sdmVyLmdldCgpLCBjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkgeworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24pOworICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7
CisgICAgICAgIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIG1fY3VzdG9tUmVzb2x2ZXIuZ2V0
KCkpOworICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkg
ewogICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxP
YmplY3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAgICAgICAgICAgICAgICAgY29uc29sZS0+YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgIlhQYXRoTlNS
ZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNwYWNlVVJJIG1ldGhvZC4iX3MpOwog
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtOTMsNyArOTIsNyBAQCBTdHJpbmcgSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHBy
ZWZpeCkKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXR2YWwgPSBKU0V4ZWNT
dGF0ZTo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBtX2N1c3RvbVJlc29sdmVyLmdldCgpLCBhcmdzLCBleGNlcHRpb24pOworICAgIEpTVmFs
dWUgcmV0dmFsID0gSlNFeGVjU3RhdGU6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIGNhbGxEYXRhLCBtX2N1c3RvbVJlc29sdmVyLmdldCgpLCBhcmdzLCBleGNlcHRpb24pOwog
CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBpZiAoZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggOTVh
ZDA2ZTJlZDRjNmJjM2MwYWRjMWY3ZmEyM2Q2ZjUzNDdjYWFmNS4uYzYxY2NmMmRmNGVlOGJiMGEx
YTE2NzUzZWFjODRjYjA3MWVhNWE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgSlNDOjpD
YWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKik7CiAgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmLCBKU0M6OkpTT2Jq
ZWN0Jik7CkBAIC0xMTgsMTAgKzExOCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NQnVpbHRpbgogICAg
IHJldHVybiBjYXN0ZWRUaGlzLT5jYWxsQ29uc3RydWN0b3IoKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsIGNyZWF0ZUpTT2JqZWN0KCpjYXN0ZWRUaGlzKSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkNvbnN0cnVjdFR5cGUgSlNET01CdWlsdGlu
Q29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6
OkNvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
PiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6
Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCiB7CisgICAgQ2FsbERhdGEgY29uc3RydWN0
RGF0YTsKKyAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOYXRp
dmU7CiAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7Ci0gICAg
cmV0dXJuIEpTQzo6Q29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0
YTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAKaW5kZXgg
OGYzZmY0YjgzOTA5MmE2NDk1ZTBhMjhlYTEyMzIxNjllNDkyOWI0Zi4uNmJkZTY1N2RjMDY2NDNh
NzRlN2RiMzJhNGNlMTIwZmVmZTk2NzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwCkBAIC0zMiw5
ICszMiw4IEBAIHZvaWQgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25X
aXRoQ3VycmVudEFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsCiB7CiAgICAgSlNDOjpWTSYgdm0gPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlw
ZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sICZmdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0
YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sICZmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRh
LnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFt
ZS5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTQzLDcgKzQyLDcgQEAgdm9pZCBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvckJhc2U6OmNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKEpTQzo6
SlNHbG9iYWwKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgSlNDOjpjYWxsKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAmZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgJnRoaXNPYmpl
Y3QsIGFyZ3VtZW50cyk7CisgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZnVu
Y3Rpb24sIGNhbGxEYXRhLCAmdGhpc09iamVjdCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBKU0RP
TUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2U6OnZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqIGNlbGws
IEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmgKaW5kZXggMzkzZGNlYjExMWQzZjNiNzI5NmQyNjdmMGRlNmUz
NjVhOTQ1MDc5ZC4uM2Y2ZWE3NTAzZjI1YWUzNzE3Mzk0ZWIyNzc5ODgyMmE0NDgxZTM3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaApAQCAtNDIs
NyArNDIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7Cisg
ICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOwog
CiAgICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
JikgeyB9CkBAIC02OSwxMCArNjksMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5s
aW5lIHZvaWQgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24KICAgICBp
bml0aWFsaXplUHJvcGVydGllcyh2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q29uc3RydWN0VHlwZSBKU0RPTUNvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
Qzo6Q2FsbERhdGEgSlNET01Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShK
U0M6OkpTQ2VsbCopCiB7CisgICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNv
bnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKICAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAgICByZXR1cm4gSlNDOjpD
b25zdHJ1Y3RUeXBlOjpIb3N0OworICAgIHJldHVybiBjb25zdHJ1Y3REYXRhOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNw
cAppbmRleCA0MDAwM2RkYjA2MzZiYzg4MDQ1YzMzYzkwMTE3ZDkzN2UxNzZhMTA0Li4xZDk0YjVk
NWM4YzUzMWU3YWRmNjQ1NzUxMzdlOTVkNDUxZDViM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCkBAIC0zOCwxMCArMzgs
MTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKIH0KIAotQ2FsbFR5cGUgSlNET01Db25zdHJ1Y3RvckJhc2U6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTRE9NQ29uc3RydWN0
b3JCYXNlOjpnZXRDYWxsRGF0YShKU0NlbGwqKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwogICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxUaHJvd1R5cGVFcnJvcjsKLSAgICByZXR1cm4gQ2FsbFR5
cGU6Okhvc3Q7CisgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiBTdHJpbmcgSlNET01Db25zdHJ1
Y3RvckJhc2U6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIEpTQzo6Vk0mKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKaW5kZXggYzUy
OGIwOTg3N2M0NDI5MzBkNDc2NGJjNjJmYTZjMTAzYjEyZTViMC4uMmUwYzVhYzAzMzZlNjFhNDEx
MjMzOGJmMDgzODBjZTAzNzY2YTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHByb3RlY3RlZDoK
IAogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNDOjpWTSYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIEpTQzo6Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDYWxs
RGF0YShKU0M6OkpTQ2VsbCopOwogfTsKIAogaW5saW5lIEpTQzo6U3RydWN0dXJlKiBKU0RPTUNv
bnN0cnVjdG9yQmFzZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaAppbmRleCAzMzBjNTkyYjg1ZmZhOTYzNTNlM2U5MGU5M2JmNDYzN2FhN2Q2
OGI1Li40Y2M1NWVjNmEyN2JkZmIwN2JkMDhkZDAzYWFkNzBhN2MyNjE3MzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgKQEAgLTU0LDEwICs1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc051bGwoKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxE
YXRhJiBjYWxsRGF0YSkKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0M6
OkpTQ2VsbCopCiAgICAgeworICAgICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOworICAgICAg
ICBjYWxsRGF0YS50eXBlID0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwogICAgICAgICBj
YWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAgICAgIHJl
dHVybiBKU0M6OkNhbGxUeXBlOjpIb3N0OworICAgICAgICByZXR1cm4gY2FsbERhdGE7CiAgICAg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4
IDA3M2ZjNzZiNjExYjg3OGZhNmM0NzliOTBlYWE5ZGZjZjc3YjAxNDAuLmIwMzczYTYzZTUxYjRh
NGVkNzczZWU0YjIzYTczYjkzMWE1M2ExYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTIwNCw5ICsyMDQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0l0ZXJhdG9yPiBKU0M6OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0gY2FsbEZyYW1lLmFyZ3VtZW50KDApOwog
ICAgIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUuYXJndW1lbnQoMSk7CiAKLSAg
ICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsYmFj
aywgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQor
ICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBjYWxsYmFjayk7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpD
YWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjYWxsIGNhbGxiYWNrIl9zKTsKIAogICAg
IGF1dG8gaXRlcmF0b3IgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOwpA
QCAtMjE4LDcgKzIxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTSXRlcmF0b3I+IEpTQzo6SlNW
YWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCYKICAgICAgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBKU0M6OmNhbGwoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFj
aywgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCmluZGV4IDIzNjRhZDliYTE0YTIz
YzJjYjM4YmE1OWRjNDAzNzRlZjA4YjBhYWQuLmYzZWJiYWQ3MzllM2QxMDNmNDMwMTNhNWEzYmQy
ZDY1M2ZhNGI1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
TWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtl
LmNwcApAQCAtNTMsMTMgKzUzLDEyIEBAIHZvaWQgY2xlYXJCYWNraW5nTWFwKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGJhCiAgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIGZ1bmN0
aW9uID0gYmFja2luZ01hcC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmNsZWFyKTsKIAotICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxs
VHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYg
KGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBK
U0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9i
YWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nTWFwLCBhcmd1
bWVudHMpOworICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxEYXRhLCAmYmFja2luZ01hcCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBzZXRUb0JhY2tpbmdN
YXAoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVj
dCYgYmFja2luZ01hcCwgSlNDOjpKU1ZhbHVlIGtleSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQpAQCAt
NjcsMTUgKzY2LDE0IEBAIHZvaWQgc2V0VG9CYWNraW5nTWFwKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGJhCiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIGZ1bmN0aW9uID0gYmFj
a2luZ01hcC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7
CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6
OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0
YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwogICAgIGFyZ3Vt
ZW50cy5hcHBlbmQodmFsdWUpOwotICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgJmJhY2tpbmdNYXAsIGFyZ3VtZW50cyk7Cisg
ICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZi
YWNraW5nTWFwLCBhcmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEF0dHJpYnV0
ZUdldHRlclRvQmFja2luZ01hcChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTT2JqZWN0JiBiYWNraW5nTWFwLCBjb25zdCBKU0M6OklkZW50aWZpZXImIGF0
dHJpYnV0ZU5hbWUpCkBAIC04NywxNiArODUsMTUgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGdW5j
dGlvbkNhbGxUb0JhY2tpbmdNYXAoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE8K
IHsKICAgICBhdXRvIGZ1bmN0aW9uID0gYmFja2luZ01hcC5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uTmFtZSk7CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1
dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwg
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6
Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNh
bGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwog
CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgZm9yIChzaXpl
X3QgY3B0ciA9IDA7IGNwdHIgPCBjYWxsRnJhbWUuYXJndW1lbnRDb3VudCgpOyArK2NwdHIpCiAg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KGNwdHIp
KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwotICAgIHJldHVybiBK
U0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsICZiYWNraW5nTWFwLCBhcmd1bWVudHMpOworICAgIHJldHVybiBKU0M6OmNhbGwoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgJmJhY2tpbmdNYXAsIGFyZ3VtZW50
cyk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBmb3J3YXJkRm9yRWFjaENhbGxUb0JhY2tpbmdNYXAoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwg
SlNDOjpKU09iamVjdCYgbWFwTGlrZSkKQEAgLTEwNywxNiArMTA0LDE1IEBAIEpTQzo6SlNWYWx1
ZSBmb3J3YXJkRm9yRWFjaENhbGxUb0JhY2tpbmdNYXAoSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNDCiAgICAgYXV0byogZnVuY3Rpb24gPSBnbG9iYWxPYmplY3QuYnVpbHRpbklu
dGVybmFsRnVuY3Rpb25zKCkuanNET01CaW5kaW5nSW50ZXJuYWxzKCkubV9mb3JFYWNoV3JhcHBl
ckZ1bmN0aW9uLmdldCgpOwogICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBKU0M6OkNhbGxE
YXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGdsb2Jh
bE9iamVjdC52bSgpLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxs
RGF0YShnbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50
eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCgmcmVzdWx0LnNlY29u
ZC5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBjYWxsRnJhbWUuYXJn
dW1lbnRDb3VudCgpOyArK2NwdHIpCiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1l
LnVuY2hlY2tlZEFyZ3VtZW50KGNwdHIpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOwotICAgIHJldHVybiBKU0M6OmNhbGwoJmdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgJm1hcExpa2UsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIEpT
Qzo6Y2FsbCgmZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZtYXBMaWtlLCBhcmd1
bWVudHMpOwogfQogCiB2b2lkIERPTU1hcEFkYXB0ZXI6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggYjAzY2Ex
ZGY2Y2U1ZTQ2MjU4NmVhNzg0YmZmOTczZTg2NGU1NDJhNi4uZjM0ODRmNjM2MjYxNDU3MmNkNzk1
MjAyY2MwZGFkY2RlYzhjZGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOwotICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6
OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRh
IGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKTsKIAogICAgIC8vIFVzdWFsbHkgZGVmaW5l
ZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KICAgICB2b2lkIGluaXRpYWxpemVQcm9w
ZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsgfQpAQCAtNzAsMTAgKzcwLDEy
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSB2b2lkIEpTRE9NTmFtZWRDb25z
dHJ1Y3RvcjxKU0NsYXNzPjo6ZmluaXNoQ3JlCiAgICAgaW5pdGlhbGl6ZVByb3BlcnRpZXModm0s
IGdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBK
U0M6OkNvbnN0cnVjdFR5cGUgSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25z
dHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q2FsbERhdGEgSlNET01O
YW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKikK
IHsKKyAgICBKU0M6OkNhbGxEYXRhIGNvbnN0cnVjdERhdGE7CisgICAgY29uc3RydWN0RGF0YS50
eXBlID0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwogICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OwotICAgIHJldHVybiBKU0M6OkNvbnN0cnVjdFR5cGU6
Okhvc3Q7CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmluZGV4
IDcwM2YzN2YzMmVlYjMwY2FjMWQ3ZDY1MmRhZjg2MGEyOWM2NWQyNGMuLmU4NWQ3NWJiNTc3Y2Vi
MGYyZDliMWEyMDIzOTRhMGQ4Y2U2NWYzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmNwcApAQCAtNjcsMTAgKzY3LDkgQEAgdm9pZCBET01Qcm9taXNlOjp3
aGVuUHJvbWlzZUlzU2V0dGxlZChKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTT2IKICAgICBhcmd1bWVudHMuYXBwZW5kKGhhbmRsZXIpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQoaGFuZGxlcik7CiAKLSAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCB0aGVuRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgY2FsbCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21p
c2UsIGFyZ3VtZW50cyk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0s
IHRoZW5GdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0
YTo6VHlwZTo6Tm9uZSk7CisgICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0
aW9uLCBjYWxsRGF0YSwgcHJvbWlzZSwgYXJndW1lbnRzKTsKIAogICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKaW5k
ZXggZjQ3MDBmOWNlMTE1ZDNhODRkYWE3YjhmNjdiZTQ3OGY4ZGRlZjc4MC4uMjg2YjRkOGE4Yjk3
YjYwMjkzMDNhZmI2NjQxMGE0Y2QzYzQyZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApAQCAtMjI4LDE1ICsyMjgsMTQg
QEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9y
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBpZiAoY2F1c2UgPT0gUmVqZWN0ZWRQcm9t
aXNlV2l0aFR5cGVFcnJvckNhdXNlOjpOYXRpdmVHZXR0ZXIpCiAgICAgICAgIHJlamVjdGlvblZh
bHVlLT5zZXROYXRpdmVHZXR0ZXJUeXBlRXJyb3IoKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCksIHJlamVjdEZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpLCByZWplY3RGdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5
cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVqZWN0aW9uVmFsdWUpOwogICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIHJlamVjdEZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1lbnRzKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZWplY3RGdW5jdGlv
biwgY2FsbERhdGEsIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1lbnRzKSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNDOjpKU1ZhbHVlIHBhcnNlQXNKU09OKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVNldExpa2UuY3BwCmluZGV4IDQ2MzkyZDYxYTZjYmNhMWIwNTEwODQ2
NDljY2I0ZThhZmJjZmUwZDkuLjFhMmJjMDE0ODAzZjM3NjhlOTI4YjQ4OTZmNjhlODc1MDE2MzAw
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU2V0TGlrZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TZXRMaWtlLmNwcApAQCAt
NjAsMTEgKzYwLDEwIEBAIHZvaWQgY2xlYXJCYWNraW5nU2V0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGJhCiAgICAgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uID0gYmFja2luZ1NldC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmNsZWFyKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpOwog
Ci0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAh
PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKLSAgICBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZiYWNraW5nU2V0LCBhcmd1bWVudHMpOworICAgIEpT
Qzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAmYmFja2lu
Z1NldCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBhZGRUb0JhY2tpbmdTZXQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCYgYmFja2luZ1NldCwg
SlNDOjpKU1ZhbHVlIGl0ZW0pCkBAIC03MywxMiArNzIsMTEgQEAgdm9pZCBhZGRUb0JhY2tpbmdT
ZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVj
dCYgYmEKICAgICBKU0M6OkpTVmFsdWUgZnVuY3Rpb24gPSBiYWNraW5nU2V0LmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKICAgICBBU1NFUlQoIWZ1bmN0
aW9uLmlzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBK
U0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNh
bGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7Cisg
ICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBB
U1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5k
KGl0ZW0pOwotICAgIEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgJmJhY2tpbmdTZXQsIGFyZ3VtZW50cyk7CisgICAgSlNDOjpjYWxs
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5nU2V0LCBh
cmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEF0dHJpYnV0ZUdldHRlclRvQmFj
a2luZ1NldChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpT
T2JqZWN0JiBiYWNraW5nU2V0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGF0dHJpYnV0ZU5hbWUp
CkBAIC05MSwxNCArODksMTMgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGdW5jdGlvbkNhbGxUb0Jh
Y2tpbmdTZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE8KICAgICBKU0M6OkpT
VmFsdWUgZnVuY3Rpb24gPSBiYWNraW5nU2V0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25OYW1lKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpOwogCi0gICAg
SlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uLCBjYWxsRGF0
YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIGF1
dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwg
ZnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5
cGU6Ok5vbmUpOwogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsg
KytjcHRyKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1
bWVudChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICByZXR1cm4gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCAmYmFja2luZ1NldCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gSlNDOjpj
YWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZiYWNraW5nU2V0
LCBhcmd1bWVudHMpOwogfQogCiBKU0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNr
aW5nU2V0KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBj
YWxsRnJhbWUsIEpTQzo6SlNPYmplY3QmIHNldExpa2UpCkBAIC0xMDksMTYgKzEwNiwxNSBAQCBK
U0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNraW5nU2V0KEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTQwogICAgIGF1dG8qIGZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0
LmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmpzRE9NQmluZGluZ0ludGVybmFscygpLm1fZm9y
RWFjaFdyYXBwZXJGdW5jdGlvbi5nZXQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogCi0gICAg
SlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YShnbG9iYWxPYmplY3Qudm0oKSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxs
RGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uKTsKKyAg
ICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAog
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5h
cHBlbmQoJnJlc3VsdC5zZWNvbmQuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBj
cHRyIDwgY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsgKytjcHRyKQogICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVudChjcHRyKSk7CiAgICAgQVNTRVJU
KCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gSlNDOjpjYWxsKCZnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZzZXRMaWtlLCBhcmd1bWVu
dHMpOworICAgIHJldHVybiBKU0M6OmNhbGwoJmdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxE
YXRhLCAmc2V0TGlrZSwgYXJndW1lbnRzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4IDFiYWJjOWI4ZjRhZDFkNzk4OTY0MTVh
MWE3NTdmOGM0N2NlZDYyNGUuLmRjYTg0YTVhM2RiYzViMDM4YjE3M2ViM2FhMDAyYzU0ZDQxZTFi
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAK
QEAgLTc1LDEwICs3NSw4IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxs
RGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7Ci0KLSAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGpzRnVuY3Rp
b24pOworICAgIGlmIChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAg
ICAgICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAg
ICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOwpAQCAt
OTcsMTAgKzk1LDEwIEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0s
IHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9i
amVjdCk7CiAKLSAgICAgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgICAgIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxE
YXRhKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChnbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4Y2VwdGlvbik7CisgICAgICAgIEpT
VmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGdsb2JhbE9iamVj
dCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBqc0Z1bmN0aW9uLCBjYWxsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOGNk
YjhmNzlmNzVkM2ZkZTQ0OWQzOTc2NTMzMWUyNjdiZGMwZWFjYi4uNDQ4YzNiYjMwNDQyY2U0MDMw
ZDNlOGVkODI2NTY0Y2I0MGFkODhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMzQsMTEgKzEzNCwxMCBAQCB2b2lkIEpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dAogCiAgICAgSlNWYWx1ZSBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlv
bjsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNh
bGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24pOwogCiAgICAgLy8g
SWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiBhbmQgdGhpcyBpcyBhbiBF
dmVudExpc3RlbmVyLCBzZWUgaWYgaXQgaW1wbGVtZW50cyBjYWxsYmFjayBpbnRlcmZhY2UuCi0g
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgaWYgKGNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKG1faXNBdHRyaWJ1dGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1MCw4ICsxNDksOCBAQCB2b2lkIEpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dAogICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGV4Y2VwdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEp
OwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgY2Fs
bERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgaGFuZGxlRXZlbnRGdW5jdGlvbik7CisgICAgICAgIGlm
IChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBl
dmVudC50YXJnZXQoKS0+dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpOwogICAgICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGNyZWF0ZVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCAiJ2hhbmRsZUV2ZW50JyBwcm9wZXJ0eSBvZiBldmVudCBs
aXN0ZW5lciBzaG91bGQgYmUgY2FsbGFibGUiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE3MywxMSArMTcyLDExIEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBWTUVudHJ5
U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2Jh
bE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAotICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25DYWxsKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEp
OworICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNhbGxEYXRhKTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxlRXZlbnRG
dW5jdGlvbiA9PSBqc0Z1bmN0aW9uID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGV2ZW50LmN1cnJlbnRUYXJnZXQoKSkgOiBqc0Z1bmN0aW9uOwogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXR2YWwgPSBKU0V4ZWNT
dGF0ZTo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVh
c29uOjpPdGhlciwgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR2YWwgPSBKU0V4ZWNTdGF0
ZTo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29u
OjpPdGhlciwgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywg
ZXhjZXB0aW9uKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0
aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuY3BwCmluZGV4IDkzYTI2MDVhOTU5MTdjZjE2ODhmNTYwYTQ0NzU5ZWM0
NjkwM2QyYTIuLmJlY2E1NjNmNTc5YjE0NmQ3MzIzOGFkODY4MWViZTBmMjQzZjU3YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKQEAgLTQzLDkgKzQzLDkg
QEAgdm9pZCBKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QKICAgICBjb250ZXh0LT5lbnN1cmVSZWplY3RlZFBy
b21pc2VUcmFja2VyKCkucHJvY2Vzc1F1ZXVlU29vbigpOwogfQogCi1KU0M6OkpTVmFsdWUgZnVu
Y3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQorSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEs
IEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKLSAgICByZXR1cm4gSlNF
eGVjU3RhdGU6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb25PYmplY3QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAg
cmV0dXJuIEpTRXhlY1N0YXRlOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2Jq
ZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiB9CiAK
IEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNl
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
eGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgKaW5k
ZXggMTZiMzM5MzllZDJhZWNhNzhkNmMzMjI0MTc2YTk4OWY4Y2NjODNkMC4uOTljMDBkZTk4MjAw
NTc4M2FhYTIwZTdlMjZkOTIyYjFjMzM1NjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V4ZWNTdGF0ZS5oCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmN1cnJlbnRTdGF0ZSgpOwogICAgIH07CiAgICAgCi0gICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxs
VHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbikKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRl
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1
ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfTsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCkBAIC02NywxMCArNjcsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gZXZhbHVhdGUobGV4aWNhbEdsb2JhbE9iamVjdCwg
c291cmNlLCB0aGlzVmFsdWUsIHVudXNlZCk7CiAgICAgfTsKIAotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0
YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4m
IHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0
YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNDOjpwcm9maWxlZENh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVhc29uLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgZnVu
Y3Rpb25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFz
b24gcmVhc29uLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKQEAg
LTExOCw4ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJik7Ci0gICAg
c3RhdGljIHZvaWQgaW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBKU0M6OkNvbnN0cnVjdFR5cGUsIGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYpOwor
ICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEpTRXhl
Y1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCkBAIC0xNDks
OCArMTQ4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnNldEN1cnJl
bnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlLCBUeXBlIGpzVHlwZSwgdHlwZW5hbWUgRGF0YVR5cGU+IHN0YXRpYyB2b2lkIGlu
c3RydW1lbnRGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlLCBj
b25zdCBEYXRhVHlwZSYpOwotCiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9wcmV2aW91c1N0
YXRlOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIG1fbG9jazsKIApAQCAtMTgyLDcgKzE3OSw3IEBA
IHByaXZhdGU6CiAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgbV9jdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjazsKIH07CiAKLUpTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKTsKK0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVk
RXhjZXB0aW9uKTsKIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNzY3NDc3NzU3ODM1
ZWFlZjg0ZTBmOGJhOTk1YmYxOTliMWQxYzQ0ZS4uM2E2MjAxMGJhYThmNDEzMTFiMjc5NDIzNjIz
MzEzNjgxMjMzOGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
eGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oCkBAIC0zMiw4ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBqc1R5cGUsIGNs
YXNzIERhdGFUeXBlPgotaW5saW5lIHZvaWQgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlv
bkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgY2FsbFR5cGUs
IGNvbnN0IERhdGFUeXBlJiBjYWxsRGF0YSkKK2lubGluZSB2b2lkIEpTRXhlY1N0YXRlOjppbnN0
cnVtZW50RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQ2Fs
bERhdGEmIGNhbGxEYXRhKQogewogICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0
aW1lbGluZUFnZW50VHJhY2tpbmcoY29udGV4dCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQxLDcg
KzQwLDcgQEAgaW5saW5lIHZvaWQgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBTdHJpbmcgcmVzb3VyY2VOYW1l
OwogICAgIGludCBsaW5lTnVtYmVyID0gMTsKICAgICBpbnQgY29sdW1uTnVtYmVyID0gMTsKLSAg
ICBpZiAoY2FsbFR5cGUgPT0ganNUeXBlKSB7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6OkpTKSB7CiAgICAgICAgIHJlc291cmNlTmFtZSA9IGNhbGxEYXRhLmpzLmZ1
bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlVVJMKCk7CiAgICAgICAgIGxpbmVOdW1iZXIgPSBjYWxs
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmZpcnN0TGluZSgpOwogICAgICAgICBjb2x1bW5O
dW1iZXIgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCk7CkBA
IC01MCwxNCArNDksNCBAQCBpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0
aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihjb250ZXh0LCByZXNvdXJjZU5hbWUsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLWlubGluZSB2b2lkIEpTRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpT
Qzo6Q2FsbFR5cGUgdHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgZGF0YSkKLXsKLSAgICBpbnN0
cnVtZW50RnVuY3Rpb25JbnRlcm5hbDxKU0M6OkNhbGxUeXBlLCBKU0M6OkNhbGxUeXBlOjpKUywg
SlNDOjpDYWxsRGF0YT4oY29udGV4dCwgdHlwZSwgZGF0YSk7Ci19Ci0KLWlubGluZSB2b2lkIEpT
RXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgSlNDOjpDb25zdHJ1Y3RUeXBlIHR5cGUsIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0RGF0YSYgZGF0YSkKLXsKLSAgICBpbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbDxKU0M6OkNv
bnN0cnVjdFR5cGUsIEpTQzo6Q29uc3RydWN0VHlwZTo6SlMsIEpTQzo6Q29uc3RydWN0RGF0YT4o
Y29udGV4dCwgdHlwZSwgZGF0YSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAz
N2M1ZTIzZjQwZjA0MmQ0OGZiMjdmMTYxMmQ2YjUzOTAwYjM2NDU4Li5kOWNlNWRiODgzYTQxODg5
N2I5MjNiMTQ2MTE3ZmIzNTY3NzhmN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC00MywxNCArNDMsMTMgQEAgSlNDOjpKU1Zh
bHVlIEpTTmF2aWdhdG9yOjpnZXRVc2VyTWVkaWEoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwKICAgICBhdXRvKiBmdW5jdGlvbiA9IGdsb2JhbE9iamVjdCgpLT5idWls
dGluSW50ZXJuYWxGdW5jdGlvbnMoKS5qc0RPTUJpbmRpbmdJbnRlcm5hbHMoKS5tX2dldFVzZXJN
ZWRpYVNoaW1GdW5jdGlvbi5nZXQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogCi0gICAgSlND
OjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpn
ZXRDYWxsRGF0YShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGZ1bmN0aW9uLCBjYWxsRGF0YSk7
Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgZnVu
Y3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5cGU6
Ok5vbmUpOwogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGZv
ciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKTsgKytj
cHRyKQogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVu
dChjcHRyKSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBK
U0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXMsIGFyZ3VtZW50cyk7CisgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIEpTQzo6
anNVbmRlZmluZWQoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKaW5kZXggZGRjZjI4NWE2ZTU4
YjczMjUyMTZiM2Q5NzI5MDE2OTRiY2M1OTMyYi4uMDY0ODM3ODE2OTAzNTZkMjc0NTllMzY3ZmE1
YmFiYTc2ZTMwZWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCkBAIC0xNTMsMzQgKzE1MywzNSBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUGx1Z2luKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZQogICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKGNhbGxGcmFt
ZS0+YXJndW1lbnQoaSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRMaXN0Lmhhc092ZXJmbG93ZWQo
KSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIHNjcmlwdE9iamVjdCwgY2FsbERh
dGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7CisgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIHNjcmlwdE9i
amVjdCk7CisgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2
ZSk7CiAKICAgICAvLyBDYWxsIHRoZSBvYmplY3QuCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjcmlwdE9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY3JpcHRPYmplY3QsIGNhbGxEYXRhLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLCBhcmd1bWVudExpc3QpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUgcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxE
YXRhKEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRh
IHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiBlbGVtZW50KQog
eworICAgIENhbGxEYXRhIGNhbGxEYXRhOworCiAgICAgLy8gRmlyc3QsIGFzayB0aGUgcGx1Zy1p
biB2aWV3IGJhc2UgZm9yIGl0cyBydW50aW1lIG9iamVjdC4KICAgICBpZiAoSlNPYmplY3QqIHNj
cmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5WaWV3QmFzZShlbGVtZW50
KSkgewotICAgICAgICBDYWxsRGF0YSBzY3JpcHRPYmplY3RDYWxsRGF0YTsKLSAgICAgICAgCiAg
ICAgICAgIFZNJiB2bSA9IHNjcmlwdE9iamVjdC0+dm0oKTsKLSAgICAgICAgaWYgKHNjcmlwdE9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzY3JpcHRPYmplY3QsIHNjcmlwdE9i
amVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgIHJldHVybiBDYWxs
VHlwZTo6Tm9uZTsKLQotICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUGx1
Z2luOwotICAgICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CisgICAgICAgIGF1dG8gc2NyaXB0
T2JqZWN0Q2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgc2NyaXB0T2JqZWN0KTsKKyAgICAgICAg
aWYgKHNjcmlwdE9iamVjdENhbGxEYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgICAgIGNhbGxEYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOworICAg
ICAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFBsdWdpbjsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9IHBsdWdpbkluc3Rh
bmNlKGVsZW1lbnQtPndyYXBwZWQoKSk7CisgICAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5j
ZS0+c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGNhbGxEYXRh
LnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOworICAgICAgICAgICAgY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY2FsbFBsdWdpbjsKKyAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBJ
bnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShlbGVtZW50LT53cmFwcGVkKCkpOwot
ICAgIGlmICghaW5zdGFuY2UgfHwgIWluc3RhbmNlLT5zdXBwb3J0c0ludm9rZURlZmF1bHRNZXRo
b2QoKSkKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpOb25lOwotICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNhbGxQbHVnaW47Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworCisg
ICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
CmluZGV4IDhkNWIyOGRjMzE1YzRkYTkwYjk2NGQ0MzJhNDE1Y2JhYjQyYjYxYzQuLjhkODUwNWUy
YjI2NDQ3ZTBiZjQwNDQ3YjQ0OTc0ZTI4NmE3NTg4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC0zOSw2ICsz
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdChKU0hUTUxFbGVtZW50KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgcGx1Z2lu
RWxlbWVudEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9v
bCYgcHV0UmVzdWx0KTsKLSAgICBKU0M6OkNhbGxUeXBlIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRD
YWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOworICAgIEpTQzo6Q2FsbERh
dGEgcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW0uY3BwCmluZGV4IGU0YzI1MDRkY2U3ZWJlN2I4MjZjNWQ2ZjNhMDFlNjM4ZDAzNWMz
YjcuLjU3ZWViNTcyNTVkMTBlM2JlMTJkOWMyYzMwMmFkMDk1ZmY4ZGVkZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTQ1LDE1ICs0NSwx
NCBAQCBSZWY8UmVhZGFibGVTdHJlYW0+IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iagogCiAgICAgYXV0byogY29uc3RydWN0b3IgPSBK
U0M6OmFzT2JqZWN0KGdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVu
dERhdGEuYnVpbHRpbk5hbWVzKCkuUmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7CiAKLSAg
ICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShj
b25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0g
Q29uc3RydWN0VHlwZTo6Tm9uZSk7CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgY29uc3RydWN0b3IpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUg
IT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKICAgICBhcmdzLmFwcGVuZChzb3VyY2UgPyB0b0pTTmV3bHlDcmVhdGVkKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6
OmpzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0g
ICAgYXV0byBuZXdSZWFkYWJsZVN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVh
bSo+KHZtLCBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3Is
IGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKKyAgICBhdXRvIG5ld1JlYWRh
YmxlU3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4odm0sIEpTQzo6Y29u
c3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwg
YXJncykpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICByZXR1cm4gY3Jl
YXRlKGdsb2JhbE9iamVjdCwgKm5ld1JlYWRhYmxlU3RyZWFtKTsKQEAgLTY0LDEwICs2Myw5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAg
ICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENh
bGxEYXRhKHZtLCBqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9
IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwotICAgIGF1dG8gcmVzdWx0ID0gY2FsbCgmbGV4aWNhbEds
b2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFy
Z3VtZW50cyk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGpzRnVu
Y3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5cGU6
Ok5vbmUpOworICAgIGF1dG8gcmVzdWx0ID0gY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwganNG
dW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjAsMTUgKzExOCwx
NCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpsb2NrKCkKIAogICAgIGF1dG8qIGNvbnN0cnVjdG9y
ID0gSlNDOjphc09iamVjdChtX2dsb2JhbE9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLlJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlclBy
aXZhdGVOYW1lKCkpKTsKIAotICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUodm0p
LT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKTsKLSAgICBBU1NF
UlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICBhdXRvIGNvbnN0
cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7CisgICAgQVNTRVJU
KGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHJlYWRhYmxlU3RyZWFtKCkp
OwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNDOjpjb25zdHJ1
Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25z
dHJ1Y3REYXRhLCBhcmdzKTsKKyAgICBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKaW5kZXggMDFkNTE1
MTRiNGYzZjg2Y2UyNmQ4M2I1NDJjMWZkZjc5ZTMzODM3MC4uZDk5YmU4OWZlNTU4YzdhNGFjNWY3
ZjQyMzIxYWJlZDU0ZjFjZjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTQz
LDkgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIEpTQzo6SlNW
YWx1ZSByZWFkYWJsZVN0cmVhbUNhbGxGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmd1bWVudHMpCiB7Ci0gICAgSlNDOjpDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICByZXR1cm4g
Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2Fs
bERhdGEobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBqc0Z1bmN0aW9uKTsKKyAgICByZXR1cm4g
Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1
ZSwgYXJndW1lbnRzKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXI6Omludm9rZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkpTT2JqZWN0JiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlIHBhcmFtZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCmluZGV4IDhlNGM3YjM4MTI0NGU3NzZiZGQ1ODM0YWU0MTkzNmQ3ZGNjNjIy
OGYuLjU2N2EwMGVjODRiN2VhYjU4ZDFmNmU5Y2Y3MjI5YjUwMGIyNDIzZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtOTUsOSArOTUs
OCBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBtX2Z1
bmN0aW9uLmdldCgpLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQorICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgbV9mdW5jdGlvbi5nZXQo
KSk7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0g
Z2xvYmFsT2JqZWN0OwpAQCAtMTEyLDEwICsxMTEsMTAgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246
OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1YKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25DYWxsKCZjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgIEpTRXhlY1N0
YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJmNvbnRleHQsIGNhbGxEYXRhKTsKIAogICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVk
Q2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIG1f
ZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMs
IGV4Y2VwdGlvbik7CisgICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIG1fZnVuY3Rpb24uZ2V0KCksIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cywgZXhjZXB0aW9uKTsKIAogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZjb250ZXh0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzYTQ4MDIy
OGQyNGJhZTlkOWU4MDlhNjVjZjJmOGE5NDFiOWJlYjI2Li4xMTc4OWE5NjlmY2Y1ZGJjODA5NDY4
NWYxNTdlMzM5ZGNjODQxYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjY1LDE1ICs2NjUsMTQgQEAgVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXQKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTYyCi0gICAgICAgIC8vIEdldHRpbmcgQ2FsbERh
dGEvQ2FsbFR5cGUgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwgaW50byBKUy4KLSAgICAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEod29ybGQudm0oKSwgZnVuY3Rpb25PYmplY3QsIGNhbGxEYXRhKTsKLSAgICAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIC8vIEdldHRpbmcgQ2FsbERh
dGEgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHRvIGNhbGwgaW50byBKUy4KKyAgICAgICAgYXV0byBj
YWxsRGF0YSA9IGdldENhbGxEYXRhKHdvcmxkLnZtKCksIGZ1bmN0aW9uT2JqZWN0KTsKKyAgICAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAg
ICAgIG9wdGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIHByZXBhcmUgSmF2YVNjcmlwdCBh
c3luYyBmdW5jdGlvbiB0byBiZSBjYWxsZWQiX3MgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENh
bGwoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbk9i
amVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmcHJveHksIG1hcmtlZEFyZ3VtZW50cywgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2Zp
bGVkQ2FsbCgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0
aW9uT2JqZWN0LCBjYWxsRGF0YSwgJnByb3h5LCBtYXJrZWRBcmd1bWVudHMsIGV2YWx1YXRpb25F
eGNlcHRpb24pOwogICAgIH0gd2hpbGUgKGZhbHNlKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CkBAIC03MzIsOSArNzMxLDggQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gYXNPYmplY3QodGhlbkZ1
bmN0aW9uKS0+bWV0aG9kVGFibGUod29ybGQudm0oKSktPmdldENhbGxEYXRhKGFzT2JqZWN0KHRo
ZW5GdW5jdGlvbiksIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEod29ybGQudm0oKSwgdGhlbkZ1
bmN0aW9uKTsKKyAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkg
ewogICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTc3Miw3ICs3NzAsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZAog
ICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbEhhbmRsZXIpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQocmVqZWN0SGFuZGxlcik7CiAKLSAgICBjYWxsKCZnbG9iYWxPYmplY3QsIHRoZW5GdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRzKTsKKyAgICBj
YWxsKCZnbG9iYWxPYmplY3QsIHRoZW5GdW5jdGlvbiwgY2FsbERhdGEsIHJlc3VsdC52YWx1ZSgp
LCBhcmd1bWVudHMpOwogfQogCiBFeHBlY3RlZDx2b2lkLCBFeGNlcHRpb25EZXRhaWxzPiBTY3Jp
cHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3Vt
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCAzNzFkNzhlZjhiNzZhY2VhMTk2OGY2MjQyNWI2NjYxOTM2NDQ3
ZDhjLi42NTRlNzgzZjZhZGExZjNjMjIwYTU4OGVhZDkzMjVjYTU0NjMyZDNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MjcwNCw3ICsyNzA0LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0Q2FsbERhdGEoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6
OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwq
KTtcblxuIik7CiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPEphdmFTY3JpcHRDb3JlL0NhbGxE
YXRhLmg+In0gPSAxOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0
Q2FsbERhdGEifSA9IDE7CiAgICAgfQpAQCAtNTYxOSwxMiArNTYxOSwxMiBAQCBzdWIgR2VuZXJh
dGVQbHVnaW5DYWxsCiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmgiKTsKIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxUeXBlICR7Y2xhc3NO
YW1lfTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpXG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsRGF0YSAke2NsYXNzTmFtZX06OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7
Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcblxuIik7CiAKLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRD
YWxsRGF0YSh0aGlzT2JqZWN0LCBjYWxsRGF0YSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0
KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIlxuIik7CiB9CkBAIC01NjU0LDEwICs1NjU0LDEyIEBAIHN1YiBHZW5lcmF0ZUxl
Z2FjeUNhbGxlckRlZmluaXRpb25zCiAgICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5p
dGlvbigkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXJz
WzBdKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsVHlwZSAke2NsYXNz
TmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSlcbiIpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxEYXRhICR7Y2xhc3NOYW1lfTo6Z2V0Q2FsbERhdGEo
SlNDZWxsKilcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBDYWxsRGF0YSBjYWxsRGF0YTtcbiIpOworICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTtc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjYWxsJHtjbGFzc05hbWV9O1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBDYWxsVHlwZTo6SG9zdDtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gY2FsbERhdGE7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0NTBiODM1
ZDNmZjQwMGZlZmVkZjZiZGQ5ZGJhNTMxMGY2YTAxNDgwLi4xMmI4NjMyMzY2MzQ2OWM5NjRmNTU5
NTk3MTMxZDZiODQxNDIwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjYwOSwxMCArMjYwOSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1Rlc3RPYmooSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CiB9CiAKLUNhbGxUeXBlIEpTVGVzdE9iajo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgSlNUZXN0T2Jq
OjpnZXRDYWxsRGF0YShKU0NlbGwqKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIGNh
bGxEYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwogICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNhbGxKU1Rlc3RPYmo7Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0Owor
ICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IGE2NGQ0ZmI3YTQ1
YTU3ZTM3YzFmMzI2ZmU3ODYyYTNkN2YxNjQzZWUuLmJlNjlmNmNiNTRiZGQzNjU2YzAxNGRmNjYx
OTA1OTAzZmYwMzRmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBKU0M6OkNh
bGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpOworICAgIHN0
YXRpYyBKU0M6OkNhbGxEYXRhIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKik7CiAKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5jcHAKaW5kZXggNzQzMjQ2MDk5YWExYjg3MmViZjQ2MzFhMGZkZTNiOGEzNGRkYjQyMy4u
MDk4MDAwMWQ4MzZiYTZkNGI5OWI1MWYzZTk0N2FiY2E3ZjQzZmMwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBsdWdpbkludGVyZmFjZS5jcHAKQEAgLTE5NiwxMiArMTk2LDEyIEBAIGJvb2wgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGxleGljYWxH
bG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1DYWxsVHlwZSBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEm
IGNhbGxEYXRhKQorQ2FsbERhdGEgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRDYWxsRGF0YShK
U0NlbGwqIGNlbGwpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQbHVn
aW5JbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxE
YXRhKHRoaXNPYmplY3QsIGNhbGxEYXRhKTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3Rv
bUdldENhbGxEYXRhKHRoaXNPYmplY3QpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQbHVn
aW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1
Z2luSW50ZXJmYWNlLmgKaW5kZXggZjk0N2JhODlhYmQ5ODExMzQzYjRkNzNiNTY5ZTc1NWI2MjYx
MmU2Yy4uZWNlZTRhOWJlYjNkNmY2Njg4NWE3NDRjMGNmM2JhMzdhNjYzMWQ4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQbHVnaW5JbnRlcmZhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKLSAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDYWxsRGF0
YShKU0M6OkpTQ2VsbCopOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBhNDE3ZjVjMzhiZGE3
OTRmMTZlZmRhNDI2MjVmMjMwYTQwMDE5YTY4Li4zM2NkNGMwMzljNWUzMjFlNmI5MWVmZmIxODFi
OTQ2ZjNmYTU2MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTE4
OCwxNSArMTg4LDE0IEBAIGJvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5QUCwgTlBPYmplY3QqIG8s
IGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291CiAgICAgICAgIAogICAgICAg
ICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSBvYmotPmltcDsKLSAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09
IENhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlz
dEZyb21WYXJpYW50QXJncyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmdzLCBhcmdDb3VudCwgcm9v
dE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdMaXN0Lmhhc092
ZXJmbG93ZWQoKSk7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBmdW5jdGlvbiwgYXJn
TGlzdCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIGZ1bmN0aW9uLCBhcmdMaXN0KTsKIAogICAgICAg
ICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4K
ICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVz
dWx0ViwgcmVzdWx0KTsKQEAgLTI0MCwxNiArMjM5LDE1IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQ
IG5wcCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlh
bnQqCiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9i
YWxPYmplY3Q7CiAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBvYmotPmltcC0+Z2V0KGxleGlj
YWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxP
YmplY3QsIGktPnN0cmluZygpKSk7Ci0gICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEp
OwotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8g
Y2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworICAgICAgICBpZiAoY2FsbERh
dGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3Mo
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3Qp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAg
ICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOworICAgICAgICBK
U1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxEYXRhLCBvYmotPmltcCwgYXJnTGlzdCk7CiAKICAgICAgICAgLy8gQ29udmVydCBhbmQg
cmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZlcnRW
YWx1ZVRvTlBWYXJpYW50KGxleGljYWxHbG9iYWxPYmplY3QsIHJlc3VsdFYsIHJlc3VsdCk7CkBA
IC01MzEsMTUgKzUyOSwxNCBAQCBib29sIF9OUE5fQ29uc3RydWN0KE5QUCwgTlBPYmplY3QqIG8s
IGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291bnQsCiAgICAgICAgIAogICAg
ICAgICAvLyBDYWxsIHRoZSBjb25zdHJ1Y3RvciBvYmplY3QuCiAgICAgICAgIEpTVmFsdWUgY29u
c3RydWN0b3IgPSBvYmotPmltcDsKLSAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRh
OwotICAgICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRh
KHZtLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7Ci0gICAgICAgIGlmIChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8gY29uc3RydWN0RGF0YSA9
IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgaWYgKGNvbnN0cnVj
dERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAg
ICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJncywg
YXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
YXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6
OmNvbnN0cnVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlw
ZSwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpT
Qzo6Y29uc3RydWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RE
YXRhLCBhcmdMaXN0KTsKICAgICAgICAgCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0
aGUgcmVzdWx0LgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXN1bHRWLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGU5MDYyMjFjYTk4YzNkYWZjNzMzMzBlNTgyYTRkMWY2
NmRiZjg4YjguLmY5Y2VkYzEwMDc3Mjc2OGU1NDIyODhkZDg5MTk2ODA4Y2U4NThjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTU4LDcg
KzU4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogdXNpbmcgSlNDOjpDYWxsRGF0YTsKLXVzaW5nIEpTQzo6Q2FsbFR5cGU7CiB1
c2luZyBKU0M6OklkZW50aWZpZXI7CiB1c2luZyBKU0M6OkpTTG9ja0hvbGRlcjsKIHVzaW5nIEpT
Qzo6SlNPYmplY3Q7CkBAIC0zNDcsOSArMzQ2LDggQEAgLSAoaWQpY2FsbFdlYlNjcmlwdE1ldGhv
ZDooTlNTdHJpbmcgKiluYW1lIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmdzCiAgICAgVU5V
U0VEX1BBUkFNKHNjb3BlKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9p
bXBdLT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
U3RyaW5nKG5hbWUpKSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRh
KHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwpAQCAtMzYwLDcgKzM1OCw3IEBAIC0gKGlkKWNhbGxXZWJTY3JpcHRNZXRob2Q6KE5T
U3RyaW5nICopbmFtZSB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJncwogICAgICAgICByZXR1
cm4gbmlsOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBK
U0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIFtzZWxmIF9pbXBdLCBhcmdMaXN0LCBleGNlcHRpb24pOworICAgIEpTQzo6
SlNWYWx1ZSByZXN1bHQgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgZnVuY3Rpb24sIGNhbGxEYXRhLCBb
c2VsZiBfaW1wXSwgYXJnTGlzdCwgZXhjZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsK
ICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QsIGV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDA2
OWFiZTJlNTU4OGFjNTc0MDdlYmQwN2EyYzZmNWQ2ZDQ1NGY3YjguLmUzYWUyMjZjN2ZmNzNmYjdl
YzFjNTY1MjBlZjc4ZjE2Y2NkMGYyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDYWxs
RGF0YShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCmluZGV4IDZlODc3ZDJlYjdmNDRkMDNhMjhlMTcxMDgzYmQzZDBm
MGJiOTg4OWYuLmU2NTdjMDFjNDJjMTAxNmIxYjYyODg4ZjhkOGQ2ODI0MmRiYjRhMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI4MCwxNCArMjgw
LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJh
Y2tPYmplY3QoSlNHbG9iYWxPYmplY3QqIGxleGljCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCi1DYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiB7CisgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisKICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCk7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0g
dGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRPYmplY3QoKTsKLSAgICBpZiAoIVt0YXJnZXRPYmpl
Y3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9t
V2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pCi0gICAgICAgIHJldHVybiBDYWxsVHlwZTo6Tm9u
ZTsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0
OwotICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKKyAgICBpZiAoW3RhcmdldE9iamVjdCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3Jp
cHQ6d2l0aEFyZ3VtZW50czopXSkgeworICAgICAgICBjYWxsRGF0YS50eXBlID0gQ2FsbERhdGE6
OlR5cGU6Ok5hdGl2ZTsKKyAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbE9i
akNGYWxsYmFja09iamVjdDsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbERhdGE7CiB9CiAKIGJv
b2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IDlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYy
MGU0MWVkYjk4ZWZlMzllZTUuLjgwNTFlNmVjM2M2YzEyOGQyY2VmMDVhNzQ2MzAxZjhjMGRiNGNm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjMzLDE4
ICsyMzMsMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRp
bWVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIFJ1bnRpbWVPYmplY3Q6OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQorQ2FsbERhdGEgUnVudGltZU9iamVj
dDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4o
Y2VsbCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKQotICAgICAgICByZXR1cm4g
Q2FsbFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRo
aXNPYmplY3QtPm1faW5zdGFuY2U7Ci0gICAgaWYgKCFpbnN0YW5jZS0+c3VwcG9ydHNJbnZva2VE
ZWZhdWx0TWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBDYWxsVHlwZTo6Tm9uZTsKLSAgICAKLSAg
ICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUnVudGltZU9iamVjdDsKLSAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7CisgICAgaWYgKHRoaXNPYmplY3QtPm1faW5zdGFuY2UgJiYgdGhp
c09iamVjdC0+bV9pbnN0YW5jZS0+c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkpIHsKKyAg
ICAgICAgY2FsbERhdGEudHlwZSA9IENhbGxEYXRhOjpUeXBlOjpOYXRpdmU7CisgICAgICAgIGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSdW50aW1lT2JqZWN0OworICAgIH0KKworICAg
IHJldHVybiBjYWxsRGF0YTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTI2MSwxOCArMjYwLDE3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQuaXNPYmplY3QoKSA/
IGpzQ2FzdDxKU09iamVjdCo+KHJlc3VsdC5hc0NlbGwoKSkgOiBjb25zdHJ1Y3Rvcik7CiB9CiAK
LUNvbnN0cnVjdFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqIGNl
bGwsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitDYWxsRGF0YSBSdW50aW1lT2JqZWN0
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjb25zdHJ1
Y3REYXRhOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1l
T2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKQotICAgICAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKLSAgICAKLSAgICBSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKLSAgICBpZiAoIWluc3RhbmNlLT5z
dXBwb3J0c0NvbnN0cnVjdCgpKQotICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsK
LSAgICAKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSdW50aW1lQ29u
c3RydWN0b3I7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7CisgICAgaWYgKHRoaXNP
YmplY3QtPm1faW5zdGFuY2UgJiYgdGhpc09iamVjdC0+bV9pbnN0YW5jZS0+c3VwcG9ydHNDb25z
dHJ1Y3QoKSkgeworICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBDYWxsRGF0YTo6VHlwZTo6
TmF0aXZlOworICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSdW50
aW1lQ29uc3RydWN0b3I7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7CiB9CiAK
IHZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgKaW5kZXggM2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJm
MC4uMDQwYTNhMGQ0YzA3MjhiYjk1NGNmYzk3NDc4NTkxZjg0ZWEzYjU0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Ci0gICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAg
c3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOworICAgIHN0YXRpYyBDYWxsRGF0
YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCBiN2UyZjNhYmZjMzc1YTdlNjA0Njc4ZmZmNTZjNjhlZjhmOTFiNDBmLi42OWI0
YmYxYjI3YmE2ZGZkN2E2NzQ1NjI5NTNhODcyMTg1YzZkNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQzNjIsMTQgKzQzNjIsMTMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAgICAgaWYgKCFtZXRo
b2RPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgSlNDOjpDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICAgICAgYXV0byBjYWxsVHlwZSA9IG1ldGhvZE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShtZXRob2RPYmplY3QsIGNhbGxEYXRhKTsKLSAgICAg
ICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8gY2Fs
bERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBtZXRob2RPYmplY3QpOworICAgICAgICBpZiAo
Y2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbm9Bcmd1
bWVudHM7CiAgICAgICAgIEFTU0VSVCghbm9Bcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICAgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXRob2RPYmplY3QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgY29udHJvbGxlck9iamVjdCwgbm9Bcmd1bWVudHMpOworICAgICAgICBK
U0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIG1ldGhvZE9iamVjdCwgY2FsbERhdGEsIGNv
bnRyb2xsZXJPYmplY3QsIG5vQXJndW1lbnRzKTsKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKIAogICAgICAgICBtX2hhdmVTZXRVcENhcHRpb25Db250YWluZXIgPSB0cnVlOwpAQCAt
NzI0MywxMiArNzI0MiwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKIAogICAgICAgICBhdXRvKiBmdW5jdGlvbiA9
IGZ1bmN0aW9uVmFsdWUudG9PYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICBhdXRvIGNhbGxUeXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IEpT
Qzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2Fs
bERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
YXV0byBjb250cm9sbGVyVmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsICZnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOworICAg
ICAgICBhdXRvIGNvbnRyb2xsZXJWYWx1ZSA9IEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKICAgICAgICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgYXV0byogY29udHJvbGxlck9iamVjdCA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4odm0sIGNvbnRyb2xsZXJWYWx1ZSk7
CiAgICAgICAgIGlmICghY29udHJvbGxlck9iamVjdCkKQEAgLTczMjEsMTQgKzczMTksMTMgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRp
b25Nb2RlQ2hhbmdlKCkKIAogICAgICAgICBhdXRvKiBmdW5jdGlvbiA9IGZ1bmN0aW9uVmFsdWUu
dG9PYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwotICAgICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBhdXRv
IGNhbGxUeXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoZnVuY3Rp
b24sIGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5v
bmUpCisgICAgICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlv
bik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5v
bmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBBU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICAgICAgSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBjb250cm9sbGVyT2JqZWN0LCBhcmdMaXN0KTsKKyAgICAgICAg
SlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIGNvbnRy
b2xsZXJPYmplY3QsIGFyZ0xpc3QpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwpA
QCAtNzM2NSwxNCArNzM2MiwxMyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Z2V0Q3VycmVu
dE1lZGlhQ29udHJvbHNTdGF0dXMoKQogCiAgICAgICAgIGF1dG8qIGZ1bmN0aW9uID0gZnVuY3Rp
b25WYWx1ZS50b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
ICAgIGF1dG8gY2FsbFR5cGUgPSBmdW5jdGlvbi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0
YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgZnVuY3Rpb24pOwogICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ0xpc3Q7CiAgICAgICAgIEFTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAg
ICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgaWYgKGNh
bGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIG91dHB1dFZhbHVlID0gSlNDOjpjYWxsKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjb250cm9sbGVy
T2JqZWN0LCBhcmdMaXN0KTsKKyAgICAgICAgYXV0byBvdXRwdXRWYWx1ZSA9IEpTQzo6Y2FsbCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBjb250cm9sbGVyT2JqZWN0
LCBhcmdMaXN0KTsKIAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDYwY2I0ZmVmMzQyOTQxNmJlOWQ4M2IxMGM0MTYxOTYyMGFkYzE5YmUuLjdmMDM1NGY1Yzgz
OWY0NWM1YTJhNmNjNmQ1NzUxZDRkY2Q3YmI0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNDEyLDEyICs0MTIsMTEgQEAgdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jv
b3QmIHJvb3QpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBl
ID0gb3ZlcmxheS0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBj
YWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIG92ZXJsYXkpOworICAgIGlmIChjYWxsRGF0
YS50eXBlID09IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIG92ZXJsYXksIGNhbGxUeXBlLCBjYWxsRGF0
YSwgJmdsb2JhbE9iamVjdCwgYXJnTGlzdCk7CisgICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgb3ZlcmxheSwgY2FsbERhdGEsICZnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOwogICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA1ZDE5MTczMTJjODQ5ZWY1YTVmZWZlMTkxZDMwNWUwNDQyODc0YjU3Li4wMWZjZmQ1ZWQw
MmQzMjgyNjNlOGY3NjJmNzZjYWJhYjU2ZjJiNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0zMzEsNyArMzMxLDYgQEAKICNlbmRpZgogCiB1c2luZyBKU0M6OkNhbGxE
YXRhOwotdXNpbmcgSlNDOjpDYWxsVHlwZTsKIHVzaW5nIEpTQzo6Q29kZUJsb2NrOwogdXNpbmcg
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU7CiB1c2luZyBKU0M6OklkZW50aWZpZXI7CkBAIC00NjUw
LDE2ICs0NjQ5LDE1IEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTCiAgICAgQVNTRVJUKHZhbHVl
LmlzRnVuY3Rpb24odm0pKTsKIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IHZhbHVlLmdldE9i
amVjdCgpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
SlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7CisgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6
Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBK
U0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChidWZmZXIpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQoc3JjQnl0ZU9mZnNldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzcmNMZW5ndGgpOwogICAg
IEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICByZXR1cm4gSlNDOjpj
YWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBK
U0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIEpTQzo6Y2FsbCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBKU0M6OmpzVW5kZWZpbmVkKCks
IGFyZ3VtZW50cyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAwNWQxMjkyOTM5
NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1Li5lM2RlOTFhN2Q1MTgzMTNiNmI2NTMzYmYw
MWIwZTczODJiNjIwZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMjQ3LDE1ICsyNDcsMTYgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2Fz
dDxKU05QT2JqZWN0Kj4ob2JqZWN0KS0+Y2FsbE9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSkpOwogfQogCi1KU0M6OkNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxEYXRhKEpTQzo6SlND
ZWxsKiBjZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSkKK0NhbGxEYXRhIEpTTlBPYmplY3Q6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QgfHwgIXRoaXNPYmplY3QtPm1fbnBPYmplY3Qt
Pl9jbGFzcy0+aW52b2tlRGVmYXVsdCkKLSAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpOb25lOwot
Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbE5QSlNPYmplY3Q7Ci0gICAgcmV0
dXJuIENhbGxUeXBlOjpIb3N0OworICAgIGlmICh0aGlzT2JqZWN0LT5tX25wT2JqZWN0ICYmIHRo
aXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+aW52b2tlRGVmYXVsdCkgeworICAgICAgICBj
YWxsRGF0YS50eXBlID0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICAgICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbE5QSlNPYmplY3Q7CisgICAgfQorICAgIHJldHVybiBjYWxs
RGF0YTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQpAQCAtMjY2LDE1ICsyNjcsMTggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2l0aENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxKU05QT2JqZWN0Kj4oY29uc3RydWN0
b3IpLT5jYWxsQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAotQ29u
c3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK0NhbGxEYXRhIEpTTlBPYmplY3Q6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIENhbGxEYXRhIGNvbnN0cnVjdERhdGE7CisK
ICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
LSAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QgfHwgIXRoaXNPYmplY3QtPm1fbnBPYmpl
Y3QtPl9jbGFzcy0+Y29uc3RydWN0KQotICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9u
ZTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9ucE9iamVjdCAmJiB0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0LT5fY2xhc3MtPmNvbnN0cnVjdCkgeworICAgICAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBD
YWxsRGF0YTo6VHlwZTo6TmF0aXZlOworICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcjsKKyAgICB9CiAKLSAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFdpdGhDb25zdHJ1Y3RvcjsKLSAgICByZXR1
cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAog
Ym9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCBmYTk4NDMyNWMyYzEyMjA1
N2Q4MmYzMDlhOWE2NDMxZjk1YzNhNDI0Li40Y2M4ZjI3N2ZmZDg1MzkwMzFmMTU4MmNkYmQxM2I5
MDFiODFiYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6
OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTsKLSAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKKyAg
ICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCopOworICAgIHN0
YXRpYyBKU0M6OkNhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKTsKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpT
T2JqZWN0LmNwcAppbmRleCBhN2ZiNmI1ZTkyZDY2MTVmYWRhMTg2NDI3MTZmMTEyZWVkYjNiOTk5
Li44ZjZmN2IwMjMxNmIxMDkyOWY0NDNjOWQ0NTY5OWJiYTdiNWE5NDg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcApAQCAtMTA5LDggKzEwOSw3IEBAIGJvb2wgTlBKU09iamVjdDo6aGFzTWV0aG9kKE5QSWRl
bnRpZmllciBtZXRob2ROYW1lKQogICAgIEpTVmFsdWUgdmFsdWUgPSBtX2pzT2JqZWN0LT5nZXQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKGxleGljYWxH
bG9iYWxPYmplY3QsIGlkZW50aWZpZXJSZXApKTsgICAgCiAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKIAotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJldHVybiBnZXRDYWxsRGF0YSh2
bSwgdmFsdWUsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKKyAgICByZXR1cm4gdmFsdWUu
aXNGdW5jdGlvbih2bSk7CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aW52b2tlKE5QSWRlbnRpZmll
ciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1l
bnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpCkBAIC0yNzcsOSArMjc2LDggQEAgYm9vbCBOUEpT
T2JqZWN0Ojpjb25zdHJ1Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFy
Z3VtZW50Q291bnQsIE4KICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1
Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERh
dGEodm0sIG1fanNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdERhdGEpOwotICAgIGlmIChjb25zdHJ1
Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0g
Z2V0Q29uc3RydWN0RGF0YSh2bSwgbV9qc09iamVjdC5nZXQoKSk7CisgICAgaWYgKGNvbnN0cnVj
dERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gQ29udmVydCB0aGUgcGFzc2VkIGluIGFyZ3VtZW50cy4KQEAgLTI4OCw3ICsy
ODYsNyBAQCBib29sIE5QSlNPYmplY3Q6OmNvbnN0cnVjdChjb25zdCBOUFZhcmlhbnQqIGFyZ3Vt
ZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTgogICAgICAgICBhcmd1bWVudExpc3QuYXBw
ZW5kKG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKG1fb2JqZWN0TWFwLT5n
bG9iYWxPYmplY3QoKSwgYXJndW1lbnRzW2ldKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3Vt
ZW50TGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y29u
c3RydWN0KGxleGljYWxHbG9iYWxPYmplY3QsIG1fanNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
Qzo6Y29uc3RydWN0KGxleGljYWxHbG9iYWxPYmplY3QsIG1fanNPYmplY3QuZ2V0KCksIGNvbnN0
cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJu
IHRoZSBuZXcgb2JqZWN0LgogICAgIG1fb2JqZWN0TWFwLT5jb252ZXJ0SlNWYWx1ZVRvTlBWYXJp
YW50KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCAqcmVzdWx0KTsKQEAgLTMwMiw5ICszMDAs
OCBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBmdW5jdGlvbiwgYwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwog
Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7
CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIENvbnZlcnQgdGhlIHBhc3NlZCBpbiBhcmd1bWVudHMu
CkBAIC0zMTMsNyArMzEwLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjppbnZva2UoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgZnVuY3Rpb24sIGMKICAgICAgICAgYXJn
dW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFudFRvSlNWYWx1ZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudHNbaV0pKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
YXJndW1lbnRMaXN0Lmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlND
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IG1fanNPYmplY3QuZ2V0KCksIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
Qzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIG1fanNPYmpl
Y3QuZ2V0KCksIGFyZ3VtZW50TGlzdCk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYTYxNDVlMDJkM2Q2MzVmM2FkNDE0Mjlk
NTczOWQwMzM5ZGM0MjQ2NC4uZDNiZDFlYzJlYmIwZDQ4ZTAzY2MyNDRhNTZhYTc4MDBmZjM3Mjcx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtOTIwLDE2
ICs5MjAsMTUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZSh1aW50
MzJfdCBvYmplY3RJRCwgY29uc3QgSWRlbnRpZmllciYgbWUKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVn
aW5Xb3JsZCgpKTsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQobGV4aWNhbEds
b2JhbE9iamVjdCwgbWV0aG9kTmFtZSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgYXV0byBjYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUg
PSBjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IG9iamVjdCwgYXJnTGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICAK
ICAgICBtYXJzaGFsVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdERhdGEs
IHJlc3VsdExlbmd0aCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKQEAgLTk1NiwxNiAr
OTU1LDE1IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2VEZWZhdWx0
KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gb2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpOwotICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKKyAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEo
dm0sIG9iamVjdCk7CisgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFy
Z0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xp
c3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIG9iamVj
dCwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CkBAIC05OTMsMTYgKzk5MSwxNSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3RydWN0KHVpbnQzMl90IG9iamVjdElELCBkYXRh
X3QgYXJndW1lbnRzRAogCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qg
PSBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwogCi0gICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKG9iamVjdCwgY29u
c3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9u
ZSkKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBvYmplY3Qp
OworICAgIGlmIChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7
CiAgICAgZGVtYXJzaGFsVmFsdWVzKGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50c0RhdGEs
IGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ0xpc3Qu
aGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEs
IGFyZ0xpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBvYmplY3QsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpOwogICAgIAogICAgIG1h
cnNoYWxWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0
TGVuZ3RoKTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggMDIwNTg4OTJkMjEx
OGIyNDU4NmE4YzgxZmRiYzViZTYyMmQxOGFkOS4uOGMyMWIwNmY5NDQ3OGUzZGMyMDlmZmJjOWI5
MTgxYmY2Njk4MjIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblBhY2thZ2UuY3BwCkBAIC0yNTQsMTUgKzI1NCwxNCBAQCBzdGF0aWMgYm9vbCBOUE5f
SW52b2tlKE5QUCBucHAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29u
c3QgTlBWYQogCiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBnbG9iYWxPYmplY3Q7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IG9iai0+
aW1wLT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpCaW5kaW5nczo6aWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpKTsKLSAgICAg
ICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgICAgICBpZiAoY2Fs
bFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKKyAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpT
Qzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MobGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwot
ICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmotPmltcCwgYXJnTGlzdCk7Cisg
ICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOwogCiAgICAgICAgIC8v
IENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAg
ICAgICBKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb05QVmFyaWFudChsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXN1bHRWLCByZXN1bHQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>